Hi folks,

Right now, env(1) can't be used to run programs with an equals sign in
them for obvious reasons (if it isn't obvious, read the man page :-).
Although this is a documented shortcoming, it's quite unnecessary
given how easy it is to fix it.  Any objections to allowing '--' to
mean "end of env. variable assignments"?

Patch attached below.

Thanks,

                                        Dima Dorfman
                                        [EMAIL PROTECTED]


Index: env/env.c
===================================================================
RCS file: /stl/src/FreeBSD/src/usr.bin/env/env.c,v
retrieving revision 1.5
diff -u -r1.5 env.c
--- env/env.c   1999/08/27 08:59:31     1.5
+++ env/env.c   2001/06/01 04:27:41
@@ -73,6 +73,8 @@
                }
        for (argv += optind; *argv && (p = strchr(*argv, '=')); ++argv)
                (void)setenv(*argv, ++p, 1);
+       if (*argv && strcmp(*argv, "--") == 0)
+               ++argv;
        if (*argv) {
                execvp(*argv, argv);
                err(1, "%s", *argv);
@@ -86,6 +88,6 @@
 usage()
 {
        (void)fprintf(stderr,
-           "usage: env [-] [-i] [name=value ...] [command]\n");
+           "usage: env [-] [-i] [name=value ...] [--] [command]\n");
        exit(1);
 }
Index: printenv/printenv.1
===================================================================
RCS file: /stl/src/FreeBSD/src/usr.bin/printenv/printenv.1,v
retrieving revision 1.10
diff -u -r1.10 printenv.1
--- printenv/printenv.1 2001/05/30 03:15:39     1.10
+++ printenv/printenv.1 2001/06/01 04:27:41
@@ -34,7 +34,7 @@
 .\"    @(#)printenv.1  8.1 (Berkeley) 6/6/93
 .\" $FreeBSD: src/usr.bin/printenv/printenv.1,v 1.10 2001/05/30 03:15:39 dd Exp $
 .\"
-.Dd June 6, 1993
+.Dd May 29, 2001
 .Dt PRINTENV 1
 .Os BSD 3
 .Sh NAME
@@ -47,6 +47,7 @@
 .Op Fl
 .Op Fl i
 .Op Ar name=value ...\&
+.Op --
 .Op Ar command
 .Sh DESCRIPTION
 .Nm Printenv
@@ -80,6 +81,18 @@
 .Ar name  ,
 with a value of
 .Ar value  .
+If the argument
+.Ql --
+is found,
+.Nm env
+will assume that the argument(s) following it are part of
+.Ar command ,
+instead of
+.Ar name=value
+pairs,
+even if they have the
+.Ql =
+symbol in them.
 .Pp
 The options are as follows:
 .Bl -tag -width indent
@@ -130,7 +143,3 @@
 .Nm
 command appeared in
 .Bx 3.0 .
-.Sh BUGS
-.Nm Env
-doesn't handle commands with equal (``='') signs in their
-names, for obvious reasons.

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to