Пример #1
0
Boolean operator ==(buffer&x, buffer& y)
{
    if ( x.content_sz() != y.content_sz() ) {
        debug(cerr, x.content_sz());
        debug(cerr, y.content_sz());
    }

    unsigned char* x_buf = (unsigned char*)x.get_base();
    unsigned char* y_buf = (unsigned char*)y.get_base();

    for ( int i=0; i<x.content_sz(); i++ ) {
        if ( x_buf[i] != y_buf[i] ) {
            debug(cerr, i);
            debug(cerr, x_buf[i]);
            debug(cerr, y_buf[i]);
#ifndef __osf__
            debug(cerr, hex(x_buf[i]));
            debug(cerr, hex(y_buf[i]));
#endif
            //return false;
        }
    }

    return true;
}
Пример #2
0
void zip::decompress(buffer& compressed, buffer& uncompressed) 
{
   fstream out(COMPRESSED, ios::out|ios::trunc);

   if ( !out )
      throw(streamException(out.rdstate()));

   if ( out.write(compressed.get_base(), compressed.content_sz()) == 0 )
      throw(streamException(out.rdstate()));

   out.close();

   system(form("gzip -cd %s > %s", COMPRESSED, UNCOMPRESSED));

   fstream in(UNCOMPRESSED, ios::in);

   if ( !in )
      throw(streamException(in.rdstate()));

   int x = bytes(in);

   uncompressed.expand_chunk(x);

   if ( in.read(uncompressed.get_base(), x) == 0 || x != in.gcount() )
      throw(streamException(in.rdstate()));

   uncompressed.set_content_sz(x);

   in.close();

   return;
}
Пример #3
0
void zip::compress(const buffer& uncompressed, buffer& compressed) 
{
////////////////////////////////////////
// code for testing. I know it is slow. 
////////////////////////////////////////

   fstream out(UNCOMPRESSED, ios::out|ios::trunc);

   if ( !out )
      throw(streamException(out.rdstate()));

   if ( out.write(uncompressed.get_base(), uncompressed.content_sz()) == 0 )
      throw(streamException(out.rdstate()));

   out.close();

   system(form("gzip -c %s > %s", UNCOMPRESSED, COMPRESSED));

   fstream in(COMPRESSED, ios::in);

   if ( !in )
      throw(streamException(in.rdstate()));

   int x = bytes(in);

   compressed.expand_chunk(x);

   if ( in.read(compressed.get_base(), x) == 0 || x != in.gcount() )
      throw(streamException(in.rdstate()));

   compressed.set_content_sz(x);

   in.close();

   return;
}