/* report a zlib or i/o error */
void zerr(int ret)
{
- fputs("zerr: ", stderr);
+ dstream<<"zerr: ";
switch (ret) {
case Z_ERRNO:
if (ferror(stdin))
- fputs("error reading stdin\n", stderr);
+ dstream<<"error reading stdin"<<std::endl;
if (ferror(stdout))
- fputs("error writing stdout\n", stderr);
+ dstream<<"error writing stdout"<<std::endl;
break;
case Z_STREAM_ERROR:
- fputs("invalid compression level\n", stderr);
+ dstream<<"invalid compression level"<<std::endl;
break;
case Z_DATA_ERROR:
- fputs("invalid or incomplete deflate data\n", stderr);
+ dstream<<"invalid or incomplete deflate data"<<std::endl;
break;
case Z_MEM_ERROR:
- fputs("out of memory\n", stderr);
+ dstream<<"out of memory"<<std::endl;
break;
case Z_VERSION_ERROR:
- fputs("zlib version mismatch!\n", stderr);
+ dstream<<"zlib version mismatch!"<<std::endl;
break;
default:
- dstream<<"return value = "<<ret<<"\n";
+ dstream<<"return value = "<<ret<<std::endl;
}
}
}
+void compressZlib(const std::string &data, std::ostream &os)
+{
+ SharedBuffer<u8> databuf((u8*)data.c_str(), data.size());
+ compressZlib(databuf, os);
+}
+
void decompressZlib(std::istream &is, std::ostream &os)
{
z_stream z;
ret = inflateInit(&z);
if(ret != Z_OK)
- throw SerializationError("compressZlib: inflateInit failed");
+ throw SerializationError("dcompressZlib: inflateInit failed");
z.avail_in = 0;
|| status == Z_MEM_ERROR)
{
zerr(status);
- throw SerializationError("compressZlib: inflate failed");
+ throw SerializationError("decompressZlib: inflate failed");
}
int count = bufsize - z.avail_out;
//dstream<<"count="<<count<<std::endl;
{
dstream<<"unget #"<<i<<" failed"<<std::endl;
dstream<<"fail="<<is.fail()<<" bad="<<is.bad()<<std::endl;
- throw SerializationError("compressZlib: unget failed");
+ throw SerializationError("decompressZlib: unget failed");
}
}