busybox: refresh busybox patches
[openwrt/svn-archive/archive.git] / package / busybox / patches / 250-ash_export-n.patch
index 9823afeaf5f148ac8f5f1e1b7f0dc749cac5da0e..0662ba38afe1f063be7528a71e08c0c7d1c067ea 100644 (file)
@@ -1,35 +1,34 @@
---- 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 @@
+--- a/shell/ash.c
++++ b/shell/ash.c
+@@ -11909,8 +11909,17 @@ exportcmd(int argc ATTRIBUTE_UNUSED, cha
        const char *p;
        char **aptr;
        int flag = argv[0][0] == 'r'? VREADONLY : VEXPORT;
 +      int mask = ~0;
-       int notp;
--      notp = nextopt("p") - 'p';
-+      while ((notp = nextopt("np"))) {
-+              if (notp == 'n') {
++      int nopt;
++      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 (nextopt("p") != 'p') {
++      if (nopt != 'p') {
+               aptr = argptr;
+               name = *aptr;
+               if (name) {
+@@ -11922,10 +11931,12 @@ exportcmd(int argc ATTRIBUTE_UNUSED, cha
+                                       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;
+               }