Index: fusl/src/locale/strfmon.c |
diff --git a/fusl/src/locale/strfmon.c b/fusl/src/locale/strfmon.c |
index 7cf2136a06fb211dcc357630cc4e4cc1611676b8..664616c8501cad19c758fd066eee127fd179ea8a 100644 |
--- a/fusl/src/locale/strfmon.c |
+++ b/fusl/src/locale/strfmon.c |
@@ -5,97 +5,105 @@ |
#include <errno.h> |
#include "locale_impl.h" |
-static ssize_t vstrfmon_l(char *s, size_t n, locale_t loc, const char *fmt, va_list ap) |
-{ |
- size_t l; |
- double x; |
- int fill, nogrp, negpar, nosym, left, intl; |
- int lp, rp, w, fw; |
- char *s0=s; |
- for (; n && *fmt; ) { |
- if (*fmt != '%') { |
- literal: |
- *s++ = *fmt++; |
- n--; |
- continue; |
- } |
- fmt++; |
- if (*fmt == '%') goto literal; |
+static ssize_t vstrfmon_l(char* s, |
+ size_t n, |
+ locale_t loc, |
+ const char* fmt, |
+ va_list ap) { |
+ size_t l; |
+ double x; |
+ int fill, nogrp, negpar, nosym, left, intl; |
+ int lp, rp, w, fw; |
+ char* s0 = s; |
+ for (; n && *fmt;) { |
+ if (*fmt != '%') { |
+ literal: |
+ *s++ = *fmt++; |
+ n--; |
+ continue; |
+ } |
+ fmt++; |
+ if (*fmt == '%') |
+ goto literal; |
- fill = ' '; |
- nogrp = 0; |
- negpar = 0; |
- nosym = 0; |
- left = 0; |
- for (; ; fmt++) { |
- switch (*fmt) { |
- case '=': |
- fill = *++fmt; |
- continue; |
- case '^': |
- nogrp = 1; |
- continue; |
- case '(': |
- negpar = 1; |
- case '+': |
- continue; |
- case '!': |
- nosym = 1; |
- continue; |
- case '-': |
- left = 1; |
- continue; |
- } |
- break; |
- } |
+ fill = ' '; |
+ nogrp = 0; |
+ negpar = 0; |
+ nosym = 0; |
+ left = 0; |
+ for (;; fmt++) { |
+ switch (*fmt) { |
+ case '=': |
+ fill = *++fmt; |
+ continue; |
+ case '^': |
+ nogrp = 1; |
+ continue; |
+ case '(': |
+ negpar = 1; |
+ case '+': |
+ continue; |
+ case '!': |
+ nosym = 1; |
+ continue; |
+ case '-': |
+ left = 1; |
+ continue; |
+ } |
+ break; |
+ } |
- for (fw=0; isdigit(*fmt); fmt++) |
- fw = 10*fw + (*fmt-'0'); |
- lp = 0; |
- rp = 2; |
- if (*fmt=='#') for (lp=0, fmt++; isdigit(*fmt); fmt++) |
- lp = 10*lp + (*fmt-'0'); |
- if (*fmt=='.') for (rp=0, fmt++; isdigit(*fmt); fmt++) |
- rp = 10*rp + (*fmt-'0'); |
+ for (fw = 0; isdigit(*fmt); fmt++) |
+ fw = 10 * fw + (*fmt - '0'); |
+ lp = 0; |
+ rp = 2; |
+ if (*fmt == '#') |
+ for (lp = 0, fmt++; isdigit(*fmt); fmt++) |
+ lp = 10 * lp + (*fmt - '0'); |
+ if (*fmt == '.') |
+ for (rp = 0, fmt++; isdigit(*fmt); fmt++) |
+ rp = 10 * rp + (*fmt - '0'); |
- intl = *fmt++ == 'i'; |
+ intl = *fmt++ == 'i'; |
- w = lp + 1 + rp; |
- if (!left && fw>w) w = fw; |
+ w = lp + 1 + rp; |
+ if (!left && fw > w) |
+ w = fw; |
- x = va_arg(ap, double); |
- l = snprintf(s, n, "%*.*f", w, rp, x); |
- if (l >= n) { |
- errno = E2BIG; |
- return -1; |
- } |
- s += l; |
- n -= l; |
- } |
- return s-s0; |
+ x = va_arg(ap, double); |
+ l = snprintf(s, n, "%*.*f", w, rp, x); |
+ if (l >= n) { |
+ errno = E2BIG; |
+ return -1; |
+ } |
+ s += l; |
+ n -= l; |
+ } |
+ return s - s0; |
} |
-ssize_t strfmon_l(char *restrict s, size_t n, locale_t loc, const char *restrict fmt, ...) |
-{ |
- va_list ap; |
- ssize_t ret; |
+ssize_t strfmon_l(char* restrict s, |
+ size_t n, |
+ locale_t loc, |
+ const char* restrict fmt, |
+ ...) { |
+ va_list ap; |
+ ssize_t ret; |
- va_start(ap, fmt); |
- ret = vstrfmon_l(s, n, loc, fmt, ap); |
- va_end(ap); |
+ va_start(ap, fmt); |
+ ret = vstrfmon_l(s, n, loc, fmt, ap); |
+ va_end(ap); |
- return ret; |
+ return ret; |
} |
+ssize_t strfmon(char* restrict s, size_t n, const char* restrict fmt, ...) { |
+ va_list ap; |
+ ssize_t ret; |
-ssize_t strfmon(char *restrict s, size_t n, const char *restrict fmt, ...) |
-{ |
- va_list ap; |
- ssize_t ret; |
+ va_start(ap, fmt); |
+ ret = vstrfmon_l(s, n, CURRENT_LOCALE, fmt, ap); |
+ va_end(ap); |
- va_start(ap, fmt); |
- ret = vstrfmon_l(s, n, CURRENT_LOCALE, fmt, ap); |
- va_end(ap); |
- |
- return ret; |
+ return ret; |
} |