view toys/other/printenv.c @ 694:786841fdb1e0

Reindent to two spaces per level. Remove vi: directives that haven't worked right in years (ubuntu broke its' vim implementation). Remove trailing spaces. Add/remove blank lines. Re-wordwrap in places. Update documentation with new coding style. The actual code should be the same afterward, this is just cosmetic refactoring.
author Rob Landley <rob@landley.net>
date Tue, 13 Nov 2012 17:14:08 -0600
parents 6df4ccc0acbe
children
line wrap: on
line source

/* printenv.c - Print environment variables.
 *
 * Copyright 2012 Georgi Chorbadzhiyski <georgi@unixsol.org>

USE_PRINTENV(NEWTOY(printenv, "0(null)", TOYFLAG_USR|TOYFLAG_BIN))

config PRINTENV
  bool "printenv"
  default y
  help
    usage: printenv [-0] [env_var...]

    Print environment variables.

    -0	Use \0 as delimiter instead of \n
*/

#include "toys.h"

extern char **environ;

void printenv_main(void)
{
  char **env, **var = toys.optargs;
  char delim = '\n';

  if (toys.optflags) delim = 0;

  do {
    int catch = 0, len = *var ? strlen(*var) : 0;

    for (env = environ; *env; env++) {
      char *out = *env;
      if (*var) {
        if (!strncmp(out, *var, len) && out[len] == '=') out += len +1;
        else continue;
      }
      xprintf("%s%c", out, delim);
      catch++;
    }
    if (*var && !catch) toys.exitval = 1;
  } while (*var && *(++var));
}