]> git.ipfire.org Git - thirdparty/bash.git/blame - support/printenv.c
Bash-5.2 patch 26: fix typo when specifying readline's custom color prefix
[thirdparty/bash.git] / support / printenv.c
CommitLineData
d166f048
JA
1/* printenv -- minimal clone of BSD printenv(1).
2
3 usage: printenv [varname]
4
5 Chet Ramey
6 chet@po.cwru.edu
7*/
8
7117c2d2
JA
9/* Copyright (C) 1997-2002 Free Software Foundation, Inc.
10
11 This file is part of GNU Bash, the Bourne Again SHell.
12
3185942a
JA
13 Bash is free software: you can redistribute it and/or modify
14 it under the terms of the GNU General Public License as published by
15 the Free Software Foundation, either version 3 of the License, or
16 (at your option) any later version.
7117c2d2 17
3185942a
JA
18 Bash is distributed in the hope that it will be useful,
19 but WITHOUT ANY WARRANTY; without even the implied warranty of
20 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 GNU General Public License for more details.
7117c2d2 22
3185942a
JA
23 You should have received a copy of the GNU General Public License
24 along with Bash. If not, see <http://www.gnu.org/licenses/>.
25*/
7117c2d2 26
95732b49
JA
27#if defined (HAVE_CONFIG_H)
28# include <config.h>
29#endif
30
31#include "bashansi.h"
ac50fbac 32#include <stdio.h> /* puts */
95732b49 33
d166f048
JA
34extern char **environ;
35
36int
37main (argc, argv)
38 int argc;
39 char **argv;
40{
41 register char **envp, *eval;
42 int len;
43
44 argv++;
45 argc--;
46
47 /* printenv */
48 if (argc == 0)
49 {
50 for (envp = environ; *envp; envp++)
51 puts (*envp);
52 exit (0);
53 }
54
55 /* printenv varname */
56 len = strlen (*argv);
57 for (envp = environ; *envp; envp++)
58 {
59 if (**argv == **envp && strncmp (*envp, *argv, len) == 0)
60 {
61 eval = *envp + len;
62 /* If the environment variable doesn't have an `=', ignore it. */
63 if (*eval == '=')
64 {
65 puts (eval + 1);
66 exit (0);
67 }
68 }
69 }
70 exit (1);
71}
72