diff options
| author | vapier <vapier@69ca8d6d-28ef-0310-b511-8ec308f3f277> | 2005-04-21 23:23:13 +0000 |
|---|---|---|
| committer | vapier <vapier@69ca8d6d-28ef-0310-b511-8ec308f3f277> | 2005-04-21 23:23:13 +0000 |
| commit | a59b4da5f8cfe652bffc64c10f424ccb2cd8f3f0 (patch) | |
| tree | cfe9de6c7905a797c162de4da229246696ac120d | |
| parent | 1abc5ddff5b61ca40005a49daadfc75321f85eaf (diff) | |
| download | busybox-w32-a59b4da5f8cfe652bffc64c10f424ccb2cd8f3f0.tar.gz busybox-w32-a59b4da5f8cfe652bffc64c10f424ccb2cd8f3f0.tar.bz2 busybox-w32-a59b4da5f8cfe652bffc64c10f424ccb2cd8f3f0.zip | |
add a printenv implementation
git-svn-id: svn://busybox.net/trunk/busybox@10147 69ca8d6d-28ef-0310-b511-8ec308f3f277
| -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 | } | ||
