blob: 305b3e7dc8b20fa90c7e83eb74366ff5754f1c0f [file] [log] [blame]
/* 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));
}