From owner-freebsd-hackers Thu May 31 21:29:45 2001 Delivered-To: freebsd-hackers@freebsd.org Received: from bazooka.unixfreak.org (bazooka.unixfreak.org [63.198.170.138]) by hub.freebsd.org (Postfix) with ESMTP id 19C4D37B422 for ; Thu, 31 May 2001 21:29:39 -0700 (PDT) (envelope-from dima@unixfreak.org) Received: from hornet.unixfreak.org (hornet [63.198.170.140]) by bazooka.unixfreak.org (Postfix) with ESMTP id B31243E2F for ; Thu, 31 May 2001 21:29:38 -0700 (PDT) To: hackers@freebsd.org Subject: Fixing documented bug in env(1) Date: Thu, 31 May 2001 21:29:38 -0700 From: Dima Dorfman Message-Id: <20010601042938.B31243E2F@bazooka.unixfreak.org> Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG 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 dima@unixfreak.org 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 majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message