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 <stdio.h> 28#include <stdlib.h> 29#include <string.h> 30 31extern char **environ; 32 33int 34main (argc, argv) 35 int argc; 36 char **argv; 37{ 38 register char **envp, *eval; 39 int len; 40 41 argv++; 42 argc--; 43 44 /* printenv */ 45 if (argc == 0) 46 { 47 for (envp = environ; *envp; envp++) 48 puts (*envp); 49 exit(EXIT_SUCCESS); 50 } 51 52 /* printenv varname */ 53 len = strlen (*argv); 54 for (envp = environ; *envp; envp++) 55 { 56 if (**argv == **envp && strncmp (*envp, *argv, len) == 0) 57 { 58 eval = *envp + len; 59 /* If the environment variable doesn't have an `=', ignore it. */ 60 if (*eval == '=') 61 { 62 puts (eval + 1); 63 exit(EXIT_SUCCESS); 64 } 65 } 66 } 67 exit(EXIT_FAILURE); 68} 69