Boost logo

Boost Users :

From: Olaf van der Spek (olafvdspek_at_[hidden])
Date: 2007-08-09 11:50:19


On 8/9/07, François Duranleau <duranlef_at_[hidden]> wrote:
> 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?

Read the tar specs and write the code to generate headers/tailers
yourself. It's probably quite simple, especially the writing part.


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net