diff options
author | Mike Frysinger <vapier@gentoo.org> | 2005-04-21 23:23:13 +0000 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2005-04-21 23:23:13 +0000 |
commit | 6d1d2e59bff295c5876430a6289425118f02e0ee (patch) | |
tree | cfe9de6c7905a797c162de4da229246696ac120d | |
parent | c0bc9652fd8aaa0283249f66b0971bd3139c9116 (diff) | |
download | busybox-w32-6d1d2e59bff295c5876430a6289425118f02e0ee.tar.gz busybox-w32-6d1d2e59bff295c5876430a6289425118f02e0ee.tar.bz2 busybox-w32-6d1d2e59bff295c5876430a6289425118f02e0ee.zip |
add a printenv implementation
-rw-r--r-- | coreutils/Config.in | 6 | ||||
-rw-r--r-- | coreutils/Makefile.in | 1 | ||||
-rw-r--r-- | coreutils/printenv.c | 52 |
3 files changed, 59 insertions, 0 deletions
diff --git a/coreutils/Config.in b/coreutils/Config.in index a299506e6..466e8b880 100644 --- a/coreutils/Config.in +++ b/coreutils/Config.in | |||
@@ -164,6 +164,12 @@ config CONFIG_ENV | |||
164 | a command; without options it displays the current | 164 | a command; without options it displays the current |
165 | environment. | 165 | environment. |
166 | 166 | ||
167 | config CONFIG_PRINTENV | ||
168 | bool "printenv" | ||
169 | default n | ||
170 | help | ||
171 | printenv is used to print all or part of environment. | ||
172 | |||
167 | config CONFIG_EXPR | 173 | config CONFIG_EXPR |
168 | bool "expr" | 174 | bool "expr" |
169 | default n | 175 | default n |
diff --git a/coreutils/Makefile.in b/coreutils/Makefile.in index 1a4872f66..130bdf48b 100644 --- a/coreutils/Makefile.in +++ b/coreutils/Makefile.in | |||
@@ -60,6 +60,7 @@ COREUTILS-$(CONFIG_MKNOD) += mknod.o | |||
60 | COREUTILS-$(CONFIG_MV) += mv.o | 60 | COREUTILS-$(CONFIG_MV) += mv.o |
61 | COREUTILS-$(CONFIG_NICE) += nice.o | 61 | COREUTILS-$(CONFIG_NICE) += nice.o |
62 | COREUTILS-$(CONFIG_OD) += od.o | 62 | COREUTILS-$(CONFIG_OD) += od.o |
63 | COREUTILS-$(CONFIG_PRINTENV) += printenv.o | ||
63 | COREUTILS-$(CONFIG_PRINTF) += printf.o | 64 | COREUTILS-$(CONFIG_PRINTF) += printf.o |
64 | COREUTILS-$(CONFIG_PWD) += pwd.o | 65 | COREUTILS-$(CONFIG_PWD) += pwd.o |
65 | COREUTILS-$(CONFIG_REALPATH) += realpath.o | 66 | COREUTILS-$(CONFIG_REALPATH) += realpath.o |
diff --git a/coreutils/printenv.c b/coreutils/printenv.c new file mode 100644 index 000000000..10f9dd22a --- /dev/null +++ b/coreutils/printenv.c | |||
@@ -0,0 +1,52 @@ | |||
1 | /* | ||
2 | * printenv implementation for busybox | ||
3 | * | ||
4 | * Copyright (C) 2005 by Erik Andersen <andersen@codepoet.org> | ||
5 | * Copyright (C) 2005 by Mike Frysinger <vapier@gentoo.org> | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License as published by | ||
9 | * the Free Software Foundation; either version 2 of the License, or | ||
10 | * (at your option) any later version. | ||
11 | * | ||
12 | * This program is distributed in the hope that it will be useful, | ||
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
15 | * General Public License for more details. | ||
16 | * | ||
17 | * You should have received a copy of the GNU General Public License | ||
18 | * along with this program; if not, write to the Free Software | ||
19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
20 | * | ||
21 | */ | ||
22 | |||
23 | #include <stdio.h> | ||
24 | #include <string.h> | ||
25 | #include <stdlib.h> | ||
26 | |||
27 | int printenv_main(int argc, char **argv) | ||
28 | { | ||
29 | extern char **environ; | ||
30 | int e = 0; | ||
31 | |||
32 | /* no variables specified, show whole env */ | ||
33 | if (argc == 1) | ||
34 | while (environ[e]) | ||
35 | puts(environ[e++]); | ||
36 | |||
37 | /* search for specified variables and print them out if found */ | ||
38 | else { | ||
39 | int i; | ||
40 | size_t l; | ||
41 | char *arg, *env; | ||
42 | |||
43 | for (i=1; (arg = argv[i]); ++i) | ||
44 | for (; (env = environ[e]); ++e) { | ||
45 | l = strlen(arg); | ||
46 | if (!strncmp(env, arg, l) && env[l] == '=') | ||
47 | puts(env + l + 1); | ||
48 | } | ||
49 | } | ||
50 | |||
51 | exit(EXIT_SUCCESS); | ||
52 | } | ||