1*cf5a6c84SAndroid Build Coastguard Worker /* printenv.c - Print environment variables. 2*cf5a6c84SAndroid Build Coastguard Worker * 3*cf5a6c84SAndroid Build Coastguard Worker * Copyright 2012 Georgi Chorbadzhiyski <[email protected]> 4*cf5a6c84SAndroid Build Coastguard Worker 5*cf5a6c84SAndroid Build Coastguard Worker USE_PRINTENV(NEWTOY(printenv, "(null)0", TOYFLAG_BIN)) 6*cf5a6c84SAndroid Build Coastguard Worker 7*cf5a6c84SAndroid Build Coastguard Worker config PRINTENV 8*cf5a6c84SAndroid Build Coastguard Worker bool "printenv" 9*cf5a6c84SAndroid Build Coastguard Worker default y 10*cf5a6c84SAndroid Build Coastguard Worker help 11*cf5a6c84SAndroid Build Coastguard Worker usage: printenv [-0] [env_var...] 12*cf5a6c84SAndroid Build Coastguard Worker 13*cf5a6c84SAndroid Build Coastguard Worker Print environment variables. 14*cf5a6c84SAndroid Build Coastguard Worker 15*cf5a6c84SAndroid Build Coastguard Worker -0 Use \0 as delimiter instead of \n 16*cf5a6c84SAndroid Build Coastguard Worker */ 17*cf5a6c84SAndroid Build Coastguard Worker 18*cf5a6c84SAndroid Build Coastguard Worker #include "toys.h" 19*cf5a6c84SAndroid Build Coastguard Worker printenv_main(void)20*cf5a6c84SAndroid Build Coastguard Workervoid printenv_main(void) 21*cf5a6c84SAndroid Build Coastguard Worker { 22*cf5a6c84SAndroid Build Coastguard Worker char **env, **var = toys.optargs; 23*cf5a6c84SAndroid Build Coastguard Worker char delim = '\n'; 24*cf5a6c84SAndroid Build Coastguard Worker 25*cf5a6c84SAndroid Build Coastguard Worker if (toys.optflags) delim = 0; 26*cf5a6c84SAndroid Build Coastguard Worker 27*cf5a6c84SAndroid Build Coastguard Worker do { 28*cf5a6c84SAndroid Build Coastguard Worker int catch = 0, len = *var ? strlen(*var) : 0; 29*cf5a6c84SAndroid Build Coastguard Worker 30*cf5a6c84SAndroid Build Coastguard Worker for (env = environ; *env; env++) { 31*cf5a6c84SAndroid Build Coastguard Worker char *out = *env; 32*cf5a6c84SAndroid Build Coastguard Worker if (*var) { 33*cf5a6c84SAndroid Build Coastguard Worker if (!strncmp(out, *var, len) && out[len] == '=') out += len +1; 34*cf5a6c84SAndroid Build Coastguard Worker else continue; 35*cf5a6c84SAndroid Build Coastguard Worker } 36*cf5a6c84SAndroid Build Coastguard Worker xprintf("%s%c", out, delim); 37*cf5a6c84SAndroid Build Coastguard Worker catch++; 38*cf5a6c84SAndroid Build Coastguard Worker } 39*cf5a6c84SAndroid Build Coastguard Worker if (*var && !catch) toys.exitval = 1; 40*cf5a6c84SAndroid Build Coastguard Worker } while (*var && *(++var)); 41*cf5a6c84SAndroid Build Coastguard Worker } 42