diff options
Diffstat (limited to 'package/utils/busybox/patches/250-ash_export-n.patch')
-rw-r--r-- | package/utils/busybox/patches/250-ash_export-n.patch | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/package/utils/busybox/patches/250-ash_export-n.patch b/package/utils/busybox/patches/250-ash_export-n.patch new file mode 100644 index 0000000000..048c236b85 --- /dev/null +++ b/package/utils/busybox/patches/250-ash_export-n.patch @@ -0,0 +1,34 @@ +--- a/shell/ash.c ++++ b/shell/ash.c +@@ -12611,8 +12611,17 @@ exportcmd(int argc UNUSED_PARAM, char ** + const char *p; + char **aptr; + int flag = argv[0][0] == 'r' ? VREADONLY : VEXPORT; ++ int mask = ~0; ++ int nopt; ++ while ((nopt = nextopt("np"))) { ++ if (nopt == 'n') { ++ mask = ~flag; ++ } else { /* p */ ++ break; ++ } ++ } + +- if (nextopt("p") != 'p') { ++ if (nopt != 'p') { + aptr = argptr; + name = *aptr; + if (name) { +@@ -12624,10 +12633,12 @@ exportcmd(int argc UNUSED_PARAM, char ** + 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); + return 0; + } |