À l'aide de la librairie zlib compresser un répertoire

J'ai une application C++ qui nécessite l'utilisation d'un format de compression standard pour un répertoire.
J'ai pensé à utiliser le format zip.
Et donc, zlib était évident.

Mon problème est la construction du dictionnaire, c'est à dire compresser un répertoire contenant des fichiers avec zlib à un standard de fichier zip.

J'ai lu que zlib le fait, mais je ne comprends pas comment. J'ai vérifié minzip code. Il semble qu'il utilise gzip. J'ai pu construire mon propre format, mais je veux être en mesure d'ouvrir ces fichiers avec 7z pour le débogage (au cas où).

Que dois-je utiliser dans zlib pour compresser un répertoire?

[modifier]
Dans minzip
J'ai utilisé minzip pour compresser 1 fichier dans sa version gz -> pas de zip, mais bien pour moi. (J'en ai que sur les différents compilateurs dans le monde, ayant un format standard est plus facile dans le cas où il ya un problème sur la plate-forme du client)

Aussi, il y a ce code dans main. Il fait une boucle sur une liste de fichiers et de l'écrit à une sortie.
Mais où se trouve l'information sur l'emplacement du fichier dans l'archive?

    do {
        if (uncompr) {
            if (copyout) {
                file = gzopen(*argv, "rb");
                if (file == NULL)
                    fprintf(stderr, "%s: can't gzopen %s\n", prog, *argv);
                else
                    gz_uncompress(file, stdout);
            } else {
                file_uncompress(*argv);
            }
        } else {
            if (copyout) {
                FILE * in = fopen(*argv, "rb");

                if (in == NULL) {
                    perror(*argv);
                } else {
                    file = gzdopen(fileno(stdout), outmode);
                    if (file == NULL) error("can't gzdopen stdout");

                    gz_compress(in, file);
                }

            } else {
                file_compress(*argv, outmode);
            }
        }
    } while (argv++, --argc);

Désolé si c'est évident.

Est-il une bonne raison pourquoi l'exécution d' zip de faire le travail, n'est-ce pas plus simple et plus robuste?
Dans zlib contrib dossier, il y est minizip.
Oui j'ai vu cela, mais je ne vois pas non plus comment passer d'un dossier. Peut-être une liste de fichiers. mais alors, comment construire le dictionnaire ?

OriginalL'auteur dzada | 2013-09-10