disable a totally braindead optimization in busybox that causes various applets to...
[openwrt.git] / package / busybox / patches / 250-ash_export-n.patch
index 9823afe..99f4672 100644 (file)
@@ -1,35 +1,37 @@
---- busybox.old/shell/ash.c    2006-11-22 12:02:03.000000000 -0800
-+++ busybox.dev/shell/ash.c    2006-11-22 11:05:32.000000000 -0800
-@@ -12257,9 +12257,18 @@
+Index: busybox-1.7.2/shell/ash.c
+===================================================================
+--- busybox-1.7.2.orig/shell/ash.c     2007-10-30 15:34:59.000000000 -0500
++++ busybox-1.7.2/shell/ash.c  2007-10-30 15:35:02.000000000 -0500
+@@ -11310,8 +11310,18 @@
        const char *p;
        char **aptr;
        int flag = argv[0][0] == 'r'? VREADONLY : VEXPORT;
 +      int mask = ~0;
-       int notp;
++      int nopt;
  
--      notp = nextopt("p") - 'p';
-+      while ((notp = nextopt("np"))) {
-+              if (notp == 'n') {
+-      if (nextopt("p") != 'p') {
++      while ((nopt = nextopt("np"))) {
++              if (nopt == 'n') {
 +                              mask = ~flag;
 +              } else { /* p */
 +                      break;
 +              }
 +      }
 +
-+      notp -= 'p';
-       if (notp && ((name = *(aptr = argptr)))) {
-               do {
-                       if ((p = strchr(name, '=')) != NULL) {
-@@ -12267,10 +12276,11 @@
-                       } else {
-                               if ((vp = *findvar(hashvar(name), name))) {
-                                       vp->flags |= flag;
-+                                      vp->flags &= mask;
-                                       continue;
++      if (nopt != 'p') {
+               aptr = argptr;
+               name = *aptr;
+               if (name) {
+@@ -11323,10 +11333,11 @@
+                                       vp = *findvar(hashvar(name), name);
+                                       if (vp) {
+                                               vp->flags |= flag;
++                                              vp->flags &= mask;
+                                               continue;
+                                       }
                                }
-                       }
--                      setvar(name, p, flag);
-+                      setvar(name, p, flag & mask);
-               } while ((name = *++aptr) != NULL);
-       } else {
-               showvars(argv[0], flag, 0);
+-                              setvar(name, p, flag);
++                              setvar(name, p, flag & mask);
+                       } while ((name = *++aptr) != NULL);
+                       return 0;
+               }
This page took 0.021313 seconds and 4 git commands to generate.