diff --git a/bin/sh/eval.c b/bin/sh/eval.c index 2144c401436d..d26c400aba9b 100644 --- a/bin/sh/eval.c +++ b/bin/sh/eval.c @@ -1,4 +1,4 @@ -/* $NetBSD: eval.c,v 1.25 1995/05/19 15:08:55 christos Exp $ */ +/* $NetBSD: eval.c,v 1.26 1995/06/09 01:53:44 christos Exp $ */ /*- * Copyright (c) 1993 @@ -38,9 +38,9 @@ #ifndef lint #if 0 -static char sccsid[] = "@(#)eval.c 8.8 (Berkeley) 5/19/95"; +static char sccsid[] = "@(#)eval.c 8.9 (Berkeley) 6/8/95"; #else -static char rcsid[] = "$Header: /cvsroot/src/bin/sh/eval.c,v 1.25 1995/05/19 15:08:55 christos Exp $"; +static char sccsid[] = "$NetBSD: eval.c,v 1.26 1995/06/09 01:53:44 christos Exp $"; #endif #endif /* not lint */ @@ -677,7 +677,18 @@ evalcommand(cmd, flags, backcmd) cmdentry.cmdtype = CMDBUILTIN; cmdentry.u.index = BLTINCMD; } else { - find_command(argv[0], &cmdentry, 1); + static const char PATH[] = "PATH="; + char *path = pathval(); + + /* + * Modify the command lookup path, if a PATH= assignment + * is present + */ + for (sp = varlist.list ; sp ; sp = sp->next) + if (strncmp(sp->text, PATH, sizeof(PATH) - 1) == 0) + path = sp->text + sizeof(PATH) - 1; + + find_command(argv[0], &cmdentry, 1, path); if (cmdentry.cmdtype == CMDUNKNOWN) { /* command not found */ exitstatus = 1; flushout(&errout); @@ -876,7 +887,8 @@ prehash(n) if (n->type == NCMD && n->ncmd.args) if (goodname(n->ncmd.args->narg.text)) - find_command(n->ncmd.args->narg.text, &entry, 0); + find_command(n->ncmd.args->narg.text, &entry, 0, + pathval()); } diff --git a/bin/sh/exec.c b/bin/sh/exec.c index b6b0ffcd3a8b..461f8cc40e21 100644 --- a/bin/sh/exec.c +++ b/bin/sh/exec.c @@ -1,4 +1,4 @@ -/* $NetBSD: exec.c,v 1.16 1995/05/11 21:29:02 christos Exp $ */ +/* $NetBSD: exec.c,v 1.17 1995/06/09 01:53:50 christos Exp $ */ /*- * Copyright (c) 1991, 1993 @@ -38,9 +38,9 @@ #ifndef lint #if 0 -static char sccsid[] = "@(#)exec.c 8.3 (Berkeley) 5/4/95"; +static char sccsid[] = "@(#)exec.c 8.4 (Berkeley) 6/8/95"; #else -static char rcsid[] = "$NetBSD: exec.c,v 1.16 1995/05/11 21:29:02 christos Exp $"; +static char rcsid[] = "$NetBSD: exec.c,v 1.17 1995/06/09 01:53:50 christos Exp $"; #endif #endif /* not lint */ @@ -343,7 +343,7 @@ hashcmd(argc, argv) && (cmdp->cmdtype == CMDNORMAL || (cmdp->cmdtype == CMDBUILTIN && builtinloc >= 0))) delete_cmd_entry(); - find_command(name, &entry, 1); + find_command(name, &entry, 1, pathval()); if (verbose) { if (entry.cmdtype != CMDUNKNOWN) { /* if no error msg */ cmdp = cmdlookup(name, 0); @@ -404,15 +404,15 @@ printentry(cmdp, verbose) */ void -find_command(name, entry, printerr) +find_command(name, entry, printerr, path) char *name; struct cmdentry *entry; int printerr; + char *path; { struct tblentry *cmdp; int index; int prev; - char *path; char *fullname; struct stat statb; int e; @@ -448,7 +448,6 @@ find_command(name, entry, printerr) prev = cmdp->param.index; } - path = pathval(); e = ENOENT; index = -1; loop: diff --git a/bin/sh/exec.h b/bin/sh/exec.h index 39d9acc04419..ac1b0a985514 100644 --- a/bin/sh/exec.h +++ b/bin/sh/exec.h @@ -1,4 +1,4 @@ -/* $NetBSD: exec.h,v 1.8 1995/05/11 21:29:05 christos Exp $ */ +/* $NetBSD: exec.h,v 1.9 1995/06/09 01:53:53 christos Exp $ */ /*- * Copyright (c) 1991, 1993 @@ -35,7 +35,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * @(#)exec.h 8.2 (Berkeley) 5/4/95 + * @(#)exec.h 8.3 (Berkeley) 6/8/95 */ /* values of cmdtype */ @@ -59,7 +59,7 @@ extern char *pathopt; /* set by padvance */ void shellexec __P((char **, char **, char *, int)); char *padvance __P((char **, char *)); int hashcmd __P((int, char **)); -void find_command __P((char *, struct cmdentry *, int)); +void find_command __P((char *, struct cmdentry *, int, char *)); int find_builtin __P((char *)); void hashcd __P((void)); void changepath __P((char *)); diff --git a/bin/sh/input.c b/bin/sh/input.c index 77839fdf3af4..33f7df1c2138 100644 --- a/bin/sh/input.c +++ b/bin/sh/input.c @@ -1,4 +1,4 @@ -/* $NetBSD: input.c,v 1.15 1995/06/07 16:28:03 cgd Exp $ */ +/* $NetBSD: input.c,v 1.16 1995/06/09 01:53:54 christos Exp $ */ /*- * Copyright (c) 1991, 1993 @@ -38,9 +38,9 @@ #ifndef lint #if 0 -static char sccsid[] = "@(#)input.c 8.2 (Berkeley) 5/4/95"; +static char sccsid[] = "@(#)input.c 8.3 (Berkeley) 6/9/95"; #else -static char rcsid[] = "$NetBSD: input.c,v 1.15 1995/06/07 16:28:03 cgd Exp $"; +static char rcsid[] = "$NetBSD: input.c,v 1.16 1995/06/09 01:53:54 christos Exp $"; #endif #endif /* not lint */