45 using std::ostringstream;
47 #include "BESUncompress3BZ2.h"
48 #include "BESInternalError.h"
54 static void bz_internal_error(
int errcode)
57 strm <<
"internal error in bz2 library occurred: " << errcode;
72 string err =
"Unable to uncompress bz2 files, feature not built. Check config.h in bes directory for HAVE_BZLIB_H flag set to 1";
75 FILE *src = fopen( src_name.c_str(),
"rb" );
78 char *serr = strerror( errno );
79 string err =
"Unable to open the compressed file "
87 err.append(
"unknown error occurred" );
101 bsrc = BZ2_bzReadOpen( &bzerror, src, verbosity, small, NULL, 0 );
104 const char *berr = BZ2_bzerror( bsrc, &bzerror );
105 string err =
"bzReadOpen failed on " + src_name +
": ";
112 err.append(
"Unknown error" );
122 int bytes_read = BZ2_bzRead( &bzerror, bsrc, in, CHUNK );
123 if( bzerror != BZ_OK && bzerror != BZ_STREAM_END )
125 const char *berr = BZ2_bzerror( bsrc, &bzerror );
126 string err =
"bzRead failed on " + src_name +
": ";
133 err.append(
"Unknown error" );
136 BZ2_bzReadClose( &bzerror, bsrc );
142 if( bzerror == BZ_STREAM_END )
146 int bytes_written = write(fd, in, bytes_read);
147 if( bytes_written < bytes_read )
150 strm <<
"Error writing uncompressed data: "
151 <<
"wrote " << bytes_written
152 <<
" instead of " << bytes_read;
154 BZ2_bzReadClose( &bzerror, bsrc );
161 BZ2_bzReadClose( &bzerror, bsrc );