summaryrefslogtreecommitdiffstats
path: root/lib/libc/stdlib/strfmon.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libc/stdlib/strfmon.c')
-rw-r--r--lib/libc/stdlib/strfmon.c28
1 files changed, 15 insertions, 13 deletions
diff --git a/lib/libc/stdlib/strfmon.c b/lib/libc/stdlib/strfmon.c
index d30f268..b74baf0 100644
--- a/lib/libc/stdlib/strfmon.c
+++ b/lib/libc/stdlib/strfmon.c
@@ -174,18 +174,6 @@ strfmon(char * __restrict s, size_t maxsize, const char * __restrict format,
case '-': /* alignment (left) */
flags |= LEFT_JUSTIFY;
continue;
- case '#': /* left || right precision */
- case '.':
- if (*fmt == '#')
- ntmp = &left_prec;
- else
- ntmp = &right_prec;
-
- if (!isdigit((unsigned char)*++fmt))
- goto format_error;
- GET_NUMBER(*ntmp);
- fmt--;
- continue;
default:
break;
}
@@ -201,7 +189,21 @@ strfmon(char * __restrict s, size_t maxsize, const char * __restrict format,
if (dst + width >= s + maxsize)
goto e2big_error;
}
-
+
+ /* Left precision */
+ if (*fmt == '#') {
+ if (!isdigit((unsigned char)*++fmt))
+ goto format_error;
+ GET_NUMBER(left_prec);
+ }
+
+ /* Right precision */
+ if (*fmt == '.') {
+ if (!isdigit((unsigned char)*++fmt))
+ goto format_error;
+ GET_NUMBER(right_prec);
+ }
+
/* Conversion Characters */
switch (*fmt++) {
case 'i': /* use internaltion currency format */
OpenPOWER on IntegriCloud