39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
dictionaryWithObject: [OFNumber numberWithUInt16: entry.mode]
forKey: of_file_attribute_key_posix_permissions];
[[OFFileManager defaultManager] setAttributes: attributes
ofItemAtPath: path];
#endif
}
@implementation TarArchive
+ (void)initialize
{
if (self == [TarArchive class])
app = (OFArc *)[OFApplication sharedApplication].delegate;
}
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
39
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
|
dictionaryWithObject: [OFNumber numberWithUInt16: entry.mode]
forKey: of_file_attribute_key_posix_permissions];
[[OFFileManager defaultManager] setAttributes: attributes
ofItemAtPath: path];
#endif
}
static void
setModificationDate(OFString *path, OFTarArchiveEntry *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 TarArchive
+ (void)initialize
{
if (self == [TarArchive class])
app = (OFArc *)[OFApplication sharedApplication].delegate;
}
|
302
303
304
305
306
307
308
309
310
311
312
313
314
315
|
if (type == OF_TAR_ARCHIVE_ENTRY_TYPE_DIRECTORY ||
(type == OF_TAR_ARCHIVE_ENTRY_TYPE_FILE &&
[fileName hasSuffix: @"/"])) {
[fileManager createDirectoryAtPath: outFileName
createParents: true];
setPermissions(outFileName, entry);
if (app->_outputLevel >= 0) {
[of_stdout writeString: @"\r"];
[of_stdout writeLine: OF_LOCALIZED(
@"extracting_file_done",
@"Extracting %[file]... done",
@"file", fileName)];
|
>
|
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
|
if (type == OF_TAR_ARCHIVE_ENTRY_TYPE_DIRECTORY ||
(type == OF_TAR_ARCHIVE_ENTRY_TYPE_FILE &&
[fileName hasSuffix: @"/"])) {
[fileManager createDirectoryAtPath: outFileName
createParents: true];
setPermissions(outFileName, entry);
setModificationDate(outFileName, entry);
if (app->_outputLevel >= 0) {
[of_stdout writeString: @"\r"];
[of_stdout writeLine: OF_LOCALIZED(
@"extracting_file_done",
@"Extracting %[file]... done",
@"file", fileName)];
|
358
359
360
361
362
363
364
365
366
367
368
369
370
371
|
@"extracting_file_percent",
@"Extracting %[file]... %[percent]%",
@"file", fileName,
@"percent", percentString)];
}
}
if (app->_outputLevel >= 0) {
[of_stdout writeString: @"\r"];
[of_stdout writeLine: OF_LOCALIZED(
@"extracting_file_done",
@"Extracting %[file]... done",
@"file", fileName)];
}
|
>
>
>
|
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
|
@"extracting_file_percent",
@"Extracting %[file]... %[percent]%",
@"file", fileName,
@"percent", percentString)];
}
}
[output close];
setModificationDate(outFileName, entry);
if (app->_outputLevel >= 0) {
[of_stdout writeString: @"\r"];
[of_stdout writeLine: OF_LOCALIZED(
@"extracting_file_done",
@"Extracting %[file]... done",
@"file", fileName)];
}
|