aboutsummaryrefslogtreecommitdiff
path: root/shell/ash.c
diff options
context:
space:
mode:
Diffstat (limited to 'shell/ash.c')
-rw-r--r--shell/ash.c22
1 files changed, 10 insertions, 12 deletions
diff --git a/shell/ash.c b/shell/ash.c
index 7a9f20ec0..15c0e56a3 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -2592,9 +2592,11 @@ initvar(void)
2592} 2592}
2593 2593
2594static struct var ** 2594static struct var **
2595findvar(struct var **vpp, const char *name) 2595findvar(const char *name)
2596{ 2596{
2597 for (; *vpp; vpp = &(*vpp)->next) { 2597 struct var **vpp;
2598
2599 for (vpp = hashvar(name); *vpp; vpp = &(*vpp)->next) {
2598 if (varcmp((*vpp)->var_text, name) == 0) { 2600 if (varcmp((*vpp)->var_text, name) == 0) {
2599 break; 2601 break;
2600 } 2602 }
@@ -2610,7 +2612,7 @@ lookupvar(const char *name)
2610{ 2612{
2611 struct var *v; 2613 struct var *v;
2612 2614
2613 v = *findvar(hashvar(name), name); 2615 v = *findvar(name);
2614 if (v) { 2616 if (v) {
2615#if ENABLE_ASH_RANDOM_SUPPORT || BASH_EPOCH_VARS 2617#if ENABLE_ASH_RANDOM_SUPPORT || BASH_EPOCH_VARS
2616 /* 2618 /*
@@ -2756,9 +2758,8 @@ setvareq(char *s, int flags)
2756 } 2758 }
2757#endif 2759#endif
2758 2760
2759 vpp = hashvar(s);
2760 flags |= (VEXPORT & (((unsigned) (1 - aflag)) - 1)); 2761 flags |= (VEXPORT & (((unsigned) (1 - aflag)) - 1));
2761 vpp = findvar(vpp, s); 2762 vpp = findvar(s);
2762 vp = *vpp; 2763 vp = *vpp;
2763 if (vp) { 2764 if (vp) {
2764 if ((vp->flags & (VREADONLY|VDYNAMIC)) == VREADONLY) { 2765 if ((vp->flags & (VREADONLY|VDYNAMIC)) == VREADONLY) {
@@ -11131,7 +11132,6 @@ static void
11131mklocal(char *name, int flags) 11132mklocal(char *name, int flags)
11132{ 11133{
11133 struct localvar *lvp; 11134 struct localvar *lvp;
11134 struct var **vpp;
11135 struct var *vp; 11135 struct var *vp;
11136 char *eq = strchr(name, '='); 11136 char *eq = strchr(name, '=');
11137 11137
@@ -11160,8 +11160,7 @@ mklocal(char *name, int flags)
11160 lvp->text = memcpy(p, optlist, sizeof(optlist)); 11160 lvp->text = memcpy(p, optlist, sizeof(optlist));
11161 vp = NULL; 11161 vp = NULL;
11162 } else { 11162 } else {
11163 vpp = hashvar(name); 11163 vp = *findvar(name);
11164 vp = *findvar(vpp, name);
11165 if (vp == NULL) { 11164 if (vp == NULL) {
11166 /* variable did not exist yet */ 11165 /* variable did not exist yet */
11167 if (eq) 11166 if (eq)
@@ -15510,7 +15509,7 @@ exportcmd(int argc UNUSED_PARAM, char **argv)
15510 if (p != NULL) { 15509 if (p != NULL) {
15511 p++; 15510 p++;
15512 } else { 15511 } else {
15513 vp = *findvar(hashvar(name), name); 15512 vp = *findvar(name);
15514 if (vp) { 15513 if (vp) {
15515#if ENABLE_PLATFORM_MINGW32 15514#if ENABLE_PLATFORM_MINGW32
15516 if (is_bb_var(name) == BB_VAR_EXACT) { 15515 if (is_bb_var(name) == BB_VAR_EXACT) {
@@ -16553,7 +16552,7 @@ reinitvar(void)
16553{ 16552{
16554 int i; 16553 int i;
16555 const char *name; 16554 const char *name;
16556 struct var **vpp, **old; 16555 struct var **old;
16557 16556
16558 for (i=0; i<ARRAY_SIZE(varinit); ++i) { 16557 for (i=0; i<ARRAY_SIZE(varinit); ++i) {
16559 if (i == LINENO_INDEX) 16558 if (i == LINENO_INDEX)
@@ -16562,8 +16561,7 @@ reinitvar(void)
16562 name = "FUNCNAME="; 16561 name = "FUNCNAME=";
16563 else 16562 else
16564 name = varinit_data[i].var_text; 16563 name = varinit_data[i].var_text;
16565 vpp = hashvar(name); 16564 if ((old = findvar(name)) != NULL) {
16566 if ( (old=findvar(vpp, name)) != NULL ) {
16567 varinit[i] = **old; 16565 varinit[i] = **old;
16568 *old = varinit+i; 16566 *old = varinit+i;
16569 } 16567 }