From 3a40be8a79f9d4e4bb205cca4eb15b1ee811f60c Mon Sep 17 00:00:00 2001 From: "Arnold D. Robbins" Date: Tue, 19 Jun 2012 20:42:51 +0300 Subject: Fix code duplication in gawkapi.c from msg.c. --- ChangeLog | 8 ++++++++ awk.h | 2 +- awkgram.c | 10 +++++----- awkgram.y | 10 +++++----- gawkapi.c | 17 ++++------------- msg.c | 21 ++++++++++++--------- 6 files changed, 35 insertions(+), 33 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2e4c8cbc..820e1cbb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2012-06-19 Arnold D. Robbins + + * awk.h (err): Add `isfatal' first parameter. + * awkgram.y (err): Adjust all calls. + * msg.c (err): Adjust all calls. Move fatal code to here ... + (r_fatal): From here. + * gawkapi.c: Remove code duplication and adjust calls to `err'. + 2012-06-18 Arnold D. Robbins * gawkapi.h (get_array_element): Restore `wanted' paramater. diff --git a/awk.h b/awk.h index 6c1e706a..4f120d37 100644 --- a/awk.h +++ b/awk.h @@ -1605,7 +1605,7 @@ extern int mpg_strtoui(mpz_ptr, char *, size_t, char **, int); /* msg.c */ extern void gawk_exit(int status); extern void final_exit(int status) ATTRIBUTE_NORETURN; -extern void err(const char *s, const char *emsg, va_list argp) ATTRIBUTE_PRINTF(2, 0); +extern void err(bool isfatal, const char *s, const char *emsg, va_list argp) ATTRIBUTE_PRINTF(2, 0); extern void msg (const char *mesg, ...) ATTRIBUTE_PRINTF_1; extern void error (const char *mesg, ...) ATTRIBUTE_PRINTF_1; extern void warning (const char *mesg, ...) ATTRIBUTE_PRINTF_1; diff --git a/awkgram.c b/awkgram.c index 7836dbee..bef9a300 100644 --- a/awkgram.c +++ b/awkgram.c @@ -4704,7 +4704,7 @@ warning_ln(int line, const char *mesg, ...) sourceline = line; print_included_from(); va_start(args, mesg); - err(_("warning: "), mesg, args); + err(false, _("warning: "), mesg, args); va_end(args); sourceline = saveline; } @@ -4722,9 +4722,9 @@ lintwarn_ln(int line, const char *mesg, ...) print_included_from(); va_start(args, mesg); if (lintfunc == r_fatal) - err(_("fatal: "), mesg, args); + err(true, _("fatal: "), mesg, args); else - err(_("warning: "), mesg, args); + err(false, _("warning: "), mesg, args); va_end(args); sourceline = saveline; if (lintfunc == r_fatal) @@ -4744,7 +4744,7 @@ error_ln(int line, const char *m, ...) print_included_from(); errcount++; va_start(args, m); - err("error: ", m, args); + err(false, "error: ", m, args); va_end(args); sourceline = saveline; } @@ -4822,7 +4822,7 @@ yyerror(const char *m, ...) *bp++ = ' '; } strcpy(bp, mesg); - err("", buf, args); + err(false, "", buf, args); va_end(args); efree(buf); } diff --git a/awkgram.y b/awkgram.y index f7ea5d48..dceca6d2 100644 --- a/awkgram.y +++ b/awkgram.y @@ -1984,7 +1984,7 @@ warning_ln(int line, const char *mesg, ...) sourceline = line; print_included_from(); va_start(args, mesg); - err(_("warning: "), mesg, args); + err(false, _("warning: "), mesg, args); va_end(args); sourceline = saveline; } @@ -2002,9 +2002,9 @@ lintwarn_ln(int line, const char *mesg, ...) print_included_from(); va_start(args, mesg); if (lintfunc == r_fatal) - err(_("fatal: "), mesg, args); + err(true, _("fatal: "), mesg, args); else - err(_("warning: "), mesg, args); + err(false, _("warning: "), mesg, args); va_end(args); sourceline = saveline; if (lintfunc == r_fatal) @@ -2024,7 +2024,7 @@ error_ln(int line, const char *m, ...) print_included_from(); errcount++; va_start(args, m); - err("error: ", m, args); + err(false, "error: ", m, args); va_end(args); sourceline = saveline; } @@ -2102,7 +2102,7 @@ yyerror(const char *m, ...) *bp++ = ' '; } strcpy(bp, mesg); - err("", buf, args); + err(false, "", buf, args); va_end(args); efree(buf); } diff --git a/gawkapi.c b/gawkapi.c index b1fba48a..92403dce 100644 --- a/gawkapi.c +++ b/gawkapi.c @@ -83,7 +83,6 @@ awk_value_to_node(const awk_value_t *retval) } /* Functions to print messages */ -/* FIXME: Code duplicate from msg.c. Fix this. */ /* api_fatal --- print a fatal message and exit */ @@ -95,12 +94,8 @@ api_fatal(awk_ext_id_t id, const char *format, ...) (void) id; va_start(args, format); - err(_("fatal: "), format, args); + err(true, _("fatal: "), format, args); va_end(args); -#ifdef GAWKDEBUG - abort(); -#endif - gawk_exit(EXIT_FATAL); } /* api_warning --- print a warning message and exit */ @@ -113,7 +108,7 @@ api_warning(awk_ext_id_t id, const char *format, ...) (void) id; va_start(args, format); - err(_("warning: "), format, args); + err(false, _("warning: "), format, args); va_end(args); } @@ -128,14 +123,10 @@ api_lintwarn(awk_ext_id_t id, const char *format, ...) va_start(args, format); if (lintwarn == r_fatal) { - err(_("fatal: "), format, args); + err(true, _("fatal: "), format, args); va_end(args); -#ifdef GAWKDEBUG - abort(); -#endif - gawk_exit(EXIT_FATAL); } else { - err(_("warning: "), format, args); + err(false, _("warning: "), format, args); va_end(args); } } diff --git a/msg.c b/msg.c index b94e840b..bc446a14 100644 --- a/msg.c +++ b/msg.c @@ -39,7 +39,7 @@ bool fatal_tag_valid = false; /* VARARGS2 */ void -err(const char *s, const char *emsg, va_list argp) +err(bool isfatal, const char *s, const char *emsg, va_list argp) { char *file; const char *me; @@ -89,6 +89,13 @@ err(const char *s, const char *emsg, va_list argp) vfprintf(stderr, emsg, argp); (void) fprintf(stderr, "\n"); (void) fflush(stderr); + + if (isfatal) { +#ifdef GAWKDEBUG + abort(); +#endif + gawk_exit(EXIT_FATAL); + } } /* msg --- take a varargs error message and print it */ @@ -98,7 +105,7 @@ msg(const char *mesg, ...) { va_list args; va_start(args, mesg); - err("", mesg, args); + err(false, "", mesg, args); va_end(args); } @@ -109,7 +116,7 @@ warning(const char *mesg, ...) { va_list args; va_start(args, mesg); - err(_("warning: "), mesg, args); + err(false, _("warning: "), mesg, args); va_end(args); } @@ -118,7 +125,7 @@ error(const char *mesg, ...) { va_list args; va_start(args, mesg); - err(_("error: "), mesg, args); + err(false, _("error: "), mesg, args); va_end(args); } @@ -141,12 +148,8 @@ r_fatal(const char *mesg, ...) { va_list args; va_start(args, mesg); - err(_("fatal: "), mesg, args); + err(true, _("fatal: "), mesg, args); va_end(args); -#ifdef GAWKDEBUG - abort(); -#endif - gawk_exit(EXIT_FATAL); } /* gawk_exit --- longjmp out if necessary */ -- cgit v1.2.3