#include <cdecl.h>
#include "test.h"
+static size_t printbuf_size;
+static char *printbuf;
+
void *realloc_nofail(void *ptr, size_t size)
{
void *p;
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)