Gzip-Lib?

Hi,

ich möchte in meinem Programm in C/C++ unter Linux ein File zippen. Am Besten GZip-kompatibel.
Ich weiß, es ist auch mit Hilfe eines Shell-Scriptes möglich, aber gibt es auch ne lib und passende Erfahrungsberichte?

Gruß
Winni

Hallo,

ich möchte in meinem Programm in C/C++ unter Linux ein File
zippen. Am Besten GZip-kompatibel.
Ich weiß, es ist auch mit Hilfe eines Shell-Scriptes möglich,
aber gibt es auch ne lib und passende Erfahrungsberichte?

Da gibt es einige Möglichkeiten. Nehmen wir mal an, Du
erzeugst in einem Programm während des Laufs Daten und
möchtest diese „gezippt“ in eine Datei ausgeben.

Dazu bräuchtest Du unter Linux die „zlib“ und ggf. das
Paket „zlib-devel“ (je nach Distribution), in dem die
Header-Dateien sind.

Danach nimmst Du dieses Minimalbeispiel:

#include 
#include 
#include 
#include "zlib.h"

#define BLOCKLEN 64000

 int main()
{
 const char \*fname = "meinedatei.txt.gz";
 unsigned char \*in = new unsigned char[BLOCKLEN];
 
 gzFile fd = gzopen(fname, "wb"); 

 printf("dumping %d bytes (%c)\n", BLOCKLEN, 'A');
 memset(in, 'A', BLOCKLEN);
 gzwrite(fd, in, BLOCKLEN);

 printf("dumping %d bytes (%c)\n", BLOCKLEN, 'B');
 memset(in, 'B', BLOCKLEN);
 gzwrite(fd, in, BLOCKLEN);

 printf("dumping %d bytes (%c)\n", BLOCKLEN, 'C');
 memset(in, 'C', BLOCKLEN);
 gzwrite(fd, in, BLOCKLEN);

 z\_off\_t l = gztell(fd); /\* how many bytes did we put out? \*/
 gzclose(fd);

 struct stat s; /\* 'stat' the file toget its total size \*/
 stat(fname, &s);
 printf("uncompressed: %ld bytes, compressed: %ld bytes\n", l, s.st\_size);
 
 delete [] in;
 return 0;
}

und versuchst es mit gcc (c++) zu kompilieren:

$\> g++ myprog.cxx -lz -o myprog

danach müßtest Du es mit ./myprog starten können.

Grüße

CMБ

Danke für den Tip,
(wenn ich Zeit habe, werde ich es einbauen und testen)

Winni