X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/mLib/blobdiff_plain/e12e2b8dd591943135faee8c57dd542ffe3fabd4..ec6770ddae55110cf71b73e2bce70150a39a17c3:/dputf.c diff --git a/dputf.c b/dputf.c index d78851f..5df210c 100644 --- a/dputf.c +++ b/dputf.c @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: dputf.c,v 1.2 2000/08/15 21:26:45 mdw Exp $ + * $Id: dputf.c,v 1.3 2001/01/20 12:06:01 mdw Exp $ * * `printf'-style formatting for dynamic strings * @@ -30,6 +30,9 @@ /*----- Revision history --------------------------------------------------* * * $Log: dputf.c,v $ + * Revision 1.3 2001/01/20 12:06:01 mdw + * Define flags with macros, to ensure unsignedness. + * * Revision 1.2 2000/08/15 21:26:45 mdw * (dstr_vputf): Don't try calling @va_arg@ on things @char@-sized. * @@ -84,13 +87,11 @@ int dstr_vputf(dstr *d, const char *p, va_list ap) unsigned f; int wd, prec; - enum { - f_short = 1, - f_long = 2, - f_Long = 4, - f_wd = 8, - f_prec = 16 - }; +#define f_short 1u +#define f_long 2u +#define f_Long 4u +#define f_wd 8u +#define f_prec 16u /* --- Most stuff gets passed on through --- */ @@ -198,9 +199,9 @@ int dstr_vputf(dstr *d, const char *p, va_list ap) if (mx > sz) sz = mx; } - if ((f & f_prec) == 0) + if (!(f & f_prec)) prec = 6; - if ((f & f_prec)) + else sz += prec + 16; if ((f & f_wd) && wd + 1 > sz) sz = wd + 1; @@ -270,6 +271,12 @@ int dstr_vputf(dstr *d, const char *p, va_list ap) formatted: DRESET(&dd); q = ++p; + +#undef f_short +#undef f_long +#undef f_Long +#undef f_wd +#undef f_prec } DPUTM(d, q, p - q);