diff options
Diffstat (limited to 'package/busybox/busybox-1.15.0-hush.patch')
-rw-r--r-- | package/busybox/busybox-1.15.0-hush.patch | 100 |
1 files changed, 0 insertions, 100 deletions
diff --git a/package/busybox/busybox-1.15.0-hush.patch b/package/busybox/busybox-1.15.0-hush.patch deleted file mode 100644 index 2cf80647d..000000000 --- a/package/busybox/busybox-1.15.0-hush.patch +++ /dev/null @@ -1,100 +0,0 @@ -diff -urpN busybox-1.15.0/shell/hush.c busybox-1.15.0-hush/shell/hush.c ---- busybox-1.15.0/shell/hush.c 2009-08-21 00:26:14.000000000 +0200 -+++ busybox-1.15.0-hush/shell/hush.c 2009-09-05 20:08:50.000000000 +0200 -@@ -58,7 +58,7 @@ - * TODOs: - * grep for "TODO" and fix (some of them are easy) - * builtins: ulimit -- * special variables (PWD etc) -+ * special variables (done: PWD) - * follow IFS rules more precisely, including update semantics - * export builtin should be special, its arguments are assignments - * and therefore expansion of them should be "one-word" expansion: -@@ -1432,6 +1432,13 @@ static int set_local_var(char *str, int - return 0; - } - -+/* Used at startup and after each cd */ -+static void set_pwd_var(int exp) -+{ -+ set_local_var(xasprintf("PWD=%s", get_cwd(/*force:*/ 1)), -+ /*exp:*/ exp, /*lvl:*/ 0, /*ro:*/ 0); -+} -+ - static int unset_local_var_len(const char *name, int name_len) - { - struct variable *cur; -@@ -1604,6 +1611,9 @@ static const char* setup_prompt_string(i - /* Set up the prompt */ - if (promptmode == 0) { /* PS1 */ - free((char*)G.PS1); -+ /* bash uses $PWD value, even if it is set by user. -+ * It uses current dir only if PWD is unset. -+ * We always use current dir. */ - G.PS1 = xasprintf("%s %c ", get_cwd(0), (geteuid() != 0) ? '$' : '#'); - prompt_str = G.PS1; - } else -@@ -6432,8 +6442,49 @@ int hush_main(int argc, char **argv) - } - e++; - } -+ /* reinstate HUSH_VERSION */ - debug_printf_env("putenv '%s'\n", hush_version_str); -- putenv((char *)hush_version_str); /* reinstate HUSH_VERSION */ -+ putenv((char *)hush_version_str); -+ -+ /* Export PWD */ -+ set_pwd_var(/*exp:*/ 1); -+ /* bash also exports SHLVL and _, -+ * and sets (but doesn't export) the following variables: -+ * BASH=/bin/bash -+ * BASH_VERSINFO=([0]="3" [1]="2" [2]="0" [3]="1" [4]="release" [5]="i386-pc-linux-gnu") -+ * BASH_VERSION='3.2.0(1)-release' -+ * HOSTTYPE=i386 -+ * MACHTYPE=i386-pc-linux-gnu -+ * OSTYPE=linux-gnu -+ * HOSTNAME=<xxxxxxxxxx> -+ * PPID=<NNNNN> -+ * EUID=<NNNNN> -+ * UID=<NNNNN> -+ * GROUPS=() -+ * LINES=<NNN> -+ * COLUMNS=<NNN> -+ * BASH_ARGC=() -+ * BASH_ARGV=() -+ * BASH_LINENO=() -+ * BASH_SOURCE=() -+ * DIRSTACK=() -+ * PIPESTATUS=([0]="0") -+ * HISTFILE=/<xxx>/.bash_history -+ * HISTFILESIZE=500 -+ * HISTSIZE=500 -+ * MAILCHECK=60 -+ * PATH=/usr/gnu/bin:/usr/local/bin:/bin:/usr/bin:. -+ * SHELL=/bin/bash -+ * SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor -+ * TERM=dumb -+ * OPTERR=1 -+ * OPTIND=1 -+ * IFS=$' \t\n' -+ * PS1='\s-\v\$ ' -+ * PS2='> ' -+ * PS4='+ ' -+ */ -+ - #if ENABLE_FEATURE_EDITING - G.line_input_state = new_line_input_t(FOR_SHELL); - #endif -@@ -6816,7 +6867,11 @@ static int FAST_FUNC builtin_cd(char **a - bb_perror_msg("cd: %s", newdir); - return EXIT_FAILURE; - } -- get_cwd(1); -+ /* Read current dir (get_cwd(1) is inside) and set PWD. -+ * Note: do not enforce exporting. If PWD was unset or unexported, -+ * set it again, but do not export. bash does the same. -+ */ -+ set_pwd_var(/*exp:*/ 0); - return EXIT_SUCCESS; - } - |