51 setErrorString(tr(
"File is already open"));
56 setErrorString(tr(
"Append mode not supported"));
61 if ((mode & (ReadOnly | WriteOnly)) == 0) {
62 setErrorString(tr(
"File access mode not specified"));
67 if ((mode & ReadOnly) && (mode & WriteOnly)) {
68 setErrorString(tr(
"Read and write modes both specified"));
73 if (mode & WriteOnly) {
77 setErrorString(tr(
"Failed to open file for writing"));
88 setErrorString(tr(
"Failed to open bzip2 stream for writing"));
95 setErrorString(QString());
100 if (mode & ReadOnly) {
104 setErrorString(tr(
"Failed to open file for reading"));
115 setErrorString(tr(
"Failed to open bzip2 stream for reading"));
124 setErrorString(QString());
129 setErrorString(tr(
"Internal error (open for neither read nor write)"));
138 setErrorString(tr(
"File not open"));
145 if (openMode() & WriteOnly) {
146 unsigned int in = 0, out = 0;
147 BZ2_bzWriteClose(&bzError,
m_bzFile, 0, &in, &out);
149 if (bzError != BZ_OK) {
150 setErrorString(tr(
"bzip2 stream write close error"));
159 if (openMode() & ReadOnly) {
160 BZ2_bzReadClose(&bzError,
m_bzFile);
161 if (bzError != BZ_OK) {
162 setErrorString(tr(
"bzip2 stream read close error"));
171 setErrorString(tr(
"Internal error (close for neither read nor write)"));
181 int read = BZ2_bzRead(&bzError,
m_bzFile, data, maxSize);
185 if (bzError != BZ_OK) {
186 if (bzError != BZ_STREAM_END) {
187 cerr <<
"BZipFileDevice::readData: error condition" << endl;
188 setErrorString(tr(
"bzip2 stream read error"));
204 BZ2_bzWrite(&bzError,
m_bzFile, (
void *)data, maxSize);
208 if (bzError != BZ_OK) {
209 cerr <<
"BZipFileDevice::writeData: error condition" << endl;
210 setErrorString(
"bzip2 stream write error");
virtual qint64 writeData(const char *data, qint64 maxSize)
virtual qint64 readData(char *data, qint64 maxSize)
virtual bool isOK() const
BZipFileDevice(QString fileName)
virtual ~BZipFileDevice()
virtual bool open(OpenMode mode)