diff options
Diffstat (limited to 'snag/util.c')
| -rw-r--r-- | snag/util.c | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/snag/util.c b/snag/util.c index d8947a7..57a31a4 100644 --- a/snag/util.c +++ b/snag/util.c @@ -4,26 +4,35 @@ #include "util.h" -void eprintf(const char *format, ...) { - // send that shi to stderr +#if DEBUG +void _log(int line, const char* file, const char* format, ...) { + fprintf(stderr, "%s:%d: info: ", file, line); +#else +void _log(const char* format, ...) { +#endif va_list args; va_start(args, format); vfprintf(stderr, format, args); va_end(args); } -void error_out(const char *format, ...) { +#if DEBUG +void _die(int line, const char* file, const char* format, ...) { + fprintf(stderr, "%s:%d: error: ", file, line); +#else +void _die(const char* format, ...) { +#endif va_list args; va_start(args, format); vfprintf(stderr, format, args); va_end(args); - fprintf(stderr, "\n"); - exit(1); + exit(1); } + void* emalloc(size_t size, char* alloc_reason) { void* d = malloc(size); - if (d == NULL) error_out("Failed to allocate %s", alloc_reason); + if (d == NULL) die("Failed to allocate %s", alloc_reason); return d; } @@ -36,19 +45,17 @@ char* vastrcat_(int dummy, ...) { // get len of output string size_t len = 0; - while (1) { - char* arg = va_arg(args, char*); - if (!arg) break; + char* arg = NULL; + while ((arg = va_arg(args, char*))) { len += strlen(arg); } va_end(args); // allocate and build output char* output = malloc(len + 1); + if (!output) return NULL; char* p = output; - while (1) { - char* arg = va_arg(args2, char*); - if (!arg) break; + while ((arg = va_arg(args, char*))) { memcpy(p, arg, strlen(arg)); p += strlen(arg); } |
