Path: utzoo!attcan!uunet!lll-winken!lll-tis!mordor!joyce!sri-unix!quintus!ok From: ok@quintus Newsgroups: comp.sources.bugs Subject: Haugh's "env" Message-ID: <168@quintus.UUCP> Date: 14 Jul 88 23:35:45 GMT Sender: n...@quintus.UUCP Reply-To: ok@quintus () Organization: Quintus Computer Systems, Inc. Lines: 20 "john f. haugh ii" recently sent out public domain code which implements the System V "env" command. There are a number of problems: (1) It uses strchr() rather than index(); if you have an older BSD system (why else would you lack "env"?) you probably haven't got strchr() either. (2) main() doesn't end with a call to exit(0); but just falls off the end. (3) When a command can't be executed, the diagnostic message is <command pathname>: <perror text> whereas the real "env" command prints <perror text>: <command pathname> This one's pretty minor. (4) When a command can't be executed, Haugh's version does _exit(127); the status returned by the real env is 1, so change that 127 to 1. (5) Haugh's version calls execve(*argv, argv, env); which means that e.g. "env fred=47 sh" doesn't work. This should be extern char **environ; environ = env; execvp(*argv, argv); {Why is there no execvep() library routine?}
Path: utzoo!attcan!uunet!lll-winken!lll-tis!ames!elroy!devvax!lwall From: lw...@devvax.JPL.NASA.GOV (Larry Wall) Newsgroups: comp.sources.bugs Subject: Re: Haugh's "env" Message-ID: <2457@devvax.JPL.NASA.GOV> Date: 15 Jul 88 07:48:13 GMT References: <168@quintus.UUCP> Reply-To: lw...@devvax.JPL.NASA.GOV (Larry Wall) Organization: Jet Propulsion Laboratory, Pasadena, CA. Lines: 30 In article <1...@quintus.UUCP> ok@quintus () writes: : "john f. haugh ii" recently sent out public domain code which implements : the System V "env" command... Just for the fun of it, I whipped one off in perl (discovering one perl bug in the process--this needs patch 9 for reset 'E' to wipe the environment). Here's env a la perl: #!/usr/bin/perl reset 'E', shift if $ARGV[0] eq '-'; $ENV{$1} = $2, shift while $ARGV[0] =~ /(\w+)=(.*)/; if ($#ARGV < 0) { foreach $key (sort keys(ENV)) { print $key,'=',$ENV{$key},"\n"; } } else { exec @ARGV; print $!,': ',shift,"\n"; exit 1; } The only difference I can see is that it sorts the environment variables when it prints them out. Larry Wall lw...@jpl-devvax.jpl.nasa.gov
Path: utzoo!attcan!uunet!lll-winken!lll-lcc!ames!killer!vector!rpp386!jfh From: j...@rpp386.UUCP (John F. Haugh II) Newsgroups: comp.sources.bugs Subject: Re: Haugh's "env" Summary: like i said, what do you expect from 30 minutes or so. Message-ID: <4033@rpp386.UUCP> Date: 15 Jul 88 22:36:16 GMT References: <168@quintus.UUCP> Reply-To: j...@rpp386.UUCP (The Beach Bum) Organization: Big "D" Home for Wayward Hackers Lines: 16 In article <1...@quintus.UUCP> ok@quintus () writes: > >"john f. haugh ii" recently sent out public domain code which implements >the System V "env" command. There are a number of problems: thanks for the debugging, but as i said in the posting i was actually waiting for my plexus p/95 to crash when i wrote that. did anyone else find anything because i kind of like env and i was going to put mine on my 7th edition box ... - john. -- John F. Haugh II +--------- Cute Chocolate Quote --------- HASA, "S" Division | "USENET should not be confused with UUCP: killer!rpp386!jfh | something that matters, like CHOCOLATE" DOMAIN: j...@rpp386.uucp | -- with my apologizes