X-Git-Url: https://git.draconx.ca/gitweb/cdecl99.git/blobdiff_plain/74321600d30da35329fdab76094ab990398d6587..1260ac474046e883b8e499a72739c9289097933f:/t/randomdecl.c diff --git a/t/randomdecl.c b/t/randomdecl.c index 1fbd2d9..49a3d23 100644 --- a/t/randomdecl.c +++ b/t/randomdecl.c @@ -82,6 +82,23 @@ static struct cdecl *random_decl(struct test_rng *rng) return decl; } +static void +print_decl(struct cdecl *decl, size_t func(char *, size_t, struct cdecl *)) +{ + static size_t printbuf_size; + static char *printbuf; + size_t rc; +retry: + rc = func(printbuf, printbuf_size, decl); + if (rc >= printbuf_size) { + printbuf_size = rc + 1; + printbuf = realloc_nofail(printbuf, printbuf_size); + goto retry; + } + + printf("%s\n", printbuf); +} + int main(int argc, char **argv) { const char *seed = "", *count_str = NULL; @@ -132,9 +149,9 @@ int main(int argc, char **argv) decl = random_decl(rng); if (mode == MODE_ENGLISH) { - test_explain_decl(decl); + print_decl(decl, cdecl_explain); } else { - test_print_decl(decl); + print_decl(decl, cdecl_declare); } gen_free_declspecs(decl->specifiers);