Mercurial > hg > th-libs
diff th_string.c @ 361:ad9719373fe3
Simplify th_printf_vbuf*() helpers.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Thu, 25 Feb 2016 11:53:08 +0200 |
parents | b1984383aaac |
children | dfd1e7b3bf2a |
line wrap: on
line diff
--- a/th_string.c Thu Feb 25 11:51:52 2016 +0200 +++ b/th_string.c Thu Feb 25 11:53:08 2016 +0200 @@ -172,25 +172,32 @@ const BOOL f_unsig, char *(f_alt)(const int flags)) { char buf[64]; - int f_len = 0, ret = 0, nwidth; + int f_len = 0, ret = 0, vret, nwidth; char f_sign, *f_altstr; BOOL f_neg = FALSE; if (f_flags & TH_PF_LONGLONG) { - ret = th_printf_vbuf_int64(buf, sizeof(buf), &f_len, va_arg(ap, int64_t), - f_radix, f_flags, f_prec, f_unsig, &f_neg); + vret = th_printf_vbuf_int64(buf, sizeof(buf), &f_len, va_arg(ap, int64_t), + f_radix, f_flags & TH_PF_UPCASE, f_unsig, &f_neg); } else { - ret = th_printf_vbuf_int(buf, sizeof(buf), &f_len, va_arg(ap, unsigned int), - f_radix, f_flags, f_prec, f_unsig, &f_neg); + vret = th_printf_vbuf_int(buf, sizeof(buf), &f_len, va_arg(ap, unsigned int), + f_radix, f_flags & TH_PF_UPCASE, f_unsig, &f_neg); } - if (ret == EOF) + if (vret == EOF) return ret; - f_altstr = ret != 0 && (f_flags & TH_PF_ALT) && f_alt != NULL ? f_alt(f_flags) : NULL; + // Special case for value of 0 + if (vret == 0 && f_prec != 0) + { + buf[f_len++] = '0'; + buf[f_len] = 0; + } + + f_altstr = vret != 0 && (f_flags & TH_PF_ALT) && f_alt != NULL ? f_alt(f_flags) : NULL; // Are we using a sign prefix? f_sign = f_unsig ? 0 : ((f_flags & TH_PF_SIGN) ?