# HG changeset patch # User Matti Hamalainen # Date 1456393988 -7200 # Node ID ad9719373fe37d284d68144e803f1e2e43ee11c4 # Parent b1984383aaace7d85d7bd1df554c2f055b0f9dfe Simplify th_printf_vbuf*() helpers. diff -r b1984383aaac -r ad9719373fe3 th_printf1.c --- a/th_printf1.c Thu Feb 25 11:51:52 2016 +0200 +++ b/th_printf1.c Thu Feb 25 11:53:08 2016 +0200 @@ -7,11 +7,9 @@ */ static int TH_PFUNC_NAME (char *buf, const int len, int *pos, - TH_PFUNC_TYPE_S pval, const int f_radix, const int f_flags, - const int f_prec, const BOOL f_unsig, BOOL *f_neg) + TH_PFUNC_TYPE_S pval, const int f_radix, const BOOL f_upcase, + const BOOL f_unsig, BOOL *f_neg) { - const BOOL f_upcase = f_flags & TH_PF_UPCASE; - if (f_radix > 16) return EOF; @@ -27,8 +25,8 @@ // Render the value to a string in buf (reversed) TH_PFUNC_TYPE_U val = pval; - // Special case for value of 0 and precision 0 - if (val == 0 && f_prec == 0) + // Special case for value of 0 + if (val == 0) return 0; *pos = 0; diff -r b1984383aaac -r ad9719373fe3 th_string.c --- 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) ?