printenv.c 846 B

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