X-Git-Url: https://git.draconx.ca/gitweb/gob-dx.git/blobdiff_plain/486240dc4c5d57b0afaddba60d87fe375112bed5..7c9125f3e75c250e51d5bb9658f730519f103c10:/src/util.c?ds=sidebyside diff --git a/src/util.c b/src/util.c index ae16914..0e8ad94 100644 --- a/src/util.c +++ b/src/util.c @@ -21,6 +21,7 @@ */ #include "config.h" +#include #include #include #include @@ -31,30 +32,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) +remove_sep(const char *base) { char *p; char *s = g_strdup(base); while((p = strchr(s, ':'))) - strcpy(p,p+1); + strcpy(p, p+1); return s; } @@ -192,7 +216,7 @@ init_type_hash(void) } const char * -get_cast(char *type, gboolean simple_only) +get_cast(const char *type, gboolean simple_only) { OurGtkType *gtype; @@ -254,12 +278,12 @@ setup_special_array(Class *c, gboolean *special_array) } /* get the id without the first underscore, but only if we're removing them */ -char * -get_real_id(char *id) +const char * +get_real_id(const char *id) { - if(!no_kill_underscores && - id[0] == '_' && - id[1] != '\0') + if( ! no_kill_underscores && + id[0] == '_' && + id[1] != '\0') return &id[1]; else return id;