mirror of
https://github.com/ivabus/pantry
synced 2024-11-26 18:25:08 +03:00
parent
581dd709d9
commit
764fe93aa3
2 changed files with 108 additions and 0 deletions
30
projects/zlib.net/minizip/package.yml
Normal file
30
projects/zlib.net/minizip/package.yml
Normal 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
|
78
projects/zlib.net/minizip/test.c
Normal file
78
projects/zlib.net/minizip/test.c
Normal 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;
|
||||||
|
}
|
Loading…
Reference in a new issue