On Thu, 9 Aug 2007, Robert Caldecott wrote:
I have been experimenting with the boost::iostreams to create a gzip file, for example the following works fine:
using namespace boost::iostreams; filtering_ostream out; out.push(gzip_compressor()); out.push(file_sink("test.gz", std::ios::binary)); out << "This is a gz file\n";
This will create a gz file containing a single compressed file (called 'test'). I can change the name of this internal file using a gzip_params struct and all is well.
However, I want to create a single gzip file that contains multiple compressed files, each with a different filename. Does anyone know how to achieve this?
I guess that when you uncompress the file (e.g. with gunzip), you want to get all those named files in, well, different files? As far as I know, the gzip format doesn't allow that (I could be wrong), hence the gzip'ed tar files we often see. I can't think of any simple portable solution aside from creating each file regularly and then calling system("tar zcf filename.tar.gz ..."); and finally remove the uncompressed files. That would require that 'tar' is available the system your software is run on. Anyone else has any better ideas? -- François Duranleau LIGUM, Université de Montréal