44 using std::ostringstream ;
56 strm <<
"internal error in bz2 library occurred: " << errcode ;
70 string err =
"Unable to uncompress bz2 files, feature not built. Check config.h in bes directory for HAVE_BZLIB_H flag set to 1" ;
73 FILE *src = fopen( src_name.c_str(),
"rb" ) ;
76 char *serr = strerror( errno ) ;
77 string err =
"Unable to open the compressed file "
85 err.append(
"unknown error occurred" ) ;
90 FILE *dest = fopen( target.c_str(),
"wb" ) ;
93 char *serr = strerror( errno ) ;
94 string err =
"Unable to create the uncompressed file "
102 err.append(
"unknown error occurred" ) ;
111 void *unused = NULL ;
115 BZFILE *bsrc = NULL ;
117 bsrc = BZ2_bzReadOpen( &bzerror, src, verbosity, small, NULL, 0 ) ;
120 const char *berr = BZ2_bzerror( bsrc, &bzerror ) ;
121 string err =
"bzReadOpen failed on " + src_name +
": " ;
128 err.append(
"Unknown error" ) ;
131 remove( target.c_str() ) ;
140 int bytes_read = BZ2_bzRead( &bzerror, bsrc, in,
CHUNK ) ;
141 if( bzerror != BZ_OK && bzerror != BZ_STREAM_END )
143 const char *berr = BZ2_bzerror( bsrc, &bzerror ) ;
144 string err =
"bzRead failed on " + src_name +
": " ;
151 err.append(
"Unknown error" ) ;
154 BZ2_bzReadClose( &bzerror, bsrc ) ;
156 remove( target.c_str() ) ;
162 if( bzerror == BZ_STREAM_END )
166 int bytes_written = fwrite( in, 1, bytes_read, dest) ;
167 if( bytes_written < bytes_read )
170 strm <<
"Error writing uncompressed data "
171 <<
"to dest file " << target <<
": "
172 <<
"wrote " << bytes_written <<
" "
173 <<
"instead of " << bytes_read ;
175 BZ2_bzReadClose( &bzerror, bsrc ) ;
177 remove( target.c_str() ) ;
184 BZ2_bzReadClose( &bzerror, bsrc ) ;