SSID: Respect ASCII character Label.
[tomato.git] / release / src / router / busybox / coreutils / printenv.c
blobbd5db7073a318331847884504d5bddd2c3666e38
1 /* vi: set sw=4 ts=4: */
2 /*
3 * printenv implementation for busybox
5 * Copyright (C) 2005 by Erik Andersen <andersen@codepoet.org>
6 * Copyright (C) 2005 by Mike Frysinger <vapier@gentoo.org>
8 * Licensed under GPLv2 or later, see file LICENSE in this source tree.
9 */
11 //usage:#define printenv_trivial_usage
12 //usage: "[VARIABLE]..."
13 //usage:#define printenv_full_usage "\n\n"
14 //usage: "Print environment VARIABLEs.\n"
15 //usage: "If no VARIABLE specified, print all."
17 #include "libbb.h"
19 /* This is a NOFORK applet. Be very careful! */
21 int printenv_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
22 int printenv_main(int argc UNUSED_PARAM, char **argv)
24 int exit_code = EXIT_SUCCESS;
26 /* no variables specified, show whole env */
27 if (!argv[1]) {
28 char **e = environ;
30 /* environ can be NULL! (for example, after clearenv())
31 * Check for that:
33 if (e)
34 while (*e)
35 puts(*e++);
36 } else {
37 /* search for specified variables and print them out if found */
38 char *arg, *env;
40 while ((arg = *++argv) != NULL) {
41 env = getenv(arg);
42 if (env)
43 puts(env);
44 else
45 exit_code = EXIT_FAILURE;
49 fflush_stdout_and_exit(exit_code);