diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2018-08-05 15:13:08 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2018-08-05 18:11:15 +0200 |
commit | fd6f295a98956b7f495ba09a56528ef9e0d51398 (patch) | |
tree | 1c2f6de4e58b0b25ec43923c242d13f684146d2c /shell | |
parent | e9dccab9f4bf3311ae50f19e39e7e499b25edca2 (diff) | |
download | busybox-w32-fd6f295a98956b7f495ba09a56528ef9e0d51398.tar.gz busybox-w32-fd6f295a98956b7f495ba09a56528ef9e0d51398.tar.bz2 busybox-w32-fd6f295a98956b7f495ba09a56528ef9e0d51398.zip |
hush: set IFS to default on startup
function old new delta
hush_main 1095 1110 +15
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'shell')
-rw-r--r-- | shell/hush.c | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/shell/hush.c b/shell/hush.c index c4b124825..4c8814a01 100644 --- a/shell/hush.c +++ b/shell/hush.c | |||
@@ -2397,6 +2397,12 @@ static int set_local_var(char *str, unsigned flags) | |||
2397 | return 0; | 2397 | return 0; |
2398 | } | 2398 | } |
2399 | 2399 | ||
2400 | static void FAST_FUNC set_local_var_from_halves(const char *name, const char *val) | ||
2401 | { | ||
2402 | char *var = xasprintf("%s=%s", name, val); | ||
2403 | set_local_var(var, /*flag:*/ 0); | ||
2404 | } | ||
2405 | |||
2400 | /* Used at startup and after each cd */ | 2406 | /* Used at startup and after each cd */ |
2401 | static void set_pwd_var(unsigned flag) | 2407 | static void set_pwd_var(unsigned flag) |
2402 | { | 2408 | { |
@@ -2443,15 +2449,6 @@ static int unset_local_var(const char *name) | |||
2443 | } | 2449 | } |
2444 | #endif | 2450 | #endif |
2445 | 2451 | ||
2446 | #if BASH_HOSTNAME_VAR || ENABLE_FEATURE_SH_MATH || ENABLE_HUSH_READ || ENABLE_HUSH_GETOPTS \ | ||
2447 | || (ENABLE_HUSH_INTERACTIVE && ENABLE_FEATURE_EDITING_FANCY_PROMPT) | ||
2448 | static void FAST_FUNC set_local_var_from_halves(const char *name, const char *val) | ||
2449 | { | ||
2450 | char *var = xasprintf("%s=%s", name, val); | ||
2451 | set_local_var(var, /*flag:*/ 0); | ||
2452 | } | ||
2453 | #endif | ||
2454 | |||
2455 | 2452 | ||
2456 | /* | 2453 | /* |
2457 | * Helpers for "var1=val1 var2=val2 cmd" feature | 2454 | * Helpers for "var1=val1 var2=val2 cmd" feature |
@@ -9854,6 +9851,10 @@ int hush_main(int argc, char **argv) | |||
9854 | uname(&uts); | 9851 | uname(&uts); |
9855 | set_local_var_from_halves("HOSTNAME", uts.nodename); | 9852 | set_local_var_from_halves("HOSTNAME", uts.nodename); |
9856 | } | 9853 | } |
9854 | #endif | ||
9855 | /* IFS is not inherited from the parent environment */ | ||
9856 | set_local_var_from_halves("IFS", defifs); | ||
9857 | |||
9857 | /* bash also exports SHLVL and _, | 9858 | /* bash also exports SHLVL and _, |
9858 | * and sets (but doesn't export) the following variables: | 9859 | * and sets (but doesn't export) the following variables: |
9859 | * BASH=/bin/bash | 9860 | * BASH=/bin/bash |
@@ -9884,10 +9885,8 @@ int hush_main(int argc, char **argv) | |||
9884 | * TERM=dumb | 9885 | * TERM=dumb |
9885 | * OPTERR=1 | 9886 | * OPTERR=1 |
9886 | * OPTIND=1 | 9887 | * OPTIND=1 |
9887 | * IFS=$' \t\n' | ||
9888 | * PS4='+ ' | 9888 | * PS4='+ ' |
9889 | */ | 9889 | */ |
9890 | #endif | ||
9891 | 9890 | ||
9892 | #if ENABLE_HUSH_LINENO_VAR | 9891 | #if ENABLE_HUSH_LINENO_VAR |
9893 | if (ENABLE_HUSH_LINENO_VAR) { | 9892 | if (ENABLE_HUSH_LINENO_VAR) { |