Merge branch 'master' of https://github.com/soffes/ssziparchive
# By Andreas Dangel (2) and others # Via Erickson Pacioles (1) and Sam Soffes (1) * 'master' of https://github.com/soffes/ssziparchive: Fixed warnings from Xcode Analyzer Fix warnings on 64-bit Add a unit test for zipArchiveProgressEvent. Add a progress event while unzipping. The progress is determined by the compressed file size and zip entries.
This commit is contained in:
@@ -55,6 +55,10 @@
|
||||
return NO;
|
||||
}
|
||||
|
||||
NSDictionary * fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:path error:nil];
|
||||
ZPOS64_T fileSize = fileAttributes.fileSize;
|
||||
ZPOS64_T currentPosition = 0;
|
||||
|
||||
unz_global_info globalInfo = {0ul, 0ul};
|
||||
unzGetGlobalInfo(zip, &globalInfo);
|
||||
|
||||
@@ -77,6 +81,9 @@
|
||||
if ([delegate respondsToSelector:@selector(zipArchiveWillUnzipArchiveAtPath:zipInfo:)]) {
|
||||
[delegate zipArchiveWillUnzipArchiveAtPath:path zipInfo:globalInfo];
|
||||
}
|
||||
if ([delegate respondsToSelector:@selector(zipArchiveProgressEvent:total:)]) {
|
||||
[delegate zipArchiveProgressEvent:currentPosition total:fileSize];
|
||||
}
|
||||
|
||||
NSInteger currentFileNumber = 0;
|
||||
do {
|
||||
@@ -103,11 +110,16 @@
|
||||
break;
|
||||
}
|
||||
|
||||
currentPosition += fileInfo.compressed_size;
|
||||
|
||||
// Message delegate
|
||||
if ([delegate respondsToSelector:@selector(zipArchiveWillUnzipFileAtIndex:totalFiles:archivePath:fileInfo:)]) {
|
||||
[delegate zipArchiveWillUnzipFileAtIndex:currentFileNumber totalFiles:(NSInteger)globalInfo.number_entry
|
||||
archivePath:path fileInfo:fileInfo];
|
||||
}
|
||||
if ([delegate respondsToSelector:@selector(zipArchiveProgressEvent:total:)]) {
|
||||
[delegate zipArchiveProgressEvent:currentPosition total:fileSize];
|
||||
}
|
||||
|
||||
char *filename = (char *)malloc(fileInfo.size_filename + 1);
|
||||
unzGetCurrentFileInfo(zip, &fileInfo, filename, fileInfo.size_filename + 1, NULL, 0, NULL, 0);
|
||||
@@ -221,6 +233,10 @@
|
||||
// Unable to set the permissions attribute
|
||||
NSLog(@"[SSZipArchive] Failed to set attributes - whilst setting permissions");
|
||||
}
|
||||
|
||||
#if !__has_feature(objc_arc)
|
||||
[attrs release];
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -282,6 +298,10 @@
|
||||
if (success && [delegate respondsToSelector:@selector(zipArchiveDidUnzipArchiveAtPath:zipInfo:unzippedPath:)]) {
|
||||
[delegate zipArchiveDidUnzipArchiveAtPath:path zipInfo:globalInfo unzippedPath:destination];
|
||||
}
|
||||
// final progress event = 100%
|
||||
if ([delegate respondsToSelector:@selector(zipArchiveProgressEvent:total:)]) {
|
||||
[delegate zipArchiveProgressEvent:fileSize total:fileSize];
|
||||
}
|
||||
|
||||
return success;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user