+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);
+}
+