Estou tendo dificuldades para criar um programa em C que armazene arquivos num arquivo zip

Por diversão, estou fazendo um programa em C multiplataforma que pegue diferentes arquivos (como page_styles.css, titlepage.xhtml, foto.jpg, etc) e os armazene num arquivo .zip. Não me importo com compressão ou criptografia, a única coisa que quero é armazenar diversos arquivos num arquivo ZIP.

Pra falar a verdade, quero criar um programa que gere um EPUB. Então, se a maioria esmagadora dos leitores de EPUB suportarem outro formato além do .zip (como .7z, .tar, etc), aceito sugestões para converter nesse formato.

Já procurei por algumas bibliotecas em C (se possível, quero que meu programa seja feito em puro C) como zlib e miniz, mas ou nem sequer consegui testar (não há exemplos para o que quero) ou os resultados não foram satisfatórios (por exemplo, o miniz, que parecia ser perfeito pra mim, gerou arquivos ZIPs com arquivos vazios… certamente fiz algo errado, mas não sei como resolver).

Alguém me dá uma luz?

1 Curtida

Missão meio complicada essa! haha

Pelo o que eu vi essas APIs são bem baixo nível e usadas para compressão/descompressão de strings/memória e não são feitas especificamente para se criar arquivos .Zip. Isso é usado por projetos como o initramfs, o Kernel, o Btrfs, … para diversos fins.

Procurando um pouco no Google encontrei algumas libs que parecem ser mais específicas para o seu caso, como o LibZip e o kuba–/zip. Inclusive o segundo usa o Miniz como base, fazendo o que você teria que fazer se fosse usar diretamente as libs que você citou. Recomendo dar uma olhada nessas libs.

1 Curtida

Conhece o https://pt.stackoverflow.com ?

Sempre que tenho dúvidas referente a programação, lá é o primeiro lugar que pergunto.

Caso ninguém consiga ajudar aqui, recomendo dar uma olhada lá.

1 Curtida