277
ASCString tnstream::getDeviceName ( void )
282
ASCString tnstream::getLocation ( void )
279
ASCString tnstream::getDeviceName()
284
ASCString tnstream::getLocation()
289
ASCString tnstream::getArchive()
287
294
int tnstream::readInt ( void )
1158
1164
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1167
class PrivateCompressionData {
1170
static const int outputbufsize = 100000;
1171
char outputbuf[outputbufsize];
1173
PrivateCompressionData() {
1179
~PrivateCompressionData() {
1180
BZ2_bzCompressEnd ( &bzs );
1162
1184
libbzip_compression :: libbzip_compression ( p_compressor_stream_interface strm )
1168
BZ2_bzCompressInit ( &bzs, 5, 0, 0 );
1170
outputbufsize = 100000;
1171
outputbuf = new char [ outputbufsize ];
1186
data = new PrivateCompressionData();
1187
BZ2_bzCompressInit ( &data->bzs, 5, 0, 0 );
1179
1195
char* cbuf = (char*) buf;
1181
bzs.next_in = cbuf ;
1182
bzs.avail_in = size ;
1183
bzs.total_in_lo32 = 0 ;
1184
bzs.total_in_hi32 = 0 ;
1186
while ( bzs.total_in_lo32 < size ) {
1188
bzs.next_out = outputbuf;
1189
bzs.avail_out = outputbufsize;
1190
bzs.total_out_lo32 = 0;
1191
bzs.total_out_hi32 = 0;
1193
int res = BZ2_bzCompress ( &bzs, BZ_RUN );
1197
data->bzs.next_in = cbuf ;
1198
data->bzs.avail_in = size ;
1199
data->bzs.total_in_lo32 = 0 ;
1200
data->bzs.total_in_hi32 = 0 ;
1202
while ( data->bzs.total_in_lo32 < size ) {
1204
data->bzs.next_out = data->outputbuf;
1205
data->bzs.avail_out = data->outputbufsize;
1206
data->bzs.total_out_lo32 = 0;
1207
data->bzs.total_out_hi32 = 0;
1209
int res = BZ2_bzCompress ( &data->bzs, BZ_RUN );
1195
1211
throw tcompressionerror ( "MBZLB2 compression :: writedata", res );
1197
for ( int i = 0; i < bzs.total_out_lo32; i++ )
1198
outputbuf[i] ^= bzip_xor_byte;
1213
for ( int i = 0; i < data->bzs.total_out_lo32; i++ )
1214
data->outputbuf[i] ^= bzip_xor_byte;
1200
stream->writecmpdata ( outputbuf, bzs.total_out_lo32 );
1216
stream->writecmpdata ( data->outputbuf, data->bzs.total_out_lo32 );
1209
bzs.next_in = outputbuf;
1212
bzs.next_out = outputbuf;
1213
bzs.avail_out = outputbufsize;
1214
bzs.total_out_lo32 = 0;
1215
bzs.total_out_hi32 = 0;
1217
res = BZ2_bzCompress ( &bzs, BZ_FINISH );
1225
data->bzs.next_in = data->outputbuf;
1226
data->bzs.avail_in = 0;
1228
data->bzs.next_out = data->outputbuf;
1229
data->bzs.avail_out = data->outputbufsize;
1230
data->bzs.total_out_lo32 = 0;
1231
data->bzs.total_out_hi32 = 0;
1233
res = BZ2_bzCompress ( &data->bzs, BZ_FINISH );
1219
1235
throw tcompressionerror ( "MBZLB2 compression :: closecompression", res );
1221
for ( int i = 0; i < bzs.total_out_lo32; i++ )
1222
outputbuf[i] ^= bzip_xor_byte;
1223
stream->writecmpdata ( outputbuf, bzs.total_out_lo32 );
1237
for ( int i = 0; i < data->bzs.total_out_lo32; i++ )
1238
data->outputbuf[i] ^= bzip_xor_byte;
1239
stream->writecmpdata ( data->outputbuf, data->bzs.total_out_lo32 );
1225
1241
} while ( res != BZ_STREAM_END );
1228
BZ2_bzCompressEnd ( &bzs );
1244
BZ2_bzCompressEnd ( &data->bzs );
1231
1247
libbzip_compression :: ~libbzip_compression ( )
1254
class PrivateDecompressionData {
1257
static const int inputbufsize = 100000;
1258
char inputbuf[inputbufsize];
1262
PrivateDecompressionData() {
1272
~PrivateDecompressionData() {
1273
BZ2_bzDecompressEnd ( &bzs );
1242
1278
libbzip_decompression :: libbzip_decompression ( p_compressor_stream_interface strm )
1248
BZ2_bzDecompressInit ( &bzs, 0, 0 );
1250
inputbufsize = 100000;
1251
inputbuf = new char [ inputbufsize ];
1280
data = new PrivateDecompressionData();
1281
BZ2_bzDecompressInit ( &data->bzs, 0, 0 );
1261
1288
int decompressed = 0;
1262
1289
char* cbuf = (char*) buf;
1264
bzs.next_in = cbuf ;
1265
bzs.avail_in = size ;
1266
bzs.total_in_lo32 = 0 ;
1267
bzs.total_in_hi32 = 0 ;
1291
data->bzs.next_in = cbuf ;
1292
data->bzs.avail_in = size ;
1293
data->bzs.total_in_lo32 = 0 ;
1294
data->bzs.total_in_hi32 = 0 ;
1271
1298
while ( decompressed < size && !abrt ) {
1272
if ( inputbufread >= inputbufused ) {
1273
inputbufused = stream->readcmpdata ( inputbuf, inputbufsize, 0 );
1299
if ( data->inputbufread >= data->inputbufused ) {
1300
data->inputbufused = stream->readcmpdata ( data->inputbuf, data->inputbufsize, 0 );
1275
if ( !inputbufused && excpt )
1302
if ( !data->inputbufused && excpt )
1276
1303
throw tcompressionerror ( "Decompressor :: out of data", 0 );
1279
for ( int i = 0; i < inputbufused; i++ )
1280
inputbuf[i] ^= bzip_xor_byte;
1306
for ( int i = 0; i < data->inputbufused; i++ )
1307
data->inputbuf[i] ^= bzip_xor_byte;
1309
data->inputbufread = 0;
1284
bzs.next_in = inputbuf + inputbufread;
1285
bzs.avail_in = inputbufused - inputbufread;
1286
bzs.total_in_lo32 = 0;
1287
bzs.total_in_hi32 = 0;
1289
bzs.next_out = cbuf + decompressed;
1290
bzs.avail_out = size - decompressed;
1291
bzs.total_out_lo32 = 0;
1292
bzs.total_out_hi32 = 0;
1294
int res = BZ2_bzDecompress ( &bzs );
1295
decompressed += bzs.total_out_lo32;
1296
inputbufread += bzs.total_in_lo32;
1311
data->bzs.next_in = data->inputbuf + data->inputbufread;
1312
data->bzs.avail_in = data->inputbufused - data->inputbufread;
1313
data->bzs.total_in_lo32 = 0;
1314
data->bzs.total_in_hi32 = 0;
1316
data->bzs.next_out = cbuf + decompressed;
1317
data->bzs.avail_out = size - decompressed;
1318
data->bzs.total_out_lo32 = 0;
1319
data->bzs.total_out_hi32 = 0;
1321
int res = BZ2_bzDecompress ( &data->bzs );
1322
decompressed += data->bzs.total_out_lo32;
1323
data->inputbufread += data->bzs.total_in_lo32;
1298
1325
if ( decompressed < size ) {
1299
1326
if ( res == BZ_STREAM_END ) {
1666
1698
tn_c_lzw_filestream :: ~tn_c_lzw_filestream()
1668
close_compression ();
1674
containerstream->closecontainerfile();
1701
displayLogMessage( 9, "~tn_c_lzw_filestream " + getLocation() );
1703
close_compression ();
1709
displayLogMessage( 9, ASCString("~tn_c_lzw_filestream -> closecontainerfile ") );
1710
containerstream->closecontainerfile();
1713
displayLogMessage( 9, ASCString("~tn_c_lzw_filestream : caught exception") );
2085
2125
void tmemorystreambuf :: writetostream ( pnstream stream )
2087
2127
if ( stream ) {
2088
stream->writeInt ( initialized );
2128
stream->writeInt ( 0 );
2089
2129
stream->writeInt ( used );
2090
2130
stream->writeInt ( allocated );
2091
2131
for ( int i = 0; i < 10; i++ )
2098
2138
void tmemorystreambuf :: readfromstream ( pnstream stream )
2100
2140
if ( stream ) {
2101
initialized = stream->readInt();
2102
2142
used = stream->readInt();
2103
2143
allocated = stream->readInt();
2104
2144
for ( int i = 0; i< 10; i++ )