55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
@"Usage: %[prog] -[acCfhlnpqtvx] archive.zip [file1 file2 ...]",
@"prog", [OFApplication programName])];
if (full) {
[stream writeString: @"\n"];
[stream writeLine: OF_LOCALIZED(@"full_usage",
@"Options:\n"
@" -a --append Append to archive\n"
@" -c --create Create archive\n"
@" -C --directory= Extract into the specified "
@"directory\n"
@" -E --encoding= The encoding used by the archive\n"
@" (only tar, lha and zoo files)\n"
@" -f --force Force / overwrite files\n"
@" -h --help Show this help\n"
@" --iri Use an IRI to access the archive\n"
@" -l --list List all files in the archive\n"
@" -n --no-clobber Never overwrite files\n"
@" -p --print Print one or more files from the "
@"archive\n"
@" -q --quiet Quiet mode (no output, except "
@"errors)\n"
@" -t --type= Archive type (gz, lha, tar, tgz, "
@"zip, zoo)\n"
@" -v --verbose Verbose output for file list\n"
@" -x --extract Extract files")];
}
[OFApplication terminateWithStatus: status];
}
static void
mutuallyExclusiveError(OFUnichar shortOption1, OFString *longOption1,
|
|
>
>
|
|
|
>
|
>
|
|
|
>
|
>
|
|
|
|
|
|
|
|
>
|
|
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
@"Usage: %[prog] -[acCfhlnpqtvx] archive.zip [file1 file2 ...]",
@"prog", [OFApplication programName])];
if (full) {
[stream writeString: @"\n"];
[stream writeLine: OF_LOCALIZED(@"full_usage",
@"Options:\n"
@" -a --append Append to archive\n"
@" --archive-comment= Archive comment to use when "
@"creating or appending\n"
@" -c --create Create archive\n"
@" -C --directory= Extract into the specified "
@"directory\n"
@" -E --encoding= The encoding used by the "
@"archive\n"
@" (only tar, lha and zoo files)"
@"\n"
@" -f --force Force / overwrite files\n"
@" -h --help Show this help\n"
@" --iri Use an IRI to access the "
@"archive\n"
@" -l --list List all files in the archive"
@"\n"
@" -n --no-clobber Never overwrite files\n"
@" -p --print Print one or more files from "
@"the archive\n"
@" -q --quiet Quiet mode (no output, "
@"except errors)\n"
@" -t --type= Archive type (gz, lha, tar, "
@"tgz, zip, zoo)\n"
@" -v --verbose Verbose output for file list"
@"\n"
@" -x --extract Extract files")];
}
[OFApplication terminateWithStatus: status];
}
static void
mutuallyExclusiveError(OFUnichar shortOption1, OFString *longOption1,
|
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
|
[OFStdErr writeLine: OF_LOCALIZED(
@"writing_not_supported",
@"Writing archives of type %[type] is not (yet) supported!",
@"type", type)];
}
static void
addFiles(id <Archive> archive, OFArray OF_GENERIC(OFString *) *files)
{
OFMutableArray *expandedFiles =
[OFMutableArray arrayWithCapacity: files.count];
OFFileManager *fileManager = [OFFileManager defaultManager];
for (OFString *file in files) {
OFFileAttributes attributes =
[fileManager attributesOfItemAtPath: file];
if ([attributes.fileType isEqual: OFFileTypeDirectory])
[expandedFiles addObjectsFromArray:
[fileManager subpathsOfDirectoryAtPath: file]];
else
[expandedFiles addObject: file];
}
[archive addFiles: expandedFiles];
}
@implementation OFArc
- (void)applicationDidFinishLaunching: (OFNotification *)notification
{
OFString *outputDir, *encodingString, *type;
bool isIRI;
const OFOptionsParserOption options[] = {
{ 'a', @"append", 0, NULL, NULL },
{ 'c', @"create", 0, NULL, NULL },
{ 'C', @"directory", 1, NULL, &outputDir },
{ 'E', @"encoding", 1, NULL, &encodingString },
{ 'f', @"force", 0, NULL, NULL },
{ 'h', @"help", 0, NULL, NULL },
{ 0, @"iri", 0, &isIRI, NULL },
{ 'l', @"list", 0, NULL, NULL },
|
|
>
>
>
>
>
>
>
|
|
>
|
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
|
[OFStdErr writeLine: OF_LOCALIZED(
@"writing_not_supported",
@"Writing archives of type %[type] is not (yet) supported!",
@"type", type)];
}
static void
addFiles(id <Archive> archive, OFArray OF_GENERIC(OFString *) *files,
OFString *archiveComment)
{
OFMutableArray *expandedFiles =
[OFMutableArray arrayWithCapacity: files.count];
OFFileManager *fileManager = [OFFileManager defaultManager];
for (OFString *file in files) {
OFFileAttributes attributes =
[fileManager attributesOfItemAtPath: file];
if ([attributes.fileType isEqual: OFFileTypeDirectory])
[expandedFiles addObjectsFromArray:
[fileManager subpathsOfDirectoryAtPath: file]];
else
[expandedFiles addObject: file];
}
if (expandedFiles.count < 1) {
[OFStdErr writeLine: OF_LOCALIZED(@"add_no_file_specified",
@"Need one or more files to add!")];
[OFApplication terminateWithStatus: 1];
}
[archive addFiles: expandedFiles archiveComment: archiveComment];
}
@implementation OFArc
- (void)applicationDidFinishLaunching: (OFNotification *)notification
{
OFString *archiveComment, *outputDir, *encodingString, *type;
bool isIRI;
const OFOptionsParserOption options[] = {
{ 'a', @"append", 0, NULL, NULL },
{ 0, @"archive-comment", 1, NULL, &archiveComment },
{ 'c', @"create", 0, NULL, NULL },
{ 'C', @"directory", 1, NULL, &outputDir },
{ 'E', @"encoding", 1, NULL, &encodingString },
{ 'f', @"force", 0, NULL, NULL },
{ 'h', @"help", 0, NULL, NULL },
{ 0, @"iri", 0, &isIRI, NULL },
{ 'l', @"list", 0, NULL, NULL },
|