| 12345678910111213141516171819202122232425262728293031323334 |
- --- 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 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) {
- @@ -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);
- return 0;
- }
|