* - correct "-" option usage
* - multiple "-u unsetenv" support
* - GNU long option support
- * - use bb_default_error_retval
+ * - use xfunc_error_retval
*/
#include "busybox.h"
};
#endif
+int env_main(int argc, char** argv);
int env_main(int argc, char** argv)
{
- static char *cleanenv[1] = { NULL };
-
+ /* cleanenv was static - why? */
+ char *cleanenv[1];
char **ep;
- unsigned long opt;
+ unsigned opt;
llist_t *unset_env = NULL;
extern char **environ;
- bb_opt_complementally = "u::";
+ opt_complementary = "u::";
#if ENABLE_FEATURE_ENV_LONG_OPTIONS
- bb_applet_long_options = env_long_options;
+ applet_long_options = env_long_options;
#endif
-
- opt = bb_getopt_ulflags(argc, argv, "+iu:", &unset_env);
-
+ opt = getopt32(argc, argv, "+iu:", &unset_env);
argv += optind;
- if (*argv && (argv[0][0] == '-') && !argv[0][1]) {
+ if (*argv && LONE_DASH(argv[0])) {
opt |= 1;
++argv;
}
-
- if (opt & 1)
+ if (opt & 1) {
+ cleanenv[0] = NULL;
environ = cleanenv;
- else if (opt & 2) {
+ } else if (opt & 2) {
while (unset_env) {
unsetenv(unset_env->data);
unset_env = unset_env->link;
}
if (*argv) {
- execvp(*argv, argv);
+ BB_EXECVP(*argv, argv);
/* SUSv3-mandated exit codes. */
- bb_default_error_retval = (errno == ENOENT) ? 127 : 126;
+ xfunc_error_retval = (errno == ENOENT) ? 127 : 126;
bb_perror_msg_and_die("%s", *argv);
}
puts(*ep);
}
- bb_fflush_stdout_and_exit(0);
+ fflush_stdout_and_exit(0);
}
/*