changeset 517:a191ea9bc5df

Implement printenv command.
author Georgi Chorbadzhiyski <georgi@unixsol.org>
date Sat, 03 Mar 2012 23:55:27 -0600
parents ec7dd0ef7eae
children e0eed40f4ab1
files toys/printenv.c
diffstat 1 files changed, 45 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/toys/printenv.c	Sat Mar 03 23:55:27 2012 -0600
@@ -0,0 +1,45 @@
+/* vi: set sw=4 ts=4:
+ *
+ * printenv.c - Print environment variables.
+ *
+ * Copyright 2012 Georgi Chorbadzhiyski <georgi@unixsol.org>
+ *
+
+USE_PRINTENV(NEWTOY(printenv, "0", TOYFLAG_USR|TOYFLAG_BIN))
+
+config PRINTENV
+	bool "printenv"
+	default y
+	help
+	  usage: printenv [-0] [env_var...]
+	  Print enviroment variables.
+
+	  -0	Use \0 as environment delimiter instead of \n
+*/
+
+#include "toys.h"
+
+extern char **environ;
+
+void printenv_main(void)
+{
+	char **env;
+	char delim = '\n';
+
+	if (toys.optflags)
+		delim = '\0';
+
+	if (!toys.optargs[0]) {
+		for (env = environ; *env; env++)
+			xprintf("%s%c", *env, delim);
+	} else {
+		char **var = toys.optargs;
+		for (var = toys.optargs; *var; var++) {
+			int len = strlen(*var);
+			for (env = environ; *env; env++) {
+				if (strncmp(*env, *var, len) == 0)
+					xprintf("%s%c", *env + len + 1, delim);
+			}
+		}
+	}
+}