• MKSH_SMALL users want to trade off size vs functionality,
they thusly don't deserve shebang processing • fix a comment (spelling; technical correctness)
This commit is contained in:
parent
002904664e
commit
0dba495c4b
8
exec.c
8
exec.c
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
#include "sh.h"
|
#include "sh.h"
|
||||||
|
|
||||||
__RCSID("$MirOS: src/bin/mksh/exec.c,v 1.28 2007/04/17 21:26:34 tg Exp $");
|
__RCSID("$MirOS: src/bin/mksh/exec.c,v 1.29 2007/04/18 00:59:20 tg Exp $");
|
||||||
|
|
||||||
static int comexec(struct op *, struct tbl *volatile, const char **,
|
static int comexec(struct op *, struct tbl *volatile, const char **,
|
||||||
int volatile);
|
int volatile);
|
||||||
|
@ -674,9 +674,11 @@ static void
|
||||||
scriptexec(struct op *tp, const char **ap)
|
scriptexec(struct op *tp, const char **ap)
|
||||||
{
|
{
|
||||||
const char *sh;
|
const char *sh;
|
||||||
|
#ifndef MKSH_SMALL
|
||||||
unsigned char *cp;
|
unsigned char *cp;
|
||||||
char buf[64]; /* 64 == MAXINTERP in MirBSD <sys/param.h> */
|
char buf[64]; /* 64 == MAXINTERP in MirBSD <sys/param.h> */
|
||||||
int fd;
|
int fd;
|
||||||
|
#endif
|
||||||
union mksh_ccphack args, cap;
|
union mksh_ccphack args, cap;
|
||||||
|
|
||||||
sh = str_val(global("EXECSHELL"));
|
sh = str_val(global("EXECSHELL"));
|
||||||
|
@ -687,6 +689,7 @@ scriptexec(struct op *tp, const char **ap)
|
||||||
|
|
||||||
*tp->args-- = tp->str;
|
*tp->args-- = tp->str;
|
||||||
|
|
||||||
|
#ifndef MKSH_SMALL
|
||||||
if ((fd = open(tp->str, O_RDONLY)) >= 0) {
|
if ((fd = open(tp->str, O_RDONLY)) >= 0) {
|
||||||
/* read first MAXINTERP octets from file */
|
/* read first MAXINTERP octets from file */
|
||||||
if (read(fd, buf, sizeof (buf)) <= 0)
|
if (read(fd, buf, sizeof (buf)) <= 0)
|
||||||
|
@ -735,13 +738,14 @@ scriptexec(struct op *tp, const char **ap)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
noshebang:
|
noshebang:
|
||||||
|
#endif
|
||||||
args.ro = tp->args;
|
args.ro = tp->args;
|
||||||
*args.ro = sh;
|
*args.ro = sh;
|
||||||
|
|
||||||
cap.ro = ap;
|
cap.ro = ap;
|
||||||
execve(args.rw[0], args.rw, cap.rw);
|
execve(args.rw[0], args.rw, cap.rw);
|
||||||
|
|
||||||
/* report both the program that was run and the bogus shell */
|
/* report both the programme that was run and the bogus interpreter */
|
||||||
errorf("%s: %s: %s", tp->str, sh, strerror(errno));
|
errorf("%s: %s: %s", tp->str, sh, strerror(errno));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue