version 1.72, 2008/07/05 21:00:38 |
version 1.73, 2008/07/27 13:15:31 |
|
|
#endif /* SMALL */ |
#endif /* SMALL */ |
|
|
int permission(const char *); |
int permission(const char *); |
__dead void usage(int, int); |
__dead void usage(int); |
int docompress(const char *, char *, const struct compressor *, |
int docompress(const char *, char *, const struct compressor *, |
int, struct stat *); |
int, struct stat *); |
int dodecompress(const char *, char *, const struct compressor *, |
int dodecompress(const char *, char *, const struct compressor *, |
|
|
char *p, *infile; |
char *p, *infile; |
char outfile[MAXPATHLEN], _infile[MAXPATHLEN], suffix[16]; |
char outfile[MAXPATHLEN], _infile[MAXPATHLEN], suffix[16]; |
char *nargv[512]; /* some estimate based on ARG_MAX */ |
char *nargv[512]; /* some estimate based on ARG_MAX */ |
int bits, ch, error, i, rc, cflag, oflag, mode; |
int bits, ch, error, i, rc, cflag, oflag; |
static const char *optstr[3] = { |
static const char *optstr[3] = { |
"123456789ab:cdfghlLnNOo:qrS:tvV", |
"123456789ab:cdfghlLnNOo:qrS:tvV", |
"cfhlNno:qrtv", |
"cfhlNno:qrtv", |
"fghqr" |
"fghqr" |
}; |
}; |
|
|
bits = cflag = oflag = mode = 0; |
bits = cflag = oflag = 0; |
storename = -1; |
storename = -1; |
p = __progname; |
p = __progname; |
if (p[0] == 'g') { |
if (p[0] == 'g') { |
|
|
#endif /* SMALL */ |
#endif /* SMALL */ |
|
|
decomp = 0; |
decomp = 0; |
|
pmode = MODE_COMP; |
if (!strcmp(p, "zcat")) { |
if (!strcmp(p, "zcat")) { |
decomp++; |
decomp++; |
cflag = 1; |
cflag = 1; |
mode = MODE_CAT; |
pmode = MODE_CAT; |
} else { |
} else { |
if (p[0] == 'u' && p[1] == 'n') { |
if (p[0] == 'u' && p[1] == 'n') { |
p += 2; |
p += 2; |
decomp++; |
decomp++; |
mode = MODE_DECOMP; |
pmode = MODE_DECOMP; |
} |
} |
|
|
if (strcmp(p, "zip") && |
if (strcmp(p, "zip") && |
|
|
argv = nargv; |
argv = nargv; |
} |
} |
|
|
while ((ch = getopt_long(argc, argv, optstr[mode], longopts, NULL)) != -1) |
while ((ch = getopt_long(argc, argv, optstr[pmode], longopts, NULL)) != -1) |
switch(ch) { |
switch(ch) { |
case '1': |
case '1': |
case '2': |
case '2': |
|
|
break; |
break; |
|
|
case 'h': |
case 'h': |
usage(0, mode); |
usage(0); |
break; |
break; |
default: |
default: |
usage(1, mode); |
usage(1); |
} |
} |
argc -= optind; |
argc -= optind; |
argv += optind; |
argv += optind; |
|
|
} |
} |
|
|
__dead void |
__dead void |
usage(int status, int mode) |
usage(int status) |
{ |
{ |
switch (mode) { |
switch (pmode) { |
case MODE_COMP: |
case MODE_COMP: |
fprintf(stderr, "usage: %s [-123456789cdfghLlNnOqrtVv] " |
fprintf(stderr, "usage: %s [-123456789cdfghLlNnOqrtVv] " |
"[-b bits] [-o filename] [-S suffix]\n" |
"[-b bits] [-o filename] [-S suffix]\n" |