blob: aea88d701063a62a2af6a0ed5a9414493d350965 [file] [log] [blame]
"Robert P. J. Day"63fc1a92006-07-02 19:47:05 +00001/* vi: set sw=4 ts=4: */
Mike Frysinger6d1d2e52005-04-21 23:23:13 +00002/*
3 * printenv implementation for busybox
4 *
5 * Copyright (C) 2005 by Erik Andersen <andersen@codepoet.org>
6 * Copyright (C) 2005 by Mike Frysinger <vapier@gentoo.org>
7 *
"Robert P. J. Day"801ab142006-07-12 07:56:04 +00008 * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
Mike Frysinger6d1d2e52005-04-21 23:23:13 +00009 */
10
11#include <stdio.h>
12#include <string.h>
13#include <stdlib.h>
Mike Frysinger5cfa5ef2005-04-23 01:41:51 +000014#include "busybox.h"
Mike Frysinger6d1d2e52005-04-21 23:23:13 +000015
16int printenv_main(int argc, char **argv)
17{
18 extern char **environ;
19 int e = 0;
20
21 /* no variables specified, show whole env */
22 if (argc == 1)
23 while (environ[e])
24 puts(environ[e++]);
25
26 /* search for specified variables and print them out if found */
27 else {
28 int i;
29 size_t l;
30 char *arg, *env;
31
32 for (i=1; (arg = argv[i]); ++i)
33 for (; (env = environ[e]); ++e) {
34 l = strlen(arg);
35 if (!strncmp(env, arg, l) && env[l] == '=')
36 puts(env + l + 1);
37 }
38 }
39
Mike Frysingeredb3fbc2005-04-26 00:43:19 +000040 bb_fflush_stdout_and_exit(0);
Mike Frysinger6d1d2e52005-04-21 23:23:13 +000041}