busybox: update to 1.25.0
[tomato.git] / release / src / router / busybox / shell / ash_test / printenv.c
blobc0c5e197c9af60734d1fa62ab6ce3fd99948d5b9
1 /* printenv -- minimal clone of BSD printenv(1).
3 usage: printenv [varname]
5 Chet Ramey
6 chet@po.cwru.edu
7 */
9 /* Copyright (C) 1997-2002 Free Software Foundation, Inc.
11 This file is part of GNU Bash, the Bourne Again SHell.
13 Bash is free software; you can redistribute it and/or modify it under
14 the terms of the GNU General Public License as published by the Free
15 Software Foundation; either version 2, or (at your option) any later
16 version.
18 Bash is distributed in the hope that it will be useful, but WITHOUT ANY
19 WARRANTY; without even the implied warranty of MERCHANTABILITY or
20 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21 for more details.
23 You should have received a copy of the GNU General Public License along
24 with Bash; see the file COPYING. If not, write to the Free Software
25 Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
27 #include <stdio.h>
28 #include <stdlib.h>
29 #include <string.h>
31 extern char **environ;
33 int
34 main (argc, argv)
35 int argc;
36 char **argv;
38 register char **envp, *eval;
39 int len;
41 argv++;
42 argc--;
44 /* printenv */
45 if (argc == 0)
47 for (envp = environ; *envp; envp++)
48 puts (*envp);
49 exit(EXIT_SUCCESS);
52 /* printenv varname */
53 len = strlen (*argv);
54 for (envp = environ; *envp; envp++)
56 if (**argv == **envp && strncmp (*envp, *argv, len) == 0)
58 eval = *envp + len;
59 /* If the environment variable doesn't have an `=', ignore it. */
60 if (*eval == '=')
62 puts (eval + 1);
63 exit(EXIT_SUCCESS);
67 exit(EXIT_FAILURE);