* +minizip

* don't build zlib
This commit is contained in:
Joe DeCapo 2023-05-05 00:07:08 -05:00 committed by GitHub
parent 581dd709d9
commit 764fe93aa3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 108 additions and 0 deletions

View file

@ -0,0 +1,30 @@
distributable:
url: https://github.com/madler/zlib/archive/refs/tags/v{{version}}.tar.gz
strip-components: 1
versions:
github: madler/zlib
strip: /^v/
# dependencies:
# zlib.net: '*'
build:
dependencies:
gnu.org/autoconf: ^2
gnu.org/automake: ^1
tea.xyz/gx/cc: c99
tea.xyz/gx/make: '*'
gnu.org/libtool: ^2
# zlib.net: '*'
script: |
cd contrib/minizip
autoreconf -fi
./configure --prefix={{prefix}}
make install
test:
dependencies:
tea.xyz/gx/cc: c99
script: |
cc test.c -o test -lminizip -lz

View file

@ -0,0 +1,78 @@
// Generated with ChatGPT
#include <stdio.h>
#include <string.h>
#include "minizip/zip.h"
#include "minizip/unzip.h"
int main(int argc, char *argv[]) {
zipFile zf = NULL;
unzFile uf = NULL;
const char *zip_file = "test.zip";
const char *file_name = "test.txt";
char *file_content = "Hello, world!";
zip_fileinfo zfi;
// Create a new zip file
zf = zipOpen(zip_file, APPEND_STATUS_CREATE);
if (zf == NULL) {
printf("Error creating zip file\n");
return 1;
}
// Fill in zip_fileinfo struct
memset(&zfi, 0, sizeof(zfi));
// Add a file to the zip
if (zipOpenNewFileInZip(zf, file_name, &zfi, NULL, 0, NULL, 0, NULL, Z_DEFLATED, Z_DEFAULT_COMPRESSION) != ZIP_OK) {
printf("Error adding file to zip archive\n");
return 1;
}
// Write the file content
if (zipWriteInFileInZip(zf, file_content, strlen(file_content)) != ZIP_OK) {
printf("Error writing file content\n");
return 1;
}
// Close the file and zip
zipCloseFileInZip(zf);
zipClose(zf, NULL);
// Open the zip file for reading
uf = unzOpen(zip_file);
if (uf == NULL) {
printf("Error opening zip file\n");
return 1;
}
// Locate the file in the zip archive
if (unzLocateFile(uf, file_name, 0) != UNZ_OK) {
printf("Error locating file in zip archive\n");
return 1;
}
// Extract the file
if (unzOpenCurrentFile(uf) != UNZ_OK) {
printf("Error opening file in zip archive\n");
return 1;
}
// Read the file content
char buffer[1024];
int bytes_read = unzReadCurrentFile(uf, buffer, sizeof(buffer) - 1);
if (bytes_read < 0) {
printf("Error reading file from zip archive\n");
return 1;
}
buffer[bytes_read] = '\0';
// Close the file and zip
unzCloseCurrentFile(uf);
unzClose(uf);
// Print the file content
printf("Extracted content: %s\n", buffer);
return 0;
}