diff options
| author | Denis Vlasenko <vda.linux@googlemail.com> | 2007-03-10 17:22:14 +0000 |
|---|---|---|
| committer | Denis Vlasenko <vda.linux@googlemail.com> | 2007-03-10 17:22:14 +0000 |
| commit | be644a81e91bcfacfc8948a39e5184fa6cba663e (patch) | |
| tree | 7158aa9443a54b29464d83305a85c5aafe9a9917 | |
| parent | 49622d784672bf2f7b2fe80589714cdef5adde0c (diff) | |
| download | busybox-w32-be644a81e91bcfacfc8948a39e5184fa6cba663e.tar.gz busybox-w32-be644a81e91bcfacfc8948a39e5184fa6cba663e.tar.bz2 busybox-w32-be644a81e91bcfacfc8948a39e5184fa6cba663e.zip | |
awk: support multiple -v options
| -rw-r--r-- | editors/awk.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/editors/awk.c b/editors/awk.c index d0b03c373..a18025ef0 100644 --- a/editors/awk.c +++ b/editors/awk.c | |||
| @@ -2648,7 +2648,8 @@ int awk_main(int argc, char **argv); | |||
| 2648 | int awk_main(int argc, char **argv) | 2648 | int awk_main(int argc, char **argv) |
| 2649 | { | 2649 | { |
| 2650 | unsigned opt; | 2650 | unsigned opt; |
| 2651 | char *opt_F, *opt_v, *opt_W; | 2651 | char *opt_F, *opt_W; |
| 2652 | llist_t *opt_v = NULL; | ||
| 2652 | int i, j, flen; | 2653 | int i, j, flen; |
| 2653 | var *v; | 2654 | var *v; |
| 2654 | var tv; | 2655 | var tv; |
| @@ -2701,12 +2702,16 @@ int awk_main(int argc, char **argv) | |||
| 2701 | } | 2702 | } |
| 2702 | free(s); | 2703 | free(s); |
| 2703 | } | 2704 | } |
| 2704 | 2705 | opt_complementary = "v::"; | |
| 2705 | opt = getopt32(argc, argv, "F:v:f:W:", &opt_F, &opt_v, &programname, &opt_W); | 2706 | opt = getopt32(argc, argv, "F:v:f:W:", &opt_F, &opt_v, &programname, &opt_W); |
| 2706 | argv += optind; | 2707 | argv += optind; |
| 2707 | argc -= optind; | 2708 | argc -= optind; |
| 2708 | if (opt & 0x1) setvar_s(V[FS], opt_F); // -F | 2709 | if (opt & 0x1) setvar_s(V[FS], opt_F); // -F |
| 2709 | if (opt & 0x2) if (!is_assignment(opt_v)) bb_show_usage(); // -v | 2710 | opt_v = llist_rev(opt_v); |
| 2711 | while (opt_v) { /* -v */ | ||
| 2712 | if (!is_assignment(llist_pop(&opt_v))) | ||
| 2713 | bb_show_usage(); | ||
| 2714 | } | ||
| 2710 | if (opt & 0x4) { // -f | 2715 | if (opt & 0x4) { // -f |
| 2711 | char *s = s; /* die, gcc, die */ | 2716 | char *s = s; /* die, gcc, die */ |
| 2712 | FILE *from_file = afopen(programname, "r"); | 2717 | FILE *from_file = afopen(programname, "r"); |
