X-Git-Url: https://git.distorted.org.uk/~mdw/mLib/blobdiff_plain/5007fea9956f473c7b5522260994180dcd7cd9e6..3618811496a6d131fd4bffa19e262c521d39e819:/struct/dstr-putf.c diff --git a/struct/dstr-putf.c b/struct/dstr-putf.c index 9ac8cf9..270f9a3 100644 --- a/struct/dstr-putf.c +++ b/struct/dstr-putf.c @@ -32,7 +32,6 @@ #include #include #include -#include #include #include #include @@ -48,6 +47,7 @@ #include "darray.h" #include "dstr.h" +#include "macros.h" /*----- Tunable constants -------------------------------------------------*/ @@ -202,7 +202,7 @@ int dstr_vputf(dstr *d, const char *p, va_list *ap) /* --- Initial pass through the input, parsing format specifiers --- * * * We essentially compile the format string into a vector of @fmtspec@ - * objects, each of which represnts a chunk of literal text followed by a + * objects, each of which represents a chunk of literal text followed by a * (possibly imaginary, in the case of the final one) formatting directive. * Output then simply consists of interpreting these specifiers in order. */ @@ -248,7 +248,7 @@ int dstr_vputf(dstr *d, const char *p, va_list *ap) done_flags: i = 0; - while (isdigit((unsigned char)*p)) i = 10*i + *p++ - '0'; + while (ISDIGIT(*p)) i = 10*i + *p++ - '0'; /* --- Snag: this might have been an argument position indicator --- */ @@ -270,11 +270,11 @@ int dstr_vputf(dstr *d, const char *p, va_list *ap) fs->wd = i; } else if (*p == '*') { p++; - if (!isdigit((unsigned char)*p)) + if (!ISDIGIT(*p)) i = anext++; else { i = *p++ - '0'; - while (isdigit((unsigned char)*p)) i = 10*i + *p++ - '0'; + while (ISDIGIT(*p)) i = 10*i + *p++ - '0'; assert(*p == '$'); p++; assert(i > 0); i--; } @@ -287,19 +287,19 @@ int dstr_vputf(dstr *d, const char *p, va_list *ap) if (*p == '.') { p++; f |= f_prec; - if (isdigit((unsigned char)*p)) { + if (ISDIGIT(*p)) { i = *p++ - '0'; - while (isdigit((unsigned char)*p)) i = 10*i + *p++ - '0'; + while (ISDIGIT(*p)) i = 10*i + *p++ - '0'; fs->prec = i; } else if (*p != '*') fs->prec = 0; else { p++; - if (!isdigit((unsigned char)*p)) + if (!ISDIGIT(*p)) i = anext++; else { i = *p++ - '0'; - while (isdigit((unsigned char)*p)) i = 10*i + *p++ - '0'; + while (ISDIGIT(*p)) i = 10*i + *p++ - '0'; assert(*p == '$'); p++; assert(i > 0); i--; } @@ -536,6 +536,8 @@ int dstr_vputf(dstr *d, const char *p, va_list *ap) DPUTZ(d); DDESTROY(&dd); + DA_DESTROY(&av); + DA_DESTROY(&sv); return (d->len - n); }