diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2017-07-06 20:12:44 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2017-07-06 20:12:44 +0200 |
commit | e59591a364e43bccb6fd4d373d3ed86fc77dffb7 (patch) | |
tree | 6a298288c291b0ce3310e15807a175c025f36c1a /shell/hush.c | |
parent | 74d20e637982b412611dbbf32b633857b1c73539 (diff) | |
download | busybox-w32-e59591a364e43bccb6fd4d373d3ed86fc77dffb7.tar.gz busybox-w32-e59591a364e43bccb6fd4d373d3ed86fc77dffb7.tar.bz2 busybox-w32-e59591a364e43bccb6fd4d373d3ed86fc77dffb7.zip |
hush: Print error messages on shift -1
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'shell/hush.c')
-rw-r--r-- | shell/hush.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/shell/hush.c b/shell/hush.c index f6b50dec6..0ade2ccca 100644 --- a/shell/hush.c +++ b/shell/hush.c | |||
@@ -9377,7 +9377,18 @@ static int FAST_FUNC builtin_shift(char **argv) | |||
9377 | int n = 1; | 9377 | int n = 1; |
9378 | argv = skip_dash_dash(argv); | 9378 | argv = skip_dash_dash(argv); |
9379 | if (argv[0]) { | 9379 | if (argv[0]) { |
9380 | n = atoi(argv[0]); | 9380 | n = bb_strtou(argv[0], NULL, 10); |
9381 | if (errno || n < 0) { | ||
9382 | /* shared string with ash.c */ | ||
9383 | bb_error_msg("Illegal number: %s", argv[0]); | ||
9384 | /* | ||
9385 | * ash aborts in this case. | ||
9386 | * bash prints error message and set $? to 1. | ||
9387 | * Interestingly, for "shift 99999" bash does not | ||
9388 | * print error message, but does set $? to 1 | ||
9389 | * (and does no shifting at all). | ||
9390 | */ | ||
9391 | } | ||
9381 | } | 9392 | } |
9382 | if (n >= 0 && n < G.global_argc) { | 9393 | if (n >= 0 && n < G.global_argc) { |
9383 | if (G_global_args_malloced) { | 9394 | if (G_global_args_malloced) { |