7 static ssize_t vstrfmon_l(char *s, size_t n, locale_t loc, const char *fmt, va_list ap)
11 int fill, nogrp, negpar, nosym, left, intl;
22 if (*fmt == '%') goto literal;
51 for (fw=0; isdigit(*fmt); fmt++)
52 fw = 10*fw + (*fmt-'0');
55 if (*fmt=='#') for (lp=0, fmt++; isdigit(*fmt); fmt++)
56 lp = 10*lp + (*fmt-'0');
57 if (*fmt=='.') for (rp=0, fmt++; isdigit(*fmt); fmt++)
58 rp = 10*rp + (*fmt-'0');
63 if (!left && fw>w) w = fw;
65 x = va_arg(ap, double);
66 l = snprintf(s, n, "%*.*f", w, rp, x);
77 ssize_t strfmon_l(char *restrict s, size_t n, locale_t loc, const char *restrict fmt, ...)
83 ret = vstrfmon_l(s, n, loc, fmt, ap);
90 ssize_t strfmon(char *restrict s, size_t n, const char *restrict fmt, ...)
96 ret = vstrfmon_l(s, n, 0, fmt, ap);