master xplshn/aruu / cmd / pseudo / printenv.c
 1/* See LICENSE file for copyright and license details. */
 2
 3#include <stdio.h>
 4#include <stdlib.h>
 5
 6#include "util.h"
 7
 8extern char **environ;
 9
10static void
11usage(void)
12{
13  eprintf("usage: %s [var ...]\n", argv0);
14}
15
16// ?man printenv: print environment variables
17// ?man arguments: var ...
18// ?man display all or part of the current environment
19int
20main(int argc, char *argv[])
21{
22  char *var;
23  int   ret = 0;
24
25  ARGBEGIN
26  {
27    default:
28      usage();
29  }
30  ARGEND
31
32  if (!argc) {
33    for (; *environ; environ++)
34      puts(*environ);
35  } else {
36    for (; *argv; argc--, argv++) {
37      if ((var = getenv(*argv)))
38        puts(var);
39      else
40        ret = 1;
41    }
42  }
43
44  return fshut(stdout, "<stdout>") ? 2 : ret;
45}