diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2012-06-19 20:42:51 +0300 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2012-06-19 20:42:51 +0300 |
commit | 3a40be8a79f9d4e4bb205cca4eb15b1ee811f60c (patch) | |
tree | 2b2321da7274d07a4762ecbde31ffda07a69e91a | |
parent | 1e3ac8a49caeeb991d8163042a576a66db51c74b (diff) | |
download | egawk-3a40be8a79f9d4e4bb205cca4eb15b1ee811f60c.tar.gz egawk-3a40be8a79f9d4e4bb205cca4eb15b1ee811f60c.tar.bz2 egawk-3a40be8a79f9d4e4bb205cca4eb15b1ee811f60c.zip |
Fix code duplication in gawkapi.c from msg.c.
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | awk.h | 2 | ||||
-rw-r--r-- | awkgram.c | 10 | ||||
-rw-r--r-- | awkgram.y | 10 | ||||
-rw-r--r-- | gawkapi.c | 17 | ||||
-rw-r--r-- | msg.c | 21 |
6 files changed, 35 insertions, 33 deletions
@@ -1,3 +1,11 @@ +2012-06-19 Arnold D. Robbins <arnold@skeeve.com> + + * 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 <arnold@skeeve.com> * gawkapi.h (get_array_element): Restore `wanted' paramater. @@ -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; @@ -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); } @@ -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); } @@ -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); } } @@ -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 */ |