From 5bbd2d0ed6b041f154b1ddbd22369095feb74c35 Mon Sep 17 00:00:00 2001 From: tjr Date: Fri, 11 Oct 2002 22:59:22 +0000 Subject: "Left precision" and "right precision" are not flags, but separate parts of the format string that appear after the field width. --- lib/libc/stdlib/strfmon.c | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) (limited to 'lib/libc/stdlib/strfmon.c') 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 */ -- cgit v1.1