aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2001-01-05 19:34:52 +0000
committerEric Andersen <andersen@codepoet.org>2001-01-05 19:34:52 +0000
commitb0970d4fede16b6c1186b677c6d7d9e4652e459a (patch)
tree7415bf3a17f71b1ef86677b7ac0a06886b7905c5
parenteb60d8bcd1ea8f35af23b078e677350b86c1ee8d (diff)
downloadbusybox-w32-b0970d4fede16b6c1186b677c6d7d9e4652e459a.tar.gz
busybox-w32-b0970d4fede16b6c1186b677c6d7d9e4652e459a.tar.bz2
busybox-w32-b0970d4fede16b6c1186b677c6d7d9e4652e459a.zip
Patch from Larry Doolittle to set values to static variables that live in the
bss at runtime, since sh.c can call sh.c, which causes these variables to not be set to their defaults as god intended. -Erik
-rw-r--r--lash.c17
-rw-r--r--sh.c17
-rw-r--r--shell/lash.c17
3 files changed, 45 insertions, 6 deletions
diff --git a/lash.c b/lash.c
index 3d54b439e..c756a2749 100644
--- a/lash.c
+++ b/lash.c
@@ -73,7 +73,7 @@ static const unsigned int IF_TRUE_CONTEXT=0x2;
73static const unsigned int IF_FALSE_CONTEXT=0x4; 73static const unsigned int IF_FALSE_CONTEXT=0x4;
74static const unsigned int THEN_EXP_CONTEXT=0x8; 74static const unsigned int THEN_EXP_CONTEXT=0x8;
75static const unsigned int ELSE_EXP_CONTEXT=0x10; 75static const unsigned int ELSE_EXP_CONTEXT=0x10;
76unsigned int shell_context = 0; 76unsigned int shell_context;
77 77
78 78
79 79
@@ -185,7 +185,7 @@ static struct built_in_command bltins_forking[] = {
185}; 185};
186 186
187static char *cwd; 187static char *cwd;
188static char *local_pending_command = NULL; 188static char *local_pending_command;
189static struct jobset job_list = { NULL, NULL }; 189static struct jobset job_list = { NULL, NULL };
190static int argc; 190static int argc;
191static char **argv; 191static char **argv;
@@ -1629,6 +1629,19 @@ int shell_main(int argc_l, char **argv_l)
1629 argc = argc_l; 1629 argc = argc_l;
1630 argv = argv_l; 1630 argv = argv_l;
1631 1631
1632 shell_context = 0;
1633 cwd=NULL;
1634#ifdef BB_FEATURE_STANDALONE_SHELL
1635 /* These variables need re-initializing when recursing */
1636 local_pending_command = NULL;
1637 job_list.head = NULL;
1638 job_list.fg = NULL;
1639#ifdef BB_FEATURE_SH_ENVIRONMENT
1640 last_bg_pid=-1;
1641 last_return_code=-1;
1642 show_x_trace=FALSE;
1643#endif
1644#endif
1632 1645
1633 if (argv[0] && argv[0][0] == '-') { 1646 if (argv[0] && argv[0][0] == '-') {
1634 FILE *input; 1647 FILE *input;
diff --git a/sh.c b/sh.c
index 3d54b439e..c756a2749 100644
--- a/sh.c
+++ b/sh.c
@@ -73,7 +73,7 @@ static const unsigned int IF_TRUE_CONTEXT=0x2;
73static const unsigned int IF_FALSE_CONTEXT=0x4; 73static const unsigned int IF_FALSE_CONTEXT=0x4;
74static const unsigned int THEN_EXP_CONTEXT=0x8; 74static const unsigned int THEN_EXP_CONTEXT=0x8;
75static const unsigned int ELSE_EXP_CONTEXT=0x10; 75static const unsigned int ELSE_EXP_CONTEXT=0x10;
76unsigned int shell_context = 0; 76unsigned int shell_context;
77 77
78 78
79 79
@@ -185,7 +185,7 @@ static struct built_in_command bltins_forking[] = {
185}; 185};
186 186
187static char *cwd; 187static char *cwd;
188static char *local_pending_command = NULL; 188static char *local_pending_command;
189static struct jobset job_list = { NULL, NULL }; 189static struct jobset job_list = { NULL, NULL };
190static int argc; 190static int argc;
191static char **argv; 191static char **argv;
@@ -1629,6 +1629,19 @@ int shell_main(int argc_l, char **argv_l)
1629 argc = argc_l; 1629 argc = argc_l;
1630 argv = argv_l; 1630 argv = argv_l;
1631 1631
1632 shell_context = 0;
1633 cwd=NULL;
1634#ifdef BB_FEATURE_STANDALONE_SHELL
1635 /* These variables need re-initializing when recursing */
1636 local_pending_command = NULL;
1637 job_list.head = NULL;
1638 job_list.fg = NULL;
1639#ifdef BB_FEATURE_SH_ENVIRONMENT
1640 last_bg_pid=-1;
1641 last_return_code=-1;
1642 show_x_trace=FALSE;
1643#endif
1644#endif
1632 1645
1633 if (argv[0] && argv[0][0] == '-') { 1646 if (argv[0] && argv[0][0] == '-') {
1634 FILE *input; 1647 FILE *input;
diff --git a/shell/lash.c b/shell/lash.c
index 3d54b439e..c756a2749 100644
--- a/shell/lash.c
+++ b/shell/lash.c
@@ -73,7 +73,7 @@ static const unsigned int IF_TRUE_CONTEXT=0x2;
73static const unsigned int IF_FALSE_CONTEXT=0x4; 73static const unsigned int IF_FALSE_CONTEXT=0x4;
74static const unsigned int THEN_EXP_CONTEXT=0x8; 74static const unsigned int THEN_EXP_CONTEXT=0x8;
75static const unsigned int ELSE_EXP_CONTEXT=0x10; 75static const unsigned int ELSE_EXP_CONTEXT=0x10;
76unsigned int shell_context = 0; 76unsigned int shell_context;
77 77
78 78
79 79
@@ -185,7 +185,7 @@ static struct built_in_command bltins_forking[] = {
185}; 185};
186 186
187static char *cwd; 187static char *cwd;
188static char *local_pending_command = NULL; 188static char *local_pending_command;
189static struct jobset job_list = { NULL, NULL }; 189static struct jobset job_list = { NULL, NULL };
190static int argc; 190static int argc;
191static char **argv; 191static char **argv;
@@ -1629,6 +1629,19 @@ int shell_main(int argc_l, char **argv_l)
1629 argc = argc_l; 1629 argc = argc_l;
1630 argv = argv_l; 1630 argv = argv_l;
1631 1631
1632 shell_context = 0;
1633 cwd=NULL;
1634#ifdef BB_FEATURE_STANDALONE_SHELL
1635 /* These variables need re-initializing when recursing */
1636 local_pending_command = NULL;
1637 job_list.head = NULL;
1638 job_list.fg = NULL;
1639#ifdef BB_FEATURE_SH_ENVIRONMENT
1640 last_bg_pid=-1;
1641 last_return_code=-1;
1642 show_x_trace=FALSE;
1643#endif
1644#endif
1632 1645
1633 if (argv[0] && argv[0][0] == '-') { 1646 if (argv[0] && argv[0][0] == '-') {
1634 FILE *input; 1647 FILE *input;