add “\builtin” utility
This commit is contained in:
parent
ff72ba8399
commit
950df6491d
11
exec.c
11
exec.c
@ -23,7 +23,7 @@
|
||||
|
||||
#include "sh.h"
|
||||
|
||||
__RCSID("$MirOS: src/bin/mksh/exec.c,v 1.188 2017/03/11 22:58:51 tg Exp $");
|
||||
__RCSID("$MirOS: src/bin/mksh/exec.c,v 1.189 2017/03/11 23:22:34 tg Exp $");
|
||||
|
||||
#ifndef MKSH_DEFAULT_EXECSHELL
|
||||
#define MKSH_DEFAULT_EXECSHELL MKSH_UNIXROOT "/bin/sh"
|
||||
@ -978,13 +978,12 @@ scriptexec(struct op *tp, const char **ap)
|
||||
errorf(Tf_sD_sD_s, tp->str, sh, cstrerror(errno));
|
||||
}
|
||||
|
||||
/* actual 'builtin' built-in utility call is handled in comexec() */
|
||||
int
|
||||
shcomexec(const char **wp)
|
||||
c_builtin(const char **wp)
|
||||
{
|
||||
struct tbl *tp;
|
||||
|
||||
tp = ktsearch(&builtins, *wp, hash(*wp));
|
||||
return (call_builtin(tp, wp, "shcomexec", false));
|
||||
return (call_builtin(ktsearch(&builtins, *wp, hash(*wp)), wp,
|
||||
Tbuiltin, false));
|
||||
}
|
||||
|
||||
/*
|
||||
|
3
funcs.c
3
funcs.c
@ -38,7 +38,7 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
__RCSID("$MirOS: src/bin/mksh/funcs.c,v 1.324 2017/03/11 23:10:40 tg Exp $");
|
||||
__RCSID("$MirOS: src/bin/mksh/funcs.c,v 1.325 2017/03/11 23:22:35 tg Exp $");
|
||||
|
||||
#if HAVE_KILLPG
|
||||
/*
|
||||
@ -100,6 +100,7 @@ const struct builtin mkshbuiltins[] = {
|
||||
/* no =: AT&T manual wrong */
|
||||
{Talias, c_alias},
|
||||
{"*=break", c_brkcont},
|
||||
{T_builtin, c_builtin},
|
||||
{Tbuiltin, c_builtin},
|
||||
{Tbcat, c_cat},
|
||||
{Tcd, c_cd},
|
||||
|
10
main.c
10
main.c
@ -34,7 +34,7 @@
|
||||
#include <locale.h>
|
||||
#endif
|
||||
|
||||
__RCSID("$MirOS: src/bin/mksh/main.c,v 1.323 2017/03/11 22:58:51 tg Exp $");
|
||||
__RCSID("$MirOS: src/bin/mksh/main.c,v 1.324 2017/03/11 23:22:36 tg Exp $");
|
||||
|
||||
extern char **environ;
|
||||
|
||||
@ -257,7 +257,7 @@ main_init(int argc, const char *argv[], Source **sp, struct block **lp)
|
||||
|
||||
/* define built-in commands and see if we were called as one */
|
||||
ktinit(APERM, &builtins,
|
||||
/* currently up to 54 builtins: 75% of 128 = 2^7 */
|
||||
/* currently up to 55 builtins: 75% of 128 = 2^7 */
|
||||
7);
|
||||
for (i = 0; mkshbuiltins[i].name != NULL; i++)
|
||||
if (!strcmp(ccp, builtin(mkshbuiltins[i].name,
|
||||
@ -382,7 +382,7 @@ main_init(int argc, const char *argv[], Source **sp, struct block **lp)
|
||||
setstr(vp, current_wd, KSH_RETURN_ERROR);
|
||||
|
||||
for (wp = initcoms; *wp != NULL; wp++) {
|
||||
shcomexec(wp);
|
||||
c_builtin(wp);
|
||||
while (*wp != NULL)
|
||||
wp++;
|
||||
}
|
||||
@ -627,7 +627,7 @@ main_init(int argc, const char *argv[], Source **sp, struct block **lp)
|
||||
}
|
||||
|
||||
if (restricted_shell) {
|
||||
shcomexec(restr_com);
|
||||
c_builtin(restr_com);
|
||||
/* After typeset command... */
|
||||
Flag(FRESTRICTED) = 1;
|
||||
}
|
||||
@ -657,7 +657,7 @@ main(int argc, const char *argv[])
|
||||
|
||||
if ((rv = main_init(argc, argv, &s, &l)) == 0) {
|
||||
if (Flag(FAS_BUILTIN)) {
|
||||
rv = shcomexec(l->argv);
|
||||
rv = c_builtin(l->argv);
|
||||
} else {
|
||||
shell(s, true);
|
||||
/* NOTREACHED */
|
||||
|
Loading…
x
Reference in New Issue
Block a user