#include "ccc.h" #include #include #include void* ccc_alloc(integral_t sz) { void* ptr = calloc(1, sz); if (ptr == NULL) { fprintf(stderr, "ccc: out of memory\n"); exit(1); } return ptr; } char* ccc_sprintf(const char* format, ...) { va_list args; va_start(args, format); int req_sz = vsnprintf(NULL, 0, format, args); va_end(args); if (req_sz < 0) { fprintf(stderr, "ccc: formatting error\n"); exit(1); } req_sz += 1; /* null terminated */ char* buffer = ccc_alloc(req_sz); va_start(args, format); vsnprintf(buffer, req_sz, format, args); va_end(args); return buffer; }