0355f857def43a8a83522e1c387c64f6b8b9ae83
[platform/upstream/bash.git] / support / printenv.c
1 /* printenv -- minimal clone of BSD printenv(1).
2
3    usage: printenv [varname]
4
5    Chet Ramey
6    chet@po.cwru.edu
7 */
8
9 extern char **environ;
10
11 int
12 main (argc, argv) 
13      int argc;
14      char **argv;
15 {
16   register char **envp, *eval;
17   int len;
18
19   argv++;
20   argc--;
21
22   /* printenv */
23   if (argc == 0)
24     {
25       for (envp = environ; *envp; envp++)
26         puts (*envp);
27       exit (0);
28     }
29
30   /* printenv varname */
31   len = strlen (*argv);
32   for (envp = environ; *envp; envp++)
33     {
34       if (**argv == **envp && strncmp (*envp, *argv, len) == 0)
35         {
36           eval = *envp + len;
37           /* If the environment variable doesn't have an `=', ignore it. */
38           if (*eval == '=')
39             {
40               puts (eval + 1);
41               exit (0);
42             }
43         }
44     }
45   exit (1);
46 }
47