aboutsummaryrefslogtreecommitdiff
path: root/shell
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2018-08-05 15:13:08 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2018-08-05 18:11:15 +0200
commitfd6f295a98956b7f495ba09a56528ef9e0d51398 (patch)
tree1c2f6de4e58b0b25ec43923c242d13f684146d2c /shell
parente9dccab9f4bf3311ae50f19e39e7e499b25edca2 (diff)
downloadbusybox-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.c21
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
2400static 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 */
2401static void set_pwd_var(unsigned flag) 2407static 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)
2448static 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) {