summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2016-05-06 12:16:19 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2016-05-06 14:07:34 +0200
commit356f59c898c982d7cc45e067d79a329ab5ab8caa (patch)
tree1620c4a0890cc677177e923c94c4d8f9b2535c29
parentsubr_prf.c: Port to RTEMS (diff)
downloadrtems-libbsd-356f59c898c982d7cc45e067d79a329ab5ab8caa.tar.bz2
kvprintf: Add support for %m
-rw-r--r--freebsd/sys/kern/subr_prf.c8
-rw-r--r--testsuite/log01/test_main.c6
2 files changed, 14 insertions, 0 deletions
diff --git a/freebsd/sys/kern/subr_prf.c b/freebsd/sys/kern/subr_prf.c
index 56b3bfaf..8e627d1a 100644
--- a/freebsd/sys/kern/subr_prf.c
+++ b/freebsd/sys/kern/subr_prf.c
@@ -800,6 +800,11 @@ reswitch: switch (ch = (u_char)*fmt++) {
else
*(va_arg(ap, int *)) = retval;
break;
+#ifdef __rtems__
+ case 'm':
+ p = strerror(errno);
+ goto handle_string;
+#endif /* __rtems__ */
case 'o':
base = 8;
goto handle_nosign;
@@ -819,6 +824,9 @@ reswitch: switch (ch = (u_char)*fmt++) {
goto handle_nosign;
case 's':
p = va_arg(ap, char *);
+#ifdef __rtems__
+handle_string:
+#endif /* __rtems__ */
if (p == NULL)
p = "(null)";
if (!dot)
diff --git a/testsuite/log01/test_main.c b/testsuite/log01/test_main.c
index 0b3db765..5c177359 100644
--- a/testsuite/log01/test_main.c
+++ b/testsuite/log01/test_main.c
@@ -36,6 +36,7 @@
#include <syslog.h>
#include <assert.h>
+#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -138,6 +139,11 @@ test_main(void)
printf("out: %4D", "AAAA", ":");
check(ctx, "out: 41:41:41:41");
+ errno = ENOMSG;
+ reset(ctx, LOG_PRINTF);
+ printf("%m");
+ check(ctx, "No message of desired type");
+
exit(0);
}