40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
setPermissions(OFString *path, OFZIPArchiveEntry *entry)
{
#ifdef OF_FILE_MANAGER_SUPPORTS_PERMISSIONS
if ((entry.versionMadeBy >> 8) ==
OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_UNIX) {
OFNumber *mode = [OFNumber numberWithUnsignedShort:
(entry.versionSpecificAttributes >> 16) & 0777];
of_file_attribute_key_t key =
of_file_attribute_key_posix_permissions;
of_file_attributes_t attributes =
[OFDictionary dictionaryWithObject: mode forKey: key];
[[OFFileManager defaultManager] setAttributes: attributes
ofItemAtPath: path];
}
#endif
}
static void
setModificationDate(OFString *path, OFZIPArchiveEntry *entry)
{
OFDate *modificationDate = entry.modificationDate;
of_file_attributes_t attributes;
if (modificationDate == nil)
return;
attributes = [OFDictionary
dictionaryWithObject: modificationDate
forKey: of_file_attribute_key_modification_date];
[[OFFileManager defaultManager] setAttributes: attributes
ofItemAtPath: path];
}
@implementation ZIPArchive
+ (void)initialize
{
|
<
<
|
|
>
|
|
|
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
setPermissions(OFString *path, OFZIPArchiveEntry *entry)
{
#ifdef OF_FILE_MANAGER_SUPPORTS_PERMISSIONS
if ((entry.versionMadeBy >> 8) ==
OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_UNIX) {
OFNumber *mode = [OFNumber numberWithUnsignedShort:
(entry.versionSpecificAttributes >> 16) & 0777];
OFFileAttributes attributes = [OFDictionary
dictionaryWithObject: mode
forKey: OFFilePOSIXPermissions];
[[OFFileManager defaultManager] setAttributes: attributes
ofItemAtPath: path];
}
#endif
}
static void
setModificationDate(OFString *path, OFZIPArchiveEntry *entry)
{
OFDate *modificationDate = entry.modificationDate;
OFFileAttributes attributes;
if (modificationDate == nil)
return;
attributes = [OFDictionary
dictionaryWithObject: modificationDate
forKey: OFFileModificationDate];
[[OFFileManager defaultManager] setAttributes: attributes
ofItemAtPath: path];
}
@implementation ZIPArchive
+ (void)initialize
{
|
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
|
return;
}
for (OFString *localFileName in files) {
void *pool = objc_autoreleasePoolPush();
OFArray OF_GENERIC (OFString *) *components;
OFString *fileName;
of_file_attributes_t attributes;
bool isDirectory = false;
OFMutableZIPArchiveEntry *entry;
unsigned long long size;
OFStream *output;
components = localFileName.pathComponents;
fileName = [components componentsJoinedByString: @"/"];
attributes = [fileManager
attributesOfItemAtPath: localFileName];
if ([attributes.fileType isEqual: of_file_type_directory]) {
isDirectory = true;
fileName = [fileName stringByAppendingString: @"/"];
}
if (app->_outputLevel >= 0)
[of_stdout writeString: OF_LOCALIZED(@"adding_file",
@"Adding %[file]...",
|
|
|
|
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
|
return;
}
for (OFString *localFileName in files) {
void *pool = objc_autoreleasePoolPush();
OFArray OF_GENERIC (OFString *) *components;
OFString *fileName;
OFFileAttributes attributes;
bool isDirectory = false;
OFMutableZIPArchiveEntry *entry;
unsigned long long size;
OFStream *output;
components = localFileName.pathComponents;
fileName = [components componentsJoinedByString: @"/"];
attributes = [fileManager
attributesOfItemAtPath: localFileName];
if ([attributes.fileType isEqual: OFFileTypeDirectory]) {
isDirectory = true;
fileName = [fileName stringByAppendingString: @"/"];
}
if (app->_outputLevel >= 0)
[of_stdout writeString: OF_LOCALIZED(@"adding_file",
@"Adding %[file]...",
|