mirror of
https://github.com/sheumann/hush.git
synced 2024-10-05 12:54:51 +00:00
awk: fix a bug in argc counting in recent change
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
2635369a92
commit
bd0e221620
@ -3204,15 +3204,17 @@ int awk_main(int argc, char **argv)
|
|||||||
opt = getopt32(argv, OPTSTR_AWK, &opt_F, &list_v, &list_f, IF_FEATURE_AWK_GNU_EXTENSIONS(&list_e,) NULL);
|
opt = getopt32(argv, OPTSTR_AWK, &opt_F, &list_v, &list_f, IF_FEATURE_AWK_GNU_EXTENSIONS(&list_e,) NULL);
|
||||||
argv += optind;
|
argv += optind;
|
||||||
argc -= optind;
|
argc -= optind;
|
||||||
if (opt & OPT_F) { /* -F */
|
if (opt & OPT_W)
|
||||||
|
bb_error_msg("warning: option -W is ignored");
|
||||||
|
if (opt & OPT_F) {
|
||||||
unescape_string_in_place(opt_F);
|
unescape_string_in_place(opt_F);
|
||||||
setvar_s(intvar[FS], opt_F);
|
setvar_s(intvar[FS], opt_F);
|
||||||
}
|
}
|
||||||
while (list_v) { /* -v */
|
while (list_v) {
|
||||||
if (!is_assignment(llist_pop(&list_v)))
|
if (!is_assignment(llist_pop(&list_v)))
|
||||||
bb_show_usage();
|
bb_show_usage();
|
||||||
}
|
}
|
||||||
while (list_f) { /* -f */
|
while (list_f) {
|
||||||
char *s = NULL;
|
char *s = NULL;
|
||||||
FILE *from_file;
|
FILE *from_file;
|
||||||
|
|
||||||
@ -3230,7 +3232,7 @@ int awk_main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
g_progname = "cmd. line";
|
g_progname = "cmd. line";
|
||||||
#if ENABLE_FEATURE_AWK_GNU_EXTENSIONS
|
#if ENABLE_FEATURE_AWK_GNU_EXTENSIONS
|
||||||
while (list_e) { /* -e */
|
while (list_e) {
|
||||||
parse_program(llist_pop(&list_e));
|
parse_program(llist_pop(&list_e));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -3238,13 +3240,11 @@ int awk_main(int argc, char **argv)
|
|||||||
if (!*argv)
|
if (!*argv)
|
||||||
bb_show_usage();
|
bb_show_usage();
|
||||||
parse_program(*argv++);
|
parse_program(*argv++);
|
||||||
argc++;
|
argc--;
|
||||||
}
|
}
|
||||||
if (opt & OPT_W) // -W
|
|
||||||
bb_error_msg("warning: option -W is ignored");
|
|
||||||
|
|
||||||
/* fill in ARGV array */
|
/* fill in ARGV array */
|
||||||
setvar_i(intvar[ARGC], argc);
|
setvar_i(intvar[ARGC], argc + 1);
|
||||||
setari_u(intvar[ARGV], 0, "awk");
|
setari_u(intvar[ARGV], 0, "awk");
|
||||||
i = 0;
|
i = 0;
|
||||||
while (*argv)
|
while (*argv)
|
||||||
|
@ -275,10 +275,22 @@ testing "awk large integer" \
|
|||||||
"" ""
|
"" ""
|
||||||
|
|
||||||
testing "awk length(array)" \
|
testing "awk length(array)" \
|
||||||
"awk 'BEGIN{ A[1]=2; A["qwe"]="asd"; print length(A)}'" \
|
"awk 'BEGIN{ A[1]=2; A[\"qwe\"]=\"asd\"; print length(A)}'" \
|
||||||
"2\n" \
|
"2\n" \
|
||||||
"" ""
|
"" ""
|
||||||
|
|
||||||
|
testing "awk -f and ARGC" \
|
||||||
|
"awk -f - input" \
|
||||||
|
"re\n2\n" \
|
||||||
|
"do re mi\n" \
|
||||||
|
'{print $2; print ARGC;}' \
|
||||||
|
|
||||||
|
testing "awk -e and ARGC" \
|
||||||
|
"awk -e '{print \$2; print ARGC;}' input" \
|
||||||
|
"re\n2\n" \
|
||||||
|
"do re mi\n" \
|
||||||
|
"" \
|
||||||
|
|
||||||
# testing "description" "command" "result" "infile" "stdin"
|
# testing "description" "command" "result" "infile" "stdin"
|
||||||
|
|
||||||
exit $FAILCOUNT
|
exit $FAILCOUNT
|
||||||
|
Loading…
Reference in New Issue
Block a user