awk: getopt_ulflags'isation

This commit is contained in:
Denis Vlasenko 2006-09-22 09:02:30 +00:00
parent 750fc6d7bb
commit 099efbf99e

View File

@ -2605,6 +2605,8 @@ static rstream *next_input_file(void)
int awk_main(int argc, char **argv)
{
unsigned long opt;
char *opt_F, *opt_v, *opt_W;
char *s, *s1;
int i, j, c, flen;
var *v;
@ -2660,18 +2662,12 @@ keep_going:
free(s);
}
while((c = getopt(argc, argv, "F:v:f:W:")) != EOF) {
switch (c) {
case 'F':
setvar_s(V[FS], optarg);
break;
case 'v':
if (! is_assignment(optarg))
bb_show_usage();
break;
case 'f':
opt = bb_getopt_ulflags(argc, argv, "F:v:f:W:", &opt_F, &opt_v, &programname, &opt_W);
if (opt & 0x1) setvar_s(V[FS], opt_F); // -F
if (opt & 0x2) if (!is_assignment(opt_v)) bb_show_usage(); // -v
if (opt & 0x4) { // -f
from_file = TRUE;
F = afopen(programname = optarg, "r");
F = afopen(programname, "r");
s = NULL;
/* one byte is reserved for some trick in next_token */
if (fseek(F, 0, SEEK_END) == 0) {
@ -2689,15 +2685,9 @@ keep_going:
fclose(F);
parse_program(s+1);
free(s);
break;
case 'W':
bb_error_msg("Warning: unrecognized option '-W %s' ignored", optarg);
break;
default:
bb_show_usage();
}
}
if (opt & 0x8) // -W
bb_error_msg("Warning: unrecognized option '-W %s' ignored", opt_W);
if (!from_file) {
if (argc == optind)