fix(core): second pass at libzip compat

pull/282/head
Ludovic Marcotte 2020-06-19 11:30:42 -04:00
parent 3c4b1af3ba
commit 67f5e5e490
1 changed files with 12 additions and 1 deletions

View File

@ -56,10 +56,14 @@
int errorp; int errorp;
self->z = zip_open([file cString], ZIP_CREATE | ZIP_EXCL, &errorp); self->z = zip_open([file cString], ZIP_CREATE | ZIP_EXCL, &errorp);
if (self->z == NULL) { if (self->z == NULL) {
#ifdef LIBZIP_VERSION
zip_error_t ziperror; zip_error_t ziperror;
zip_error_init_with_code(&ziperror, errorp); zip_error_init_with_code(&ziperror, errorp);
NSLog(@"Failed to open zip output file %@: %@", file, NSLog(@"Failed to open zip output file %@: %@", file,
[NSString stringWithCString: zip_error_strerror(&ziperror)]); [NSString stringWithCString: zip_error_strerror(&ziperror)]);
#else
NSLog(@"Failed to open zip output file %@: %@", file, zip_strerror(self->z));
#endif
} else { } else {
ret = self; ret = self;
} }
@ -76,16 +80,23 @@
return NO; return NO;
} }
zip_source_t *source = zip_source_buffer(self->z, [data bytes], [data length], 0); struct zip_source *source = zip_source_buffer(self->z, [data bytes], [data length], 0);
if (source == NULL) { if (source == NULL) {
NSLog(@"Failed to create zip source from buffer: %@", [NSString stringWithCString: zip_strerror(self->z)]); NSLog(@"Failed to create zip source from buffer: %@", [NSString stringWithCString: zip_strerror(self->z)]);
return NO; return NO;
} }
#ifdef ZIP_FL_ENC_UTF_8
if (zip_file_add(self->z, [filename UTF8String], source, ZIP_FL_ENC_UTF_8) < 0) { if (zip_file_add(self->z, [filename UTF8String], source, ZIP_FL_ENC_UTF_8) < 0) {
NSLog(@"Failed to add file %@: %@", filename, [NSString stringWithCString: zip_strerror(self->z)]); NSLog(@"Failed to add file %@: %@", filename, [NSString stringWithCString: zip_strerror(self->z)]);
zip_source_free(source); zip_source_free(source);
} }
#else
if (zip_add(self->z, [filename UTF8String], source) < 0) {
NSLog(@"Failed to add file %@: %@", filename, [NSString stringWithCString: zip_strerror(self->z)]);
zip_source_free(source);
}
#endif
return YES; return YES;
} }