* add printf(1) as mksh(1) builtin on MirOS

(or, more general, all systems using Makefile
  instead of Build.sh)
* document this fact
This commit is contained in:
tg 2005-08-26 22:03:56 +00:00
parent c34c9d7542
commit 6c5d08ea6f
5 changed files with 51 additions and 10 deletions

View File

@ -1,10 +1,19 @@
# $MirOS: src/bin/mksh/Makefile,v 1.3 2005/05/23 14:48:21 tg Exp $
# $MirOS: src/bin/mksh/Makefile,v 1.4 2005/08/26 22:03:55 tg Exp $
PROG= mksh
SRCS= alloc.c edit.c eval.c exec.c expr.c funcs.c histrap.c \
jobs.c lex.c main.c misc.c shf.c syn.c tree.c var.c
CDIAGFLAGS+= -Wno-cast-qual
.include <bsd.own.mk>
.ifndef NO_PRINTF_BUILTIN
.PATH: ${BSDSRCDIR}/usr.bin/printf
SRCS+= printf.c
CFLAGS_printf.o=-DBUILTIN
CPPFLAGS+= -DUSE_PRINTF
.endif
check:
@cd ${.CURDIR} && ${MAKE} regress V=-v

View File

@ -1,4 +1,4 @@
# $MirOS: src/bin/mksh/check.t,v 1.28 2005/08/21 13:02:16 tg Exp $
# $MirOS: src/bin/mksh/check.t,v 1.29 2005/08/26 22:03:55 tg Exp $
# $OpenBSD: bksl-nl.t,v 1.2 2001/01/28 23:04:56 niklas Exp $
# $OpenBSD: history.t,v 1.5 2001/01/28 23:04:56 niklas Exp $
# $OpenBSD: read.t,v 1.3 2003/03/10 03:48:16 david Exp $
@ -3701,5 +3701,5 @@ category: pdksh
stdin:
echo $KSH_VERSION
expected-stdout:
@(#)MIRBSD KSH R24 2005/08/21
@(#)MIRBSD KSH R25 2005/08/26 pre
---

25
funcs.c
View File

@ -1,4 +1,4 @@
/** $MirOS: src/bin/mksh/funcs.c,v 1.16 2005/08/21 12:52:29 tg Exp $ */
/** $MirOS: src/bin/mksh/funcs.c,v 1.17 2005/08/26 22:03:55 tg Exp $ */
/* $OpenBSD: c_ksh.c,v 1.27 2005/03/30 17:16:37 deraadt Exp $ */
/* $OpenBSD: c_sh.c,v 1.29 2005/03/30 17:16:37 deraadt Exp $ */
/* $OpenBSD: c_test.c,v 1.17 2005/03/30 17:16:37 deraadt Exp $ */
@ -13,7 +13,11 @@
#include <ulimit.h>
#endif
__RCSID("$MirOS: src/bin/mksh/funcs.c,v 1.16 2005/08/21 12:52:29 tg Exp $");
__RCSID("$MirOS: src/bin/mksh/funcs.c,v 1.17 2005/08/26 22:03:55 tg Exp $");
#ifdef USE_PRINTF
int c_printf(char **);
#endif
int
c_cd(char **wp)
@ -1079,6 +1083,20 @@ c_fgbg(char **wp)
return bg ? 0 : rv;
}
#ifdef USE_PRINTF
int
c_printf(char **wp)
{
extern int progprintf(int, char *[]);
int argc;
for (argc = 0; wp[argc]; argc++)
;
return progprintf(argc, wp);
}
#endif
struct kill_info {
int num_width;
int name_width;
@ -1373,6 +1391,9 @@ const struct builtin kshbuiltins [] = {
{"+bg", c_fgbg},
{"+fg", c_fgbg},
{"bind", c_bind},
#ifdef USE_PRINTF
{"printf", c_printf},
#endif
{NULL, NULL}
};

6
main.c
View File

@ -1,4 +1,4 @@
/** $MirOS: src/bin/mksh/main.c,v 1.24 2005/08/21 13:02:17 tg Exp $ */
/** $MirOS: src/bin/mksh/main.c,v 1.25 2005/08/26 22:03:56 tg Exp $ */
/* $OpenBSD: main.c,v 1.38 2005/03/30 17:16:37 deraadt Exp $ */
/* $OpenBSD: tty.c,v 1.8 2005/03/30 17:16:37 deraadt Exp $ */
/* $OpenBSD: io.c,v 1.21 2005/03/30 17:16:37 deraadt Exp $ */
@ -13,9 +13,9 @@
#include <time.h>
#endif
__RCSID("$MirOS: src/bin/mksh/main.c,v 1.24 2005/08/21 13:02:17 tg Exp $");
__RCSID("$MirOS: src/bin/mksh/main.c,v 1.25 2005/08/26 22:03:56 tg Exp $");
#define MKSH_VERSION "@(#)MIRBSD KSH R24 2005/08/21"
#define MKSH_VERSION "@(#)MIRBSD KSH R25 2005/08/26 pre"
extern char **environ;

15
mksh.1
View File

@ -1,4 +1,4 @@
.\" $MirOS: src/bin/mksh/mksh.1,v 1.17 2005/08/26 21:54:05 tg Exp $
.\" $MirOS: src/bin/mksh/mksh.1,v 1.18 2005/08/26 22:03:56 tg Exp $
.\" $OpenBSD: ksh.1,v 1.101 2005/08/01 19:29:57 jmc Exp $
.\" $OpenBSD: sh.1tbl,v 1.53 2004/12/10 01:56:56 jaredy Exp $
.\"
@ -2314,7 +2314,8 @@ Additional
regular commands
.Pp
.Ic \&[ , echo , let , print ,
.Ic pwd , test , ulimit , whence
.Ic printf , pwd , test , ulimit ,
.Ic whence
.Pp
In the future, the additional
.Nm
@ -2967,6 +2968,15 @@ As above, the
.Fl n
option suppresses the trailing newline.
.Pp
.It Ic printf Ar format Op Ar arguments
This builtin is not included with portable
.Nm
and only available under
.Mx .
It mimics the
.Xr printf 1
behaviour; see there for a complete reference.
.Pp
.It Ic pwd Op Fl LP
Print the present working directory.
If the
@ -5073,6 +5083,7 @@ Shell database.
.Xr ed 1 ,
.Xr getconf 1 ,
.Xr getopt 1 ,
.Xr printf 1 ,
.Xr sed 1 ,
.Xr sh 1 ,
.Xr stty 1 ,