diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2019-05-19 19:11:21 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2019-05-19 19:11:21 +0200 |
commit | d8740b265a4d4e428b3494089d5a86e1ec90238a (patch) | |
tree | 30a3729451c85156fbdbfdef2463eeb2fef5e00b /shell | |
parent | 76a4e8361a84efca256d4286cf36561c42c14d64 (diff) |
hush: show 's' in $-
function old new delta
expand_one_var 2362 2375 +13
hush_main 1104 1108 +4
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 17/0) Total: 17 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'shell')
-rw-r--r-- | shell/hush.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/shell/hush.c b/shell/hush.c index 4dd940222..4b08232a4 100644 --- a/shell/hush.c +++ b/shell/hush.c @@ -902,6 +902,7 @@ struct globals { #else # define G_x_mode 0 #endif + char opt_s; #if ENABLE_HUSH_INTERACTIVE smallint promptmode; /* 0: PS1, 1: PS2 */ #endif @@ -1008,7 +1009,7 @@ struct globals { int debug_indent; #endif struct sigaction sa; - char optstring_buf[sizeof("eix")]; + char optstring_buf[sizeof("eixs")]; #if BASH_EPOCH_VARS char epoch_buf[sizeof("%lu.nnnnnn") + sizeof(long)*3]; #endif @@ -6413,8 +6414,9 @@ static NOINLINE int expand_one_var(o_string *output, int n, * commands read but are not executed, * so $- can not execute too, 'n' is never seen in $-. */ + if (G.opt_s) + *cp++ = 's'; //TODO: show 'c' if executed via "hush -c 'CMDS'" (bash only, not ash) -//TODO: show 's' if executed via "hush -s ARG1 ARG2", or if there were no args except options (ash does this too) *cp = '\0'; break; } @@ -9958,7 +9960,6 @@ int hush_main(int argc, char **argv) * PS4='+ ' */ - /* Initialize some more globals to non-zero values */ die_func = restore_ttypgrp_and__exit; @@ -10177,6 +10178,7 @@ int hush_main(int argc, char **argv) #endif goto final_return; } + G.opt_s = 1; /* Up to here, shell was non-interactive. Now it may become one. * NB: don't forget to (re)run install_special_sighandlers() as needed. |