6 #include "locale_impl.h"
8 static ssize_t vstrfmon_l(char *s, size_t n, locale_t loc, const char *fmt, va_list ap)
12 int fill, nogrp, negpar, nosym, left, intl;
23 if (*fmt == '%') goto literal;
52 for (fw=0; isdigit(*fmt); fmt++)
53 fw = 10*fw + (*fmt-'0');
56 if (*fmt=='#') for (lp=0, fmt++; isdigit(*fmt); fmt++)
57 lp = 10*lp + (*fmt-'0');
58 if (*fmt=='.') for (rp=0, fmt++; isdigit(*fmt); fmt++)
59 rp = 10*rp + (*fmt-'0');
64 if (!left && fw>w) w = fw;
66 x = va_arg(ap, double);
67 l = snprintf(s, n, "%*.*f", w, rp, x);
78 ssize_t strfmon_l(char *restrict s, size_t n, locale_t loc, const char *restrict fmt, ...)
84 ret = vstrfmon_l(s, n, loc, fmt, ap);
91 ssize_t strfmon(char *restrict s, size_t n, const char *restrict fmt, ...)
97 ret = vstrfmon_l(s, n, CURRENT_LOCALE, fmt, ap);