aboutsummaryrefslogtreecommitdiff
path: root/snag/util.c
diff options
context:
space:
mode:
Diffstat (limited to 'snag/util.c')
-rw-r--r--snag/util.c31
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);
}