blob: 1d41eeb7b1301c5b8d068594679d871a74b2680d [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
Denis Vlasenko06af2162007-02-03 17:28:39 +000016int printenv_main(int argc, char **argv);
Mike Frysinger6d1d2e52005-04-21 23:23:13 +000017int printenv_main(int argc, char **argv)
18{
19 extern char **environ;
20 int e = 0;
21
22 /* no variables specified, show whole env */
23 if (argc == 1)
24 while (environ[e])
25 puts(environ[e++]);
26
27 /* search for specified variables and print them out if found */
28 else {
29 int i;
30 size_t l;
31 char *arg, *env;
32
33 for (i=1; (arg = argv[i]); ++i)
34 for (; (env = environ[e]); ++e) {
35 l = strlen(arg);
36 if (!strncmp(env, arg, l) && env[l] == '=')
37 puts(env + l + 1);
38 }
39 }
40
Denis Vlasenkof0ed3762006-10-26 23:21:47 +000041 fflush_stdout_and_exit(0);
Mike Frysinger6d1d2e52005-04-21 23:23:13 +000042}