diff options
Diffstat (limited to 'shell/hush.c')
-rw-r--r-- | shell/hush.c | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/shell/hush.c b/shell/hush.c index 9fead37da..5eb6fa396 100644 --- a/shell/hush.c +++ b/shell/hush.c @@ -1027,7 +1027,7 @@ struct globals { struct sigaction sa; char optstring_buf[sizeof("eixcs")]; #if BASH_EPOCH_VARS - char epoch_buf[sizeof("%lu.nnnnnn") + sizeof(long)*3]; + char epoch_buf[sizeof("%llu.nnnnnn") + sizeof(long long)*3]; #endif #if ENABLE_FEATURE_EDITING char user_input_buf[CONFIG_FEATURE_EDITING_MAX_LEN]; @@ -2277,13 +2277,13 @@ static const char* FAST_FUNC get_local_var_value(const char *name) { const char *fmt = NULL; if (strcmp(name, "EPOCHSECONDS") == 0) - fmt = "%lu"; + fmt = "%llu"; else if (strcmp(name, "EPOCHREALTIME") == 0) - fmt = "%lu.%06u"; + fmt = "%llu.%06u"; if (fmt) { struct timeval tv; - gettimeofday(&tv, NULL); - sprintf(G.epoch_buf, fmt, (unsigned long)tv.tv_sec, + xgettimeofday(&tv); + sprintf(G.epoch_buf, fmt, (unsigned long long)tv.tv_sec, (unsigned)tv.tv_usec); return G.epoch_buf; } @@ -2692,7 +2692,7 @@ static int get_user_input(struct in_str *i) * Without check_and_run_traps, handler never runs. */ check_and_run_traps(); - fputs(prompt_str, stdout); + fputs_stdout(prompt_str); fflush_all(); } r = hfgetc(i->file); @@ -10163,7 +10163,8 @@ int hush_main(int argc, char **argv) /* http://www.opengroup.org/onlinepubs/9699919799/utilities/sh.html */ flags = (argv[0] && argv[0][0] == '-') ? OPT_login : 0; while (1) { - int opt = getopt(argc, argv, "+cexinsl" + int opt = getopt(argc, argv, "+" /* stop at 1st non-option */ + "cexinsl" #if !BB_MMU "<:$:R:V:" # if ENABLE_HUSH_FUNCTIONS @@ -10255,12 +10256,13 @@ int hush_main(int argc, char **argv) } # endif #endif - case 'n': - case 'x': - case 'e': + /*case '?': invalid option encountered (set_mode('?') will fail) */ + /*case 'n':*/ + /*case 'x':*/ + /*case 'e':*/ + default: if (set_mode(1, opt, NULL) == 0) /* no error */ break; - default: bb_show_usage(); } } /* option parsing loop */ |