X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=coreutils%2Fprintenv.c;h=bd5db7073a318331847884504d5bddd2c3666e38;hb=2a17fbe88a0cc064248db4ce8939f0fbc357922d;hp=d38f8fb5f5986cdd134a78aa4b185d7fd4734711;hpb=0ef64bdb40c54681e8dd5ab8df42ac88e4ab1d4a;p=oweals%2Fbusybox.git diff --git a/coreutils/printenv.c b/coreutils/printenv.c index d38f8fb5f..bd5db7073 100644 --- a/coreutils/printenv.c +++ b/coreutils/printenv.c @@ -8,8 +8,16 @@ * Licensed under GPLv2 or later, see file LICENSE in this source tree. */ +//usage:#define printenv_trivial_usage +//usage: "[VARIABLE]..." +//usage:#define printenv_full_usage "\n\n" +//usage: "Print environment VARIABLEs.\n" +//usage: "If no VARIABLE specified, print all." + #include "libbb.h" +/* This is a NOFORK applet. Be very careful! */ + int printenv_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; int printenv_main(int argc UNUSED_PARAM, char **argv) { @@ -17,9 +25,14 @@ int printenv_main(int argc UNUSED_PARAM, char **argv) /* no variables specified, show whole env */ if (!argv[1]) { - int e = 0; - while (environ[e]) - puts(environ[e++]); + char **e = environ; + + /* environ can be NULL! (for example, after clearenv()) + * Check for that: + */ + if (e) + while (*e) + puts(*e++); } else { /* search for specified variables and print them out if found */ char *arg, *env;