diff options
Diffstat (limited to 'bin/sh/var.c')
-rw-r--r-- | bin/sh/var.c | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/bin/sh/var.c b/bin/sh/var.c index 6041459..48a0dc5 100644 --- a/bin/sh/var.c +++ b/bin/sh/var.c @@ -640,10 +640,11 @@ showvarscmd(int argc __unused, char **argv __unused) */ int -exportcmd(int argc, char **argv) +exportcmd(int argc __unused, char **argv) { struct var **vpp; struct var *vp; + char **ap; char *name; char *p; char *cmdname; @@ -651,26 +652,19 @@ exportcmd(int argc, char **argv) int flag = argv[0][0] == 'r'? VREADONLY : VEXPORT; cmdname = argv[0]; - optreset = optind = 1; - opterr = 0; values = 0; - while ((ch = getopt(argc, argv, "p")) != -1) { + while ((ch = nextopt("p")) != '\0') { switch (ch) { case 'p': values = 1; break; - case '?': - default: - error("unknown option: -%c", optopt); } } - argc -= optind; - argv += optind; - if (values && argc != 0) + if (values && *argptr != NULL) error("-p requires no arguments"); - if (argc != 0) { - while ((name = *argv++) != NULL) { + if (*argptr != NULL) { + for (ap = argptr; (name = *ap) != NULL; ap++) { if ((p = strchr(name, '=')) != NULL) { p++; } else { |