awk: getopt_ulflags'isation
This commit was genuinely broken at the time (not related to our build system): scripts/config/mkconfigs.c (2005-08-01 - 2006-10-05 arasi) uretilen bbconfigopts.h icine .config satirlarini kacissiz, ham newline'larla gömüyordu - gecerli C degildi, busybox'un kendi bb_mkdep araci bile parse edemiyordu (7d219aab7 ile duzeltildi, mkconfigs shell scripte cevrildi)
No binary (build failed)
—
(log yok)
| @@ -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,49 +2662,37 @@ 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': |
| - | from_file = TRUE; |
| - | F = afopen(programname = optarg, "r"); |
| - | s = NULL; |
| - | /* one byte is reserved for some trick in next_token */ |
| - | if (fseek(F, 0, SEEK_END) == 0) { |
| - | flen = ftell(F); |
| - | s = (char *)xmalloc(flen+4); |
| - | fseek(F, 0, SEEK_SET); |
| - | i = 1 + fread(s+1, 1, flen, F); |
| - | } else { |
| - | for (i=j=1; j>0; i+=j) { |
| - | s = (char *)xrealloc(s, i+4096); |
| - | j = fread(s+i, 1, 4094, F); |
| - | } |
| - | } |
| - | s[i] = '\0'; |
| - | 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(); |
| + | 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, "r"); |
| + | s = NULL; |
| + | /* one byte is reserved for some trick in next_token */ |
| + | if (fseek(F, 0, SEEK_END) == 0) { |
| + | flen = ftell(F); |
| + | s = (char *)xmalloc(flen+4); |
| + | fseek(F, 0, SEEK_SET); |
| + | i = 1 + fread(s+1, 1, flen, F); |
| + | } else { |
| + | for (i=j=1; j>0; i+=j) { |
| + | s = (char *)xrealloc(s, i+4096); |
| + | j = fread(s+i, 1, 4094, F); |
| + | } |
| } | |
| + | s[i] = '\0'; |
| + | fclose(F); |
| + | parse_program(s+1); |
| + | free(s); |
| } | |
| + | if (opt & 0x8) // -W |
| + | bb_error_msg("Warning: unrecognized option '-W %s' ignored", opt_W); |
| if (!from_file) { | |
| if (argc == optind) | |
| bb_show_usage(); | |
| - | programname="cmd. line"; |
| + | programname = "cmd. line"; |
| parse_program(argv[optind++]); | |
| } | |