︙ | | | ︙ | |
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
#import "OFArray.h"
#import "OFFile.h"
#import "OFFileManager.h"
#import "OFLocale.h"
#import "OFOptionsParser.h"
#import "OFSandbox.h"
#import "OFStdIOStream.h"
#import "OFURL.h"
#import "OFArc.h"
#import "GZIPArchive.h"
#import "LHAArchive.h"
#import "TarArchive.h"
#import "ZIPArchive.h"
|
|
|
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
#import "OFArray.h"
#import "OFFile.h"
#import "OFFileManager.h"
#import "OFLocale.h"
#import "OFOptionsParser.h"
#import "OFSandbox.h"
#import "OFStdIOStream.h"
#import "OFURI.h"
#import "OFArc.h"
#import "GZIPArchive.h"
#import "LHAArchive.h"
#import "TarArchive.h"
#import "ZIPArchive.h"
|
︙ | | | ︙ | |
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
|
/* Dropped after parsing options */
sandbox.allowsUnveil = true;
[OFApplication of_activateSandbox: sandbox];
#endif
#ifndef OF_AMIGAOS
[OFLocale addLanguageDirectory: @LANGUAGE_DIR];
#else
[OFLocale addLanguageDirectory: @"PROGDIR:/share/ofarc/lang"];
#endif
optionsParser = [OFOptionsParser parserWithOptions: options];
while ((option = [optionsParser nextOption]) != '\0') {
switch (option) {
case 'f':
if (_overwrite < 0)
|
|
>
|
|
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
|
/* Dropped after parsing options */
sandbox.allowsUnveil = true;
[OFApplication of_activateSandbox: sandbox];
#endif
#ifndef OF_AMIGAOS
[OFLocale addLocalizationDirectory: @LOCALIZATION_DIR];
#else
[OFLocale addLocalizationDirectory:
@"PROGDIR:/share/ofarc/localization"];
#endif
optionsParser = [OFOptionsParser parserWithOptions: options];
while ((option = [optionsParser nextOption]) != '\0') {
switch (option) {
case 'f':
if (_overwrite < 0)
|
︙ | | | ︙ | |
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
|
switch (mode) {
case 'a':
case 'c':
if (remainingArguments.count < 1)
help(OFStdErr, false, 1);
files = [remainingArguments objectsInRange:
OFRangeMake(1, remainingArguments.count - 1)];
#ifdef OF_HAVE_SANDBOX
if (![remainingArguments.firstObject isEqual: @"-"])
[sandbox unveilPath: remainingArguments.firstObject
permissions: (mode == 'a' ? @"rwc" : @"wc")];
for (OFString *path in files)
|
|
|
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
|
switch (mode) {
case 'a':
case 'c':
if (remainingArguments.count < 1)
help(OFStdErr, false, 1);
files = [remainingArguments objectsInRange:
OFMakeRange(1, remainingArguments.count - 1)];
#ifdef OF_HAVE_SANDBOX
if (![remainingArguments.firstObject isEqual: @"-"])
[sandbox unveilPath: remainingArguments.firstObject
permissions: (mode == 'a' ? @"rwc" : @"wc")];
for (OFString *path in files)
|
︙ | | | ︙ | |
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
|
permissions: @"r"];
sandbox.allowsUnveil = false;
[OFApplication of_activateSandbox: sandbox];
#endif
files = [remainingArguments objectsInRange:
OFRangeMake(1, remainingArguments.count - 1)];
archive = [self
openArchiveWithPath: remainingArguments.firstObject
type: type
mode: mode
encoding: encoding];
[archive printFiles: files];
break;
case 'x':
if (remainingArguments.count < 1)
help(OFStdErr, false, 1);
files = [remainingArguments objectsInRange:
OFRangeMake(1, remainingArguments.count - 1)];
#ifdef OF_HAVE_SANDBOX
if (![remainingArguments.firstObject isEqual: @"-"])
[sandbox unveilPath: remainingArguments.firstObject
permissions: @"r"];
if (files.count > 0)
|
|
|
|
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
|
permissions: @"r"];
sandbox.allowsUnveil = false;
[OFApplication of_activateSandbox: sandbox];
#endif
files = [remainingArguments objectsInRange:
OFMakeRange(1, remainingArguments.count - 1)];
archive = [self
openArchiveWithPath: remainingArguments.firstObject
type: type
mode: mode
encoding: encoding];
[archive printFiles: files];
break;
case 'x':
if (remainingArguments.count < 1)
help(OFStdErr, false, 1);
files = [remainingArguments objectsInRange:
OFMakeRange(1, remainingArguments.count - 1)];
#ifdef OF_HAVE_SANDBOX
if (![remainingArguments.firstObject isEqual: @"-"])
[sandbox unveilPath: remainingArguments.firstObject
permissions: @"r"];
if (files.count > 0)
|
︙ | | | ︙ | |
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
|
OFString *error = [OFString
stringWithCString: strerror(e.errNo)
encoding: [OFLocale encoding]];
[OFStdErr writeString: @"\r"];
[OFStdErr writeLine: OF_LOCALIZED(
@"failed_to_create_directory",
@"Failed to create directory %[dir]: %[error]",
@"dir", e.URL.fileSystemRepresentation,
@"error", error)];
_exitStatus = 1;
} @catch (OFOpenItemFailedException *e) {
OFString *error = [OFString
stringWithCString: strerror(e.errNo)
encoding: [OFLocale encoding]];
[OFStdErr writeString: @"\r"];
|
|
|
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
|
OFString *error = [OFString
stringWithCString: strerror(e.errNo)
encoding: [OFLocale encoding]];
[OFStdErr writeString: @"\r"];
[OFStdErr writeLine: OF_LOCALIZED(
@"failed_to_create_directory",
@"Failed to create directory %[dir]: %[error]",
@"dir", e.URI.fileSystemRepresentation,
@"error", error)];
_exitStatus = 1;
} @catch (OFOpenItemFailedException *e) {
OFString *error = [OFString
stringWithCString: strerror(e.errNo)
encoding: [OFLocale encoding]];
[OFStdErr writeString: @"\r"];
|
︙ | | | ︙ | |