diff options
| author | Carson Fleming <cflems@cflems.net> | 2026-08-06 00:24:49 -0400 |
|---|---|---|
| committer | Carson Fleming <cflems@cflems.net> | 2026-08-06 00:24:49 -0400 |
| commit | b48e27f5cc31af65d8bb92d4b81cd03a60c5bcdb (patch) | |
| tree | 0901fba9ff451968d758ed47b57ff99d1330fb8a /ccc.c | |
| parent | a207a7f39514f03ddfafbe39e52a3fae57a414b4 (diff) | |
| download | ccc-b48e27f5cc31af65d8bb92d4b81cd03a60c5bcdb.tar.gz | |
clean up yesterday's hacks + functions in type system
Diffstat (limited to 'ccc.c')
| -rw-r--r-- | ccc.c | 22 |
1 files changed, 22 insertions, 0 deletions
@@ -1,6 +1,7 @@ #include "ccc.h" #include <stdlib.h> #include <stdio.h> +#include <stdarg.h> void* ccc_alloc(integral_t sz) { void* ptr = calloc(1, sz); @@ -10,3 +11,24 @@ void* ccc_alloc(integral_t sz) { } 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; +} |
