1/* vi: set sw=4 ts=4: */ 2/* 3 * env implementation for busybox 4 * 5 * Copyright (c) 1988, 1993, 1994 6 * The Regents of the University of California. All rights reserved. 7 * 8 * This program is free software; you can redistribute it and/or modify 9 * it under the terms of the GNU General Public License as published by 10 * the Free Software Foundation; either version 2 of the License, or 11 * (at your option) any later version. 12 * 13 * This program is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16 * General Public License for more details. 17 * 18 * You should have received a copy of the GNU General Public License 19 * along with this program; if not, write to the Free Software 20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 21 * 22 * Original copyright notice is retained at the end of this file. 23 * 24 * Modified for BusyBox by Erik Andersen <andersen@lineo.com>, <andersee@debian.org> 25 */ 26 27#include <stdio.h> 28#include <string.h> 29#include <getopt.h> 30#include <stdlib.h> 31#include <unistd.h> 32#include "busybox.h" 33 34extern int env_main(int argc, char** argv) 35{ 36 char **ep, *p; 37 char *cleanenv[1]; 38 int ignore_environment = 0; 39 int ch; 40 41 while ((ch = getopt(argc, argv, "+iu:")) != -1) { 42 switch(ch) { 43 case 'i': 44 ignore_environment = 1; 45 break; 46 case 'u': 47 unsetenv(optarg); 48 break; 49 default: 50 show_usage(); 51 } 52 } 53 if (optind != argc && !strcmp(argv[optind], "-")) { 54 ignore_environment = 1; 55 argv++; 56 } 57 if (ignore_environment) { 58 environ = cleanenv; 59 cleanenv[0] = NULL; 60 } 61 for (argv += optind; *argv && (p = strchr(*argv, '=')); ++argv) 62 if (putenv(*argv) < 0) 63 perror_msg_and_die("%s", *argv); 64 if (*argv) { 65 execvp(*argv, argv); 66 perror_msg_and_die("%s", *argv); 67 } 68 for (ep = environ; *ep; ep++) 69 puts(*ep); 70 return 0; 71} 72 73/* 74 * Copyright (c) 1988, 1993, 1994 75 * The Regents of the University of California. All rights reserved. 76 * 77 * Redistribution and use in source and binary forms, with or without 78 * modification, are permitted provided that the following conditions 79 * are met: 80 * 1. Redistributions of source code must retain the above copyright 81 * notice, this list of conditions and the following disclaimer. 82 * 2. Redistributions in binary form must reproduce the above copyright 83 * notice, this list of conditions and the following disclaimer in the 84 * documentation and/or other materials provided with the distribution. 85 * 86 * 3. <BSD Advertising Clause omitted per the July 22, 1999 licensing change 87 * ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change> 88 * 89 * 4. Neither the name of the University nor the names of its contributors 90 * may be used to endorse or promote products derived from this software 91 * without specific prior written permission. 92 * 93 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 94 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 95 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 96 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 97 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 98 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 99 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 100 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 101 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 102 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 103 * SUCH DAMAGE. 104 */ 105 106 107