diff --git a/userland/bin/sh/sh.c b/userland/bin/sh/sh.c index 2b9819f..565665e 100644 --- a/userland/bin/sh/sh.c +++ b/userland/bin/sh/sh.c @@ -534,7 +534,7 @@ interactive(void) struct exitinfo ei; while (1) { - printf("OS/161$ "); + printsf("OS/161$ "); getcmd(buf, sizeof(buf)); docommand(buf, &ei); printstatus(&ei, 0); diff --git a/userland/include/stdio.h b/userland/include/stdio.h index 20e96cb..440a822 100644 --- a/userland/include/stdio.h +++ b/userland/include/stdio.h @@ -56,6 +56,11 @@ int vprintf(const char *fmt, __va_list ap); int snprintf(char *buf, size_t len, const char *fmt, ...); int vsnprintf(char *buf, size_t len, const char *fmt, __va_list ap); +/* Automated testing extensions. */ + +int tprintf(const char *fmt, ...); +int printsf(const char *fmt, ...); + /* Print the argument string and then a newline. Returns 0 or -1 on error. */ int puts(const char *); diff --git a/userland/lib/libc/stdio/printf.c b/userland/lib/libc/stdio/printf.c index f0d627b..51553b0 100644 --- a/userland/lib/libc/stdio/printf.c +++ b/userland/lib/libc/stdio/printf.c @@ -31,6 +31,8 @@ #include #include #include +#include +#include /* * printf - C standard I/O function. @@ -76,3 +78,36 @@ vprintf(const char *fmt, va_list ap) } return chars; } + +/* printf variant that is quiet during automated testing */ +int +tprintf(const char *fmt, ...) +{ + int chars; + va_list ap; + + if (strcmp(KERNEL_SECRET, "") != 0) { + return 0; + } + + va_start(ap, fmt); + chars = vprintf(fmt, ap); + va_end(ap); + + return chars; +} + +/* printf variant that prepends the kernel secret */ +int +printsf(const char *fmt, ...) +{ + int chars; + va_list ap; + + printf("%s: ", KERNEL_SECRET); + va_start(ap, fmt); + chars = vprintf(fmt, ap); + va_end(ap); + + return chars; +} diff --git a/userland/testbin/randcall/gencalls.sh b/userland/testbin/randcall/gencalls.sh index 2276e7a..f708da1 100755 --- a/userland/testbin/randcall/gencalls.sh +++ b/userland/testbin/randcall/gencalls.sh @@ -67,7 +67,7 @@ awk < $1 ' if (i