diff options
-rw-r--r-- | shell/hush.c | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/shell/hush.c b/shell/hush.c index e82766093..6c20615fa 100644 --- a/shell/hush.c +++ b/shell/hush.c @@ -6825,7 +6825,18 @@ static int FAST_FUNC builtin_export(char **argv) { unsigned opt_unexport; - if (argv[1] == NULL) { +#if ENABLE_HUSH_EXPORT_N + /* "!": do not abort on errors */ + opt_unexport = getopt32(argv, "!n"); + if (opt_unexport == (uint32_t)-1) + return EXIT_FAILURE; + argv += optind; +#else + opt_unexport = 0; + argv++; +#endif + + if (argv[0] == NULL) { char **e = environ; if (e) { while (*e) { @@ -6851,18 +6862,6 @@ static int FAST_FUNC builtin_export(char **argv) return EXIT_SUCCESS; } -#if ENABLE_HUSH_EXPORT_N - /* "!": do not abort on errors */ - /* "+": stop at 1st non-option */ - opt_unexport = getopt32(argv, "!+n"); - if (opt_unexport == (unsigned)-1) - return EXIT_FAILURE; - argv += optind; -#else - opt_unexport = 0; - argv++; -#endif - helper_export_local(argv, (opt_unexport ? -1 : 1), 0); return EXIT_SUCCESS; |