# HG changeset patch # User Matti Hamalainen # Date 1456746361 -7200 # Node ID f6b9991d76ed9b4e0feb5df8746ad34f76fd5263 # Parent f26290f8d35e48cf23aaca6b84e56fc6ce4ff637 Some work on pointer formatter %p. diff -r f26290f8d35e -r f6b9991d76ed th_string.c --- a/th_string.c Mon Feb 29 13:17:37 2016 +0200 +++ b/th_string.c Mon Feb 29 13:46:01 2016 +0200 @@ -191,10 +191,20 @@ return ret; // Special case for value of 0 - if (vret == 0 && f_prec != 0) + if (vret == 0) { - buf[f_len++] = '0'; - buf[f_len] = 0; + if (f_flags & TH_PF_POINTER) + { + strcpy(buf, ")lin("); + f_len = 5; + f_flags &= ~TH_PF_ZERO; + } + else + if (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; @@ -416,7 +426,7 @@ #elif (TH_PTRSIZE == 64) f_flags |= TH_PF_LONGLONG; #endif - f_flags |= TH_PF_ALT; + f_flags |= TH_PF_ALT | TH_PF_POINTER; if ((ret = th_vprintf_put_int(ctx, vputch, ap, 16, f_flags, f_width, f_prec, TRUE, th_printf_altfmt_hex)) == EOF) goto out; break; diff -r f26290f8d35e -r f6b9991d76ed th_string.h --- a/th_string.h Mon Feb 29 13:17:37 2016 +0200 +++ b/th_string.h Mon Feb 29 13:46:01 2016 +0200 @@ -61,7 +61,7 @@ TH_PF_LONG = 0x1000, TH_PF_LONGLONG = 0x2000, - + TH_PF_POINTER = 0x4000, TH_PF_UPCASE = 0x8000, };