X-Git-Url: https://git.draconx.ca/gitweb/gob-dx.git/blobdiff_plain/c9914e54f16c3315d47040f4cca2d3788228c504..853c670e4b839fd435507201f04d16080590a894:/src/util.c diff --git a/src/util.c b/src/util.c index ae16914..37abe55 100644 --- a/src/util.c +++ b/src/util.c @@ -31,30 +31,53 @@ #include "util.h" void -print_error(gboolean is_warn, char *error, int line) +error_print(int type, int line, const char *error) { - char *w; - if(is_warn) + char *w = NULL; + + switch(type) { + case GOB_WARN: w = "Warning:"; - else { + break; + case GOB_ERROR: w = "Error:"; got_error = TRUE; + break; + default: + g_assert_not_reached(); } - if(line>0) + if(line > 0) fprintf(stderr, "%s:%d: %s %s\n", filename, line, w, error); else fprintf(stderr, "%s: %s %s\n", filename, w, error); - if((!is_warn || exit_on_warn) && exit_on_error) + if(exit_on_error && + (type == GOB_ERROR || + (type == GOB_WARN && exit_on_warn))) exit(1); } +void +error_printf(int type, int line, const char *error, ...) +{ + va_list ap; + char *s; + + va_start(ap, error); + s = g_strdup_vprintf(error, ap); + va_end(ap); + + error_print(type, line, s); + + g_free(s); +} + char * remove_sep(char *base) { char *p; char *s = g_strdup(base); while((p = strchr(s, ':'))) - strcpy(p,p+1); + strcpy(p, p+1); return s; }