From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=T_SCC_BODY_TEXT_LINE, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 22916 invoked from network); 5 Jun 2022 10:20:27 -0000 Received: from bsd.lv (HELO mandoc.bsd.lv) (66.111.2.12) by inbox.vuxu.org with ESMTPUTF8; 5 Jun 2022 10:20:27 -0000 Received: from fantadrom.bsd.lv (localhost [127.0.0.1]) by mandoc.bsd.lv (OpenSMTPD) with ESMTP id 21c0a215 for ; Sun, 5 Jun 2022 05:20:24 -0500 (EST) Received: from localhost (mandoc.bsd.lv [local]) by mandoc.bsd.lv (OpenSMTPD) with ESMTPA id 6f1e123f for ; Sun, 5 Jun 2022 05:20:24 -0500 (EST) Date: Sun, 5 Jun 2022 05:20:24 -0500 (EST) X-Mailinglist: mandoc-source Reply-To: source@mandoc.bsd.lv MIME-Version: 1.0 From: schwarze@mandoc.bsd.lv To: source@mandoc.bsd.lv Subject: mandoc: Small cleanup of error reporting: call mandoc_msg() only once at X-Mailer: activitymail 1.26, http://search.cpan.org/dist/activitymail/ Content-Type: text/plain; charset=utf-8 Message-ID: <3365a0aba3e66d2a@mandoc.bsd.lv> Log Message: ----------- Small cleanup of error reporting: call mandoc_msg() only once at the end, not sometimes in the middle, classify incomplete, non-expanding escape sequences as ESCAPE_ERROR, and also reduce the number of return statemants; no formatting change intended. Modified Files: -------------- mandoc: roff_escape.c Revision Data ------------- Index: roff_escape.c =================================================================== RCS file: /home/cvs/mandoc/mandoc/roff_escape.c,v retrieving revision 1.8 retrieving revision 1.9 diff -Lroff_escape.c -Lroff_escape.c -u -p -r1.8 -r1.9 --- roff_escape.c +++ roff_escape.c @@ -98,6 +98,7 @@ roff_escape(const char *buf, const int l iarg = iendarg = iend = inam + 1; maxl = INT_MAX; term = '\0'; + err = MANDOCERR_OK; switch (buf[inam]) { /* Escape sequences taking no arguments at all. */ @@ -312,6 +313,10 @@ roff_escape(const char *buf, const int l /* Ignore an incomplete argument except for \w. */ if (buf[inam] != 'w') iendarg = iarg; + if (rval == ESCAPE_EXPAND) + err = MANDOCERR_ESC_BAD; + else + rval = ESCAPE_ERROR; break; } if (buf[iendarg] == term) { @@ -343,9 +348,6 @@ roff_escape(const char *buf, const int l iend = ++iendarg; } } - if (resc != NULL && ((maxl != INT_MAX && maxl != 0) || - (term != '\0' && buf[iendarg] != term))) - mandoc_msg(MANDOCERR_ESC_BAD, ln, iesc, "%s", buf + iesc); /* Post-process depending on the content of the argument. */ @@ -481,18 +483,17 @@ out: err = MANDOCERR_ESC_UNSUPP; break; case ESCAPE_UNDEF: - if (buf[inam] == '\\' || buf[inam] == '.') - return rval; - err = MANDOCERR_ESC_UNDEF; + if (buf[inam] != '\\' && buf[inam] != '.') + err = MANDOCERR_ESC_UNDEF; break; case ESCAPE_SPECIAL: - if (mchars_spec2cp(buf + iarg, argl) >= 0) - return rval; - err = MANDOCERR_ESC_BAD; + if (mchars_spec2cp(buf + iarg, argl) < 0) + err = MANDOCERR_ESC_BAD; break; default: - return rval; + break; } - mandoc_msg(err, ln, iesc, "%.*s", iend - iesc, buf + iesc); + if (err != MANDOCERR_OK) + mandoc_msg(err, ln, iesc, "%.*s", iend - iesc, buf + iesc); return rval; } -- To unsubscribe send an email to source+unsubscribe@mandoc.bsd.lv