1/* printenv -- minimal clone of BSD printenv(1). 2 3 usage: printenv [varname] 4 5 Chet Ramey 6 chet@po.cwru.edu 7*/ 8 9/* Copyright (C) 1997-2002 Free Software Foundation, Inc. 10 11 This file is part of GNU Bash, the Bourne Again SHell. 12 13 Bash is free software; you can redistribute it and/or modify it under 14 the terms of the GNU General Public License as published by the Free 15 Software Foundation; either version 2, or (at your option) any later 16 version. 17 18 Bash is distributed in the hope that it will be useful, but WITHOUT ANY 19 WARRANTY; without even the implied warranty of MERCHANTABILITY or 20 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 21 for more details. 22 23 You should have received a copy of the GNU General Public License along 24 with Bash; see the file COPYING. If not, write to the Free Software 25 Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ 26 27#include <stdlib.h> 28#include <string.h> 29 30extern char **environ; 31 32int 33main (argc, argv) 34 int argc; 35 char **argv; 36{ 37 register char **envp, *eval; 38 int len; 39 40 argv++; 41 argc--; 42 43 /* printenv */ 44 if (argc == 0) 45 { 46 for (envp = environ; *envp; envp++) 47 puts (*envp); 48 exit(EXIT_SUCCESS); 49 } 50 51 /* printenv varname */ 52 len = strlen (*argv); 53 for (envp = environ; *envp; envp++) 54 { 55 if (**argv == **envp && strncmp (*envp, *argv, len) == 0) 56 { 57 eval = *envp + len; 58 /* If the environment variable doesn't have an `=', ignore it. */ 59 if (*eval == '=') 60 { 61 puts (eval + 1); 62 exit(EXIT_SUCCESS); 63 } 64 } 65 } 66 exit(EXIT_FAILURE); 67} 68