diff options
Diffstat (limited to '')
| -rw-r--r-- | src/bzip2.cpp | 16 | ||||
| -rw-r--r-- | src/bzip2.h | 3 | ||||
| -rw-r--r-- | src/file.cpp | 3 |
3 files changed, 17 insertions, 5 deletions
diff --git a/src/bzip2.cpp b/src/bzip2.cpp index 0a56f83..7f6e45e 100644 --- a/src/bzip2.cpp +++ b/src/bzip2.cpp | |||
| @@ -12,7 +12,8 @@ using namespace Bu; | |||
| 12 | 12 | ||
| 13 | Bu::BZip2::BZip2( Bu::Stream &rNext, int nCompression ) : | 13 | Bu::BZip2::BZip2( Bu::Stream &rNext, int nCompression ) : |
| 14 | Bu::Filter( rNext ), | 14 | Bu::Filter( rNext ), |
| 15 | nCompression( nCompression ) | 15 | nCompression( nCompression ), |
| 16 | sTotalOut( 0 ) | ||
| 16 | { | 17 | { |
| 17 | TRACE( nCompression ); | 18 | TRACE( nCompression ); |
| 18 | start(); | 19 | start(); |
| @@ -50,7 +51,7 @@ size_t Bu::BZip2::stop() | |||
| 50 | } | 51 | } |
| 51 | else | 52 | else |
| 52 | { | 53 | { |
| 53 | size_t sTotal = 0; | 54 | // size_t sTotal = 0; |
| 54 | for(;;) | 55 | for(;;) |
| 55 | { | 56 | { |
| 56 | bzState.next_in = NULL; | 57 | bzState.next_in = NULL; |
| @@ -60,7 +61,7 @@ size_t Bu::BZip2::stop() | |||
| 60 | int res = BZ2_bzCompress( &bzState, BZ_FINISH ); | 61 | int res = BZ2_bzCompress( &bzState, BZ_FINISH ); |
| 61 | if( bzState.avail_out < nBufSize ) | 62 | if( bzState.avail_out < nBufSize ) |
| 62 | { | 63 | { |
| 63 | sTotal += rNext.write( pBuf, nBufSize-bzState.avail_out ); | 64 | sTotalOut += rNext.write( pBuf, nBufSize-bzState.avail_out ); |
| 64 | } | 65 | } |
| 65 | if( res == BZ_STREAM_END ) | 66 | if( res == BZ_STREAM_END ) |
| 66 | break; | 67 | break; |
| @@ -68,7 +69,7 @@ size_t Bu::BZip2::stop() | |||
| 68 | BZ2_bzCompressEnd( &bzState ); | 69 | BZ2_bzCompressEnd( &bzState ); |
| 69 | delete[] pBuf; | 70 | delete[] pBuf; |
| 70 | pBuf = NULL; | 71 | pBuf = NULL; |
| 71 | return sTotal; | 72 | return sTotalOut; |
| 72 | } | 73 | } |
| 73 | } | 74 | } |
| 74 | return 0; | 75 | return 0; |
| @@ -182,7 +183,7 @@ size_t Bu::BZip2::write( const void *pData, size_t nBytes ) | |||
| 182 | if( bReading == true ) | 183 | if( bReading == true ) |
| 183 | throw ExceptionBase("This bzip2 filter is in reading mode, you can't write."); | 184 | throw ExceptionBase("This bzip2 filter is in reading mode, you can't write."); |
| 184 | 185 | ||
| 185 | size_t sTotalOut = 0; | 186 | // size_t sTotalOut = 0; |
| 186 | bzState.next_in = (char *)pData; | 187 | bzState.next_in = (char *)pData; |
| 187 | bzState.avail_in = nBytes; | 188 | bzState.avail_in = nBytes; |
| 188 | for(;;) | 189 | for(;;) |
| @@ -209,3 +210,8 @@ bool Bu::BZip2::isOpen() | |||
| 209 | return (bzState.state != NULL); | 210 | return (bzState.state != NULL); |
| 210 | } | 211 | } |
| 211 | 212 | ||
| 213 | size_t Bu::BZip2::getCompressedSize() | ||
| 214 | { | ||
| 215 | return sTotalOut; | ||
| 216 | } | ||
| 217 | |||
diff --git a/src/bzip2.h b/src/bzip2.h index fd0ba5c..7ca61b4 100644 --- a/src/bzip2.h +++ b/src/bzip2.h | |||
| @@ -32,6 +32,8 @@ namespace Bu | |||
| 32 | 32 | ||
| 33 | virtual bool isOpen(); | 33 | virtual bool isOpen(); |
| 34 | 34 | ||
| 35 | size_t getCompressedSize(); | ||
| 36 | |||
| 35 | private: | 37 | private: |
| 36 | void bzError( int code ); | 38 | void bzError( int code ); |
| 37 | bz_stream bzState; | 39 | bz_stream bzState; |
| @@ -39,6 +41,7 @@ namespace Bu | |||
| 39 | int nCompression; | 41 | int nCompression; |
| 40 | char *pBuf; | 42 | char *pBuf; |
| 41 | uint32_t nBufSize; | 43 | uint32_t nBufSize; |
| 44 | size_t sTotalOut; | ||
| 42 | }; | 45 | }; |
| 43 | } | 46 | } |
| 44 | 47 | ||
diff --git a/src/file.cpp b/src/file.cpp index 6228ba9..1c26001 100644 --- a/src/file.cpp +++ b/src/file.cpp | |||
| @@ -93,6 +93,7 @@ void Bu::File::seek( long offset ) | |||
| 93 | throw FileException("File not open."); | 93 | throw FileException("File not open."); |
| 94 | 94 | ||
| 95 | lseek( fd, offset, SEEK_CUR ); | 95 | lseek( fd, offset, SEEK_CUR ); |
| 96 | bEos = false; | ||
| 96 | } | 97 | } |
| 97 | 98 | ||
| 98 | void Bu::File::setPos( long pos ) | 99 | void Bu::File::setPos( long pos ) |
| @@ -101,6 +102,7 @@ void Bu::File::setPos( long pos ) | |||
| 101 | throw FileException("File not open."); | 102 | throw FileException("File not open."); |
| 102 | 103 | ||
| 103 | lseek( fd, pos, SEEK_SET ); | 104 | lseek( fd, pos, SEEK_SET ); |
| 105 | bEos = false; | ||
| 104 | } | 106 | } |
| 105 | 107 | ||
| 106 | void Bu::File::setPosEnd( long pos ) | 108 | void Bu::File::setPosEnd( long pos ) |
| @@ -109,6 +111,7 @@ void Bu::File::setPosEnd( long pos ) | |||
| 109 | throw FileException("File not open."); | 111 | throw FileException("File not open."); |
| 110 | 112 | ||
| 111 | lseek( fd, pos, SEEK_END ); | 113 | lseek( fd, pos, SEEK_END ); |
| 114 | bEos = false; | ||
| 112 | } | 115 | } |
| 113 | 116 | ||
| 114 | bool Bu::File::isEos() | 117 | bool Bu::File::isEos() |
