diff options
author | Peter Johnson <peter@tortall.net> | 2003-06-08 21:21:22 +0000 |
---|---|---|
committer | Peter Johnson <peter@tortall.net> | 2003-06-08 21:21:22 +0000 |
commit | b6f7d0316f7e512316a6cd8fa76e0a6dd7f435e4 (patch) | |
tree | bf459281b46ed4817b676af691925e18184338db /libyasm/errwarn.c | |
parent | a6109b9aba59303c408ee810adc74571b1a747d2 (diff) | |
download | yasm-b6f7d0316f7e512316a6cd8fa76e0a6dd7f435e4.tar.gz |
Make yasm_fatal() and implementations take a list of printf-like parameters.
Also, don't abort(), just exit()... unlike internal errors, which we want a
backtrace for, fatal errors may happen during normal operation.
svn path=/trunk/yasm/; revision=975
Diffstat (limited to 'libyasm/errwarn.c')
-rw-r--r-- | libyasm/errwarn.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/libyasm/errwarn.c b/libyasm/errwarn.c index 7b165021..700a97e3 100644 --- a/libyasm/errwarn.c +++ b/libyasm/errwarn.c @@ -26,7 +26,7 @@ */ #define YASM_LIB_INTERNAL #include "util.h" -/*@unused@*/ RCSID("$IdPath: yasm/libyasm/errwarn.c,v 1.56 2003/05/04 01:39:10 peter Exp $"); +/*@unused@*/ RCSID("$IdPath$"); #include <ctype.h> @@ -45,14 +45,14 @@ /* Default handlers for replacable functions */ static /*@exits@*/ void def_internal_error_ (const char *file, unsigned int line, const char *message); -static /*@exits@*/ void def_fatal(const char *message); +static /*@exits@*/ void def_fatal(const char *message, ...); static const char *def_gettext_hook(const char *msgid); /* Storage for errwarn's "extern" functions */ /*@exits@*/ void (*yasm_internal_error_) (const char *file, unsigned int line, const char *message) = def_internal_error_; -/*@exits@*/ void (*yasm_fatal) (const char *message) = def_fatal; +/*@exits@*/ void (*yasm_fatal) (const char *message, ...) = def_fatal; const char * (*yasm_gettext_hook) (const char *msgid) = def_gettext_hook; /* Enabled warnings. See errwarn.h for a list. */ @@ -163,15 +163,15 @@ def_internal_error_(const char *file, unsigned int line, const char *message) * memory), so just exit immediately. */ static void -def_fatal(const char *message) +def_fatal(const char *fmt, ...) { - fprintf(stderr, yasm_gettext_hook(N_("FATAL: %s\n")), - yasm_gettext_hook(message)); -#ifdef HAVE_ABORT - abort(); -#else + va_list va; + fprintf(stderr, "%s: ", yasm_gettext_hook(N_("FATAL"))); + va_start(va, fmt); + vfprintf(stderr, yasm_gettext_hook(fmt), va); + va_end(va); + fputc('\n', stderr); exit(EXIT_FAILURE); -#endif } /* Create an errwarn structure in the correct linked list location. |