summaryrefslogtreecommitdiffstats
path: root/newlib/libc/stdio/vfprintf.c
diff options
context:
space:
mode:
Diffstat (limited to 'newlib/libc/stdio/vfprintf.c')
-rw-r--r--newlib/libc/stdio/vfprintf.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/newlib/libc/stdio/vfprintf.c b/newlib/libc/stdio/vfprintf.c
index be35d248c..e3fc099d3 100644
--- a/newlib/libc/stdio/vfprintf.c
+++ b/newlib/libc/stdio/vfprintf.c
@@ -1225,6 +1225,15 @@ reswitch: switch (ch) {
sign = '-';
break;
#endif /* FLOATING_POINT */
+#ifdef _GLIBC_EXTENSION
+ case 'm': /* extension */
+ {
+ int dummy;
+ cp = _strerror_r (data, data->_errno, 1, &dummy);
+ }
+ flags &= ~LONGINT;
+ goto string;
+#endif
case 'n':
#ifndef _NO_LONGLONG
if (flags & QUADINT)
@@ -1272,8 +1281,11 @@ reswitch: switch (ch) {
#ifdef _WANT_IO_C99_FORMATS
case 'S':
#endif
- sign = '\0';
cp = GET_ARG (N, ap, char_ptr_t);
+#ifdef _GLIBC_EXTENSION
+string:
+#endif
+ sign = '\0';
#ifndef __OPTIMIZE_SIZE__
/* Behavior is undefined if the user passed a
NULL string when precision is not 0.