diff options
author | "Vladimir N. Oleynik" | 2005-10-14 09:56:52 +0000 |
---|---|---|
committer | "Vladimir N. Oleynik" | 2005-10-14 09:56:52 +0000 |
commit | f704b27b5bb8bd5acaed9464714db34ccef06cc8 (patch) | |
tree | 06f15d778a64ba361219d8227f87422173bf0da8 /coreutils/env.c | |
parent | 8c7a7e6e63c01d2d575bbaa43e1768ad2b97179b (diff) | |
download | busybox-f704b27b5bb8bd5acaed9464714db34ccef06cc8.zip busybox-f704b27b5bb8bd5acaed9464714db34ccef06cc8.tar.gz |
- new bb_opt_complementally syntax, use [-:?] only - 'free' chars
- new bb_getopt_ulflags features: check max and min args, convert first argv to options special for ar and tar applets
- use bb_default_error_retval for env applet
Diffstat (limited to 'coreutils/env.c')
-rw-r--r-- | coreutils/env.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/coreutils/env.c b/coreutils/env.c index 1a8ad7c..d59e738 100644 --- a/coreutils/env.c +++ b/coreutils/env.c @@ -38,7 +38,7 @@ * - correct "-" option usage * - multiple "-u unsetenv" support * - GNU long option support - * - save errno after exec failed before bb_perror_msg() + * - use bb_default_error_retval */ @@ -65,7 +65,7 @@ extern int env_main(int argc, char** argv) llist_t *unset_env = NULL; extern char **environ; - bb_opt_complementally = "u*"; + bb_opt_complementally = "u::"; bb_applet_long_options = env_long_options; opt = bb_getopt_ulflags(argc, argv, "+iu:", &unset_env); @@ -93,12 +93,10 @@ extern int env_main(int argc, char** argv) } if (*argv) { - int er; - execvp(*argv, argv); - er = errno; - bb_perror_msg("%s", *argv); /* Avoid multibyte problems. */ - return (er == ENOENT) ? 127 : 126; /* SUSv3-mandated exit codes. */ + /* SUSv3-mandated exit codes. */ + bb_default_error_retval = (errno == ENOENT) ? 127 : 126; + bb_perror_msg_and_die("%s", *argv); } for (ep = environ; *ep; ep++) { |