X-Git-Url: https://git.draconx.ca/gitweb/cdecl99.git/blobdiff_plain/e031b4f0220432aef6e1864ea6359353dbd8aed3..b52d7c8fed34b8506751cbf3e26f878f0cc7fd7b:/test/testlib.c diff --git a/test/testlib.c b/test/testlib.c index 3c8bb8c..2c859a9 100644 --- a/test/testlib.c +++ b/test/testlib.c @@ -23,6 +23,9 @@ #include #include "test.h" +static size_t printbuf_size; +static char *printbuf; + void *realloc_nofail(void *ptr, size_t size) { void *p; @@ -43,19 +46,32 @@ void *malloc_nofail(size_t size) void test_print_decl(struct cdecl *decl) { - static size_t bufsz; - static char *buf; size_t rc; retry: - rc = cdecl_declare(buf, bufsz, decl); - if (rc >= bufsz) { - bufsz = rc + 1; - buf = realloc_nofail(buf, bufsz); + rc = cdecl_declare(printbuf, printbuf_size, decl); + if (rc >= printbuf_size) { + printbuf_size = rc + 1; + printbuf = realloc_nofail(printbuf, printbuf_size); + goto retry; + } + + printf("%s\n", printbuf); +} + +void test_explain_decl(struct cdecl *decl) +{ + size_t rc; + +retry: + rc = cdecl_explain(printbuf, printbuf_size, decl); + if (rc >= printbuf_size) { + printbuf_size = rc + 1; + printbuf = realloc_nofail(printbuf, printbuf_size); goto retry; } - printf("%s\n", buf); + printf("%s\n", printbuf); } bool strict_strtoul(unsigned long *val, const char *str, int base)