view toys/other/printenv.c @ 653:2986aa63a021

Move commands into "posix", "lsb", and "other" menus/directories.
author Rob Landley <rob@landley.net>
date Sat, 25 Aug 2012 14:25:22 -0500
parents toys/printenv.c@e0eed40f4ab1
children 6df4ccc0acbe
line wrap: on
line source

/* vi: set sw=4 ts=4:
 *
 * 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));
}