Replaces commands/env. No Minix-specific changes needed.
Change-Id: I1aefebe360962ae52241384c54f9466253d783c6
comm compress cp crc cron crontab \
dd decomp16 DESCRIBE devmand devsize df dhcpd \
dhrystone diff diskctl dumpcore \
- eject env factor fbdctl \
+ eject factor fbdctl \
find fix fold format fortune fsck.mfs \
gcore gcov-pull getty grep hexdump host \
hostaddr id ifconfig ifdef \
+++ /dev/null
-PROG= env
-MAN=
-
-.include <bsd.prog.mk>
+++ /dev/null
-/* env 1.1 - Set environment for command Author: Kees J. Bot
- * 17 Dec 1997
- */
-#define nil 0
-#include <sys/types.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <errno.h>
-
-int main(int argc, char **argv)
-{
- int i;
- int iflag= 0;
- int aflag= 0;
- extern char **environ;
-
- i= 1;
- while (i < argc && argv[i][0] == '-') {
- char *opt= argv[i++] + 1;
-
- if (opt[0] == '-' && opt[1] == 0) break; /* -- */
-
- if (opt[0] == 0) iflag= 1; /* - */
-
- while (*opt != 0) switch (*opt++) {
- case 'i':
- iflag= 1; /* Clear environment. */
- break;
- case 'a': /* Specify arg 0 separately. */
- aflag= 1;
- break;
- default:
- fprintf(stderr,
- "Usage: env [-ia] [name=value] ... [utility [argument ...]]\n");
- exit(1);
- }
- }
-
- /* Clear the environment if -i. */
- if (iflag) *environ= nil;
-
- /* Set the new environment strings. */
- while (i < argc && strchr(argv[i], '=') != nil) {
- if (putenv(argv[i]) != 0) {
- fprintf(stderr, "env: Setting '%s' failed: %s\n",
- argv[i], strerror(errno));
- exit(1);
- }
- i++;
- }
-
- /* Environment settings and command may be separated with '--'.
- * This is for compatibility with other envs, we don't advertise it.
- */
- if (i < argc && strcmp(argv[i], "--") == 0) i++;
-
- if (i >= argc) {
- /* No utility given; print environment. */
- char **ep;
-
- for (ep= environ; *ep != nil; ep++) {
- if (puts(*ep) == EOF) {
- fprintf(stderr, "env: %s\n", strerror(errno));
- exit(1);
- }
- }
- return 0;
- } else {
- char *util, **args;
- int err;
-
- util= argv[i];
- args= argv + i;
- if (aflag) args++;
- (void) execvp(util, args);
- err= errno;
- fprintf(stderr, "env: Can't execute %s: %s\n",
- util, strerror(err));
- return err == ENOENT ? 127 : 126;
- }
-}
cp.1 crc.1 crontab.1 dd.1 \
df.1 dhrystone.1 dosdir.1 dosread.1 doswrite.1 \
dumpcore.1 eject.1 \
- env.1 factor.1 \
+ factor.1 \
flexdoc.1 fold.1 format.1 fortune.1 \
fsck.mfs.1 host.1 hostaddr.1 ifdef.1 \
isodir.1 isoinfo.1 isoread.1 \
+++ /dev/null
-.TH ENV 1
-.SH NAME
-env \- set environment for command
-.SH SYNOPSIS
-.B env
-.RB [ \-ia ]
-.RI [ name\fB=\fIvalue "] ..."
-.RI [ utility
-.RI [ argument "...]]"
-.B printenv
-.RB [ \-ia ]
-.RI [ name\fB=\fIvalue "] ..."
-.RI [ utility
-.RI [ argument "...]]"
-.SH DESCRIPTION
-.B Env
-modifies its environment according to the
-.IB name = value
-arguments, and executes
-.I utility
-with the given arguments and the modified environment.
-.PP
-If no utility is specified then the modified environment is printed as
-.IB name = value
-strings, one per line.
-.PP
-.B printenv
-is identical to env in every way and is included for backward compatibility
-.SH OPTIONS
-.TP
-.B \-i
-Use exactly the environment specified by the arguments; the inherited
-environment is ignored.
-.TP
-.B \-a
-Specify all arguments for the utility, i.e. the first of the arguments is
-used as
-.BR "argv[0]" ,
-the program name. Normally the program name is
-.I utility
-itself.
-.SH ENVIRONMENT
-.TP 8n
-.B PATH
-The path used to find utility. It is as modified by
-.BR env ,
-i.e.
-.B not
-the inherited
-.BR PATH .
-.SH "SEE ALSO"
-.BR sh (1),
-.BR execvp (3),
-.BR environ (5).
-.SH DIAGNOSTICS
-The return code is
-.B 0
-after successfully printing the environment,
-.B 1
-on an error within
-.BR env ,
-.B 126
-if the
-.I utility
-could not be executed, or
-.B 127
-if
-.I utility
-could not be found. Appropriate diagnostic messages are printed on standard
-error.
-If
-.I utility
-can be executed then it replaces
-.BR env ,
-so the return code is then the return code of
-.IR utility .
-.SH NOTES
-When run from the standard shell
-.B env
-is only useful with options or without arguments. Otherwise the shell can
-do exactly what
-.B env
-can do, simply omit the word "env" on the command line.
-.PP
-One interesting use of
-.B env
-is with #! on the first line of a script to forge a PATH search for an
-interpreter. For example:
-.PP
-.RS
-#!/usr/bin/env perl
-.RE
-.PP
-This will find the Perl interpreter if it is within the user's PATH. Most
-UNIX-like systems have
-.B env
-in /usr/bin, but
-.B perl
-may be anywhere.
-.SH AUTHOR
-Kees J. Bot <kjb@cs.vu.nl>
2012/10/17 12:00:00,usr.bin/dirname
2011/09/01 13:37:33,usr.bin/du
2012/10/17 12:00:00,usr.bin/expand
+2013/10/17 12:00:00,usr.bin/env
2013/05/31 12:00:00,usr.bin/finger
2013/03/22 12:00:00,usr.bin/from
2013/04/05 12:00:00,usr.bin/ftp
cal chpass cksum \
col column ctags cut \
dirname du \
- expand \
+ env expand \
finger from \
ftp genassym getopt \
head indent infocmp join \
--- /dev/null
+# $NetBSD: Makefile,v 1.4 1995/09/28 07:34:35 perry Exp $
+# @(#)Makefile 8.1 (Berkeley) 6/6/93
+
+PROG= env
+
+.include <bsd.prog.mk>
--- /dev/null
+.\" $NetBSD: env.1,v 1.12 2007/06/08 18:20:42 wiz Exp $
+.\"
+.\" Copyright (c) 1980, 1990 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to Berkeley by
+.\" the Institute of Electrical and Electronics Engineers, Inc.
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" from: @(#)printenv.1 6.7 (Berkeley) 7/28/91
+.\" $NetBSD: env.1,v 1.12 2007/06/08 18:20:42 wiz Exp $
+.\"
+.Dd June 8, 2007
+.Dt ENV 1
+.Os
+.Sh NAME
+.Nm env
+.Nd set and print environment
+.Sh SYNOPSIS
+.Nm
+.Op Fl i
+.Op Ar name=value ...
+.Oo
+.Ar utility
+.Op argument ...
+.Oc
+.Sh DESCRIPTION
+.Nm
+executes
+.Ar utility
+after modifying the environment as
+specified on the command line.
+The option
+.Ar name=value
+specifies
+an environmental variable,
+.Ar name ,
+with a value of
+.Ar value .
+The option
+.Sq Fl i
+causes
+.Nm
+to completely ignore the environment
+it inherits.
+.Pp
+If no
+.Ar utility
+is specified,
+.Nm
+prints out the names and values
+of the variables in the environment, with one
+.Ar name=value
+pair per line.
+.Sh EXIT STATUS
+.Nm
+exits with one of the following values:
+.Bl -tag -width Ds
+.It 0
+.Ar utility
+was invoked and completed successfully.
+In this case the exit code is returned by the utility itself, not
+.Nm .
+If no utility was specified, then
+.Nm
+completed successfully and returned the exit code itself.
+.It 1
+An invalid command line option was passed to
+.Nm .
+.It 1\-125
+.Ar utility
+was invoked, but failed in some way;
+see its manual page for more information.
+In this case the exit code is returned by the utility itself, not
+.Nm .
+.It 126
+.Ar utility
+was found, but could not be invoked.
+.It 127
+.Ar utility
+could not be found.
+.El
+.Sh COMPATIBILITY
+The historic
+.Fl
+option has been deprecated but is still supported in this implementation.
+.Sh SEE ALSO
+.Xr execvp 3 ,
+.Xr environ 7
+.Sh STANDARDS
+The
+.Nm
+utility conforms to
+.St -p1003.2-92 .
+.Sh BUGS
+.Nm
+doesn't handle commands with equal
+.Pq Dq =
+signs in their
+names, for obvious reasons.
--- /dev/null
+/*
+ * Copyright (c) 1988, 1993, 1994
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+#ifndef lint
+__COPYRIGHT("@(#) Copyright (c) 1988, 1993, 1994\
+ The Regents of the University of California. All rights reserved.");
+#endif /* not lint */
+
+#ifndef lint
+/*static char sccsid[] = "@(#)env.c 8.3 (Berkeley) 4/2/94";*/
+__RCSID("$NetBSD: env.c,v 1.20 2010/11/16 02:53:49 christos Exp $");
+#endif /* not lint */
+
+#include <err.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <locale.h>
+#include <errno.h>
+
+static void usage(void) __attribute__((__noreturn__));
+
+extern char **environ;
+
+int
+main(int argc, char **argv)
+{
+ char **ep;
+ char *cleanenv[1];
+ int ch;
+
+ setprogname(*argv);
+ (void)setlocale(LC_ALL, "");
+
+ while ((ch = getopt(argc, argv, "-i")) != -1)
+ switch((char)ch) {
+ case '-': /* obsolete */
+ case 'i':
+ environ = cleanenv;
+ cleanenv[0] = NULL;
+ break;
+ case '?':
+ default:
+ usage();
+ }
+
+ for (argv += optind; *argv && strchr(*argv, '=') != NULL; ++argv)
+ (void)putenv(*argv);
+
+ if (*argv) {
+ /* return 127 if the command to be run could not be found; 126
+ if the command was found but could not be invoked */
+
+ (void)execvp(*argv, argv);
+ err((errno == ENOENT) ? 127 : 126, "%s", *argv);
+ /* NOTREACHED */
+ }
+
+ for (ep = environ; *ep; ep++)
+ (void)printf("%s\n", *ep);
+
+ exit(0);
+}
+
+static void
+usage(void)
+{
+ (void)fprintf(stderr, "Usage: %s [-i] [name=value ...] [command]\n",
+ getprogname());
+ exit(1);
+}