Do not run shell from /bin, run it from $PATH.

Bump MAKE_VERSION to 5200205221.
This commit is contained in:
ru 2002-05-22 14:53:18 +00:00
parent 367d0965de
commit 7d529109a8
5 changed files with 29 additions and 7 deletions

View File

@ -15,7 +15,7 @@ SRCS+= lstAppend.c lstAtEnd.c lstAtFront.c lstClose.c lstConcat.c \
NOSHARED?= YES
CFLAGS+=-DMAKE_VERSION=\"5200205220\"
CFLAGS+=-DMAKE_VERSION=\"5200205221\"
main.o: ${MAKEFILE}

View File

@ -281,7 +281,11 @@ CompatRunCommand (cmdp, gnp)
* -e flag as well as -c if it's supposed to exit when it hits an
* error.
*/
static char *shargv[4] = { "/bin/sh" };
#ifndef _PATH_DEFSHELLDIR
static char *shargv[4] = { "sh" };
#else /* _PATH_DEFSHELLDIR */
static char *shargv[4] = { _PATH_DEFSHELLDIR"/sh" };
#endif /* _PATH_DEFSHELLDIR */
shargv[1] = (errCheck ? "-ec" : "-c");
shargv[2] = cmd;
@ -293,7 +297,11 @@ CompatRunCommand (cmdp, gnp)
* This command must be passed by the shell for other reasons..
* or.. possibly not at all.
*/
static char *shargv[4] = { "/bin/sh" };
#ifndef _PATH_DEFSHELLDIR
static char *shargv[4] = { "sh" };
#else /* _PATH_DEFSHELLDIR */
static char *shargv[4] = { _PATH_DEFSHELLDIR"/sh" };
#endif /* _PATH_DEFSHELLDIR */
if (internal == -1) {
/* Command does not need to be executed */
@ -333,7 +341,7 @@ CompatRunCommand (cmdp, gnp)
(void) write (STDERR_FILENO, strerror(errno), strlen(strerror(errno)));
(void) write (STDERR_FILENO, "\n", 1);
} else {
(void)execv(av[0], av);
(void)execvp(av[0], av);
}
exit(1);
}

View File

@ -1283,7 +1283,7 @@ JobExec(job, argv)
Rmt_Exec(shellPath, argv, FALSE);
} else
#endif /* REMOTE */
(void) execv(shellPath, argv);
(void) execvp(shellPath, argv);
(void) write(STDERR_FILENO, "Could not execute shell\n",
sizeof("Could not execute shell"));
@ -2449,7 +2449,11 @@ Job_Init(maxproc, maxlocal)
* All default shells are located in _PATH_DEFSHELLDIR.
*/
shellName = commandShell->name;
#ifndef _PATH_DEFSHELLDIR
shellPath = shellName;
#else /* _PATH_DEFSHELLDIR */
shellPath = str_concat(_PATH_DEFSHELLDIR, shellName, STR_ADDSLASH);
#endif /* _PATH_DEFSHELLDIR */
}
if (commandShell->exit == NULL) {

View File

@ -1018,9 +1018,17 @@ Cmd_Exec(cmd, err)
(void) close(fds[1]);
#if DEFSHELL == 1
(void) execv("/bin/sh", args);
#ifndef _PATH_DEFSHELLDIR
(void) execvp("sh", args);
#else /* _PATH_DEFSHELLDIR */
(void) execv(_PATH_DEFSHELLDIR"/sh", args);
#endif /* _PATH_DEFSHELLDIR */
#elif DEFSHELL == 2
(void) execv("/bin/ksh", args);
#ifndef _PATH_DEFSHELLDIR
(void) execvp("ksh", args);
#else /* _PATH_DEFSHELLDIR */
(void) execv(_PATH_DEFSHELLDIR"/ksh", args);
#endif /* _PATH_DEFSHELLDIR */
#else
#error "DEFSHELL must be 1 or 2."
#endif

View File

@ -40,9 +40,11 @@
#ifndef _PATH_OBJDIRPREFIX
#define _PATH_OBJDIRPREFIX "/usr/obj"
#endif /* ! _PATH_OBJDIRPREFIX */
#ifndef __FreeBSD__
#ifndef _PATH_DEFSHELLDIR
#define _PATH_DEFSHELLDIR "/bin"
#endif /* ! _PATH_DEFSHELLDIR */
#endif /* not __FreeBSD__ */
#ifndef _PATH_DEFSYSMK
#define _PATH_DEFSYSMK "sys.mk"
#endif /* ! _PATH_DEFSYSMK */