diff options
author | knu <knu@FreeBSD.org> | 2001-11-17 19:10:11 +0000 |
---|---|---|
committer | knu <knu@FreeBSD.org> | 2001-11-17 19:10:11 +0000 |
commit | b58a3e40782ae0e677cf9298f2c46d94b75d464b (patch) | |
tree | 012bf9627bbece65cbf708b3fac1e45edf9656dc /bin | |
parent | 271e61648420b256374ae031ae2d70a0c59672ba (diff) | |
download | FreeBSD-src-b58a3e40782ae0e677cf9298f2c46d94b75d464b.zip FreeBSD-src-b58a3e40782ae0e677cf9298f2c46d94b75d464b.tar.gz |
Make test(1) a builtin command of our sh(1) for efficiency. The
binary size increase is 3,784 bytes (about 0.6%).
I don't drop the printf builtin while I'm here because some /etc/rc.*
scripts seem to use it before mounting /usr where printf(1) resides.
Reviewed by: arch (sheldonh)
Inspired by: NetBSD, ksh
Clued by: ume (on how the printf builtin is used)
Diffstat (limited to 'bin')
-rw-r--r-- | bin/sh/Makefile | 6 | ||||
-rw-r--r-- | bin/sh/builtins.def | 3 | ||||
-rw-r--r-- | bin/sh/sh.1 | 7 | ||||
-rw-r--r-- | bin/test/test.1 | 8 | ||||
-rw-r--r-- | bin/test/test.c | 5 |
5 files changed, 24 insertions, 5 deletions
diff --git a/bin/sh/Makefile b/bin/sh/Makefile index 01c46f5..14e07ea 100644 --- a/bin/sh/Makefile +++ b/bin/sh/Makefile @@ -5,7 +5,7 @@ PROG= sh SHSRCS= alias.c arith.y arith_lex.l cd.c echo.c error.c eval.c exec.c expand.c \ histedit.c input.c jobs.c mail.c main.c memalloc.c miscbltin.c \ mystring.c options.c output.c parser.c printf.c redir.c show.c \ - trap.c var.c + test.c trap.c var.c GENSRCS= builtins.c init.c nodes.c syntax.c GENHDRS= builtins.h nodes.h syntax.h token.h y.tab.h SRCS= ${SHSRCS} ${GENSRCS} ${GENHDRS} y.tab.h @@ -22,7 +22,9 @@ CFLAGS+=-DSHELL -I. -I${.CURDIR} # for debug: # CFLAGS+= -g -DDEBUG=2 -.PATH: ${.CURDIR}/bltin ${.CURDIR}/../../usr.bin/printf +.PATH: ${.CURDIR}/bltin \ + ${.CURDIR}/../../bin/test \ + ${.CURDIR}/../../usr.bin/printf CLEANFILES+= mkinit mkinit.o mknodes mknodes.o \ mksyntax mksyntax.o diff --git a/bin/sh/builtins.def b/bin/sh/builtins.def index 7cdcc38..bd4c1df 100644 --- a/bin/sh/builtins.def +++ b/bin/sh/builtins.def @@ -62,7 +62,7 @@ execcmd exec exitcmd exit expcmd exp let exportcmd export readonly -#exprcmd expr test [ +#exprcmd expr falsecmd false histcmd -h fc fgcmd -j fg @@ -90,3 +90,4 @@ waitcmd wait #foocmd foo aliascmd alias ulimitcmd ulimit +testcmd test [ diff --git a/bin/sh/sh.1 b/bin/sh/sh.1 index 2a11e4d..fe2f3e3 100644 --- a/bin/sh/sh.1 +++ b/bin/sh/sh.1 @@ -1273,9 +1273,12 @@ make it the first or last character listed. This section lists the commands which are builtin because they need to perform some operation that cannot be performed by a separate process. In addition to -these, a builtin version of the +these, builtin versions of the .Xr printf 1 -command is provided for efficiency. +command and +the +.Xr test 1 +command are provided for efficiency. .Bl -tag -width Ds .It Ic \&: A null command that returns a 0 (true) exit value. diff --git a/bin/test/test.1 b/bin/test/test.1 index 8a996cd..7b8a84f 100644 --- a/bin/test/test.1 +++ b/bin/test/test.1 @@ -286,6 +286,13 @@ The operator has higher precedence than the .Fl o operator. +.Pp +Some shells may provide a builtin +.Nm +command which is similar or identical to this utility. +Consult the +.Xr builtin 1 +manual page. .Sh GRAMMAR AMBIGUITY The .Nm @@ -310,6 +317,7 @@ missing. An error occurred. .El .Sh SEE ALSO +.Xr builtin 1 , .Xr expr 1 , .Xr sh 1 .Sh STANDARDS diff --git a/bin/test/test.c b/bin/test/test.c index 1d96297..1cd9a11 100644 --- a/bin/test/test.c +++ b/bin/test/test.c @@ -27,6 +27,11 @@ static const char rcsid[] = #include <string.h> #include <unistd.h> +#ifdef SHELL +#define main testcmd +#include "bltin/bltin.h" +#endif + /* test(1) accepts the following grammar: oexpr ::= aexpr | aexpr "-o" oexpr ; aexpr ::= nexpr | nexpr "-a" aexpr ; |