awk: support multiple -v options

This commit is contained in:
Denis Vlasenko 2007-03-10 17:22:14 +00:00
parent 49622d7846
commit be644a81e9

View File

@ -2648,7 +2648,8 @@ int awk_main(int argc, char **argv);
int awk_main(int argc, char **argv) int awk_main(int argc, char **argv)
{ {
unsigned opt; unsigned opt;
char *opt_F, *opt_v, *opt_W; char *opt_F, *opt_W;
llist_t *opt_v = NULL;
int i, j, flen; int i, j, flen;
var *v; var *v;
var tv; var tv;
@ -2701,12 +2702,16 @@ int awk_main(int argc, char **argv)
} }
free(s); free(s);
} }
opt_complementary = "v::";
opt = getopt32(argc, argv, "F:v:f:W:", &opt_F, &opt_v, &programname, &opt_W); opt = getopt32(argc, argv, "F:v:f:W:", &opt_F, &opt_v, &programname, &opt_W);
argv += optind; argv += optind;
argc -= optind; argc -= optind;
if (opt & 0x1) setvar_s(V[FS], opt_F); // -F if (opt & 0x1) setvar_s(V[FS], opt_F); // -F
if (opt & 0x2) if (!is_assignment(opt_v)) bb_show_usage(); // -v opt_v = llist_rev(opt_v);
while (opt_v) { /* -v */
if (!is_assignment(llist_pop(&opt_v)))
bb_show_usage();
}
if (opt & 0x4) { // -f if (opt & 0x4) { // -f
char *s = s; /* die, gcc, die */ char *s = s; /* die, gcc, die */
FILE *from_file = afopen(programname, "r"); FILE *from_file = afopen(programname, "r");