source@mandoc.bsd.lv
 help / color / mirror / Atom feed
From: schwarze@mandoc.bsd.lv
To: source@mandoc.bsd.lv
Subject: mandoc: we already parse the GNU tbl(7) "nospaces" option,  so let it
Date: Tue, 7 Sep 2021 06:48:49 -0500 (EST)	[thread overview]
Message-ID: <c2aab68e0a8ca5b6@mandoc.bsd.lv> (raw)

Log Message:
-----------
we already parse the GNU tbl(7) "nospaces" option, 
so let it have the intended effect, too

Modified Files:
--------------
    mandoc:
        tbl_data.c
        tbl.7

Revision Data
-------------
Index: tbl.7
===================================================================
RCS file: /home/cvs/mandoc/mandoc/tbl.7,v
retrieving revision 1.35
retrieving revision 1.36
diff -Ltbl.7 -Ltbl.7 -u -p -r1.35 -r1.36
--- tbl.7
+++ tbl.7
@@ -94,7 +94,7 @@ Allow page breaks within the table.
 This is a GNU extension and currently ignored.
 .It Cm nospaces
 Ignore leading and trailing spaces in data cells.
-This is a GNU extension and currently ignored.
+This is a GNU extension.
 .It Cm nowarn
 Suppress warnings about tables exceeding the current line length.
 This is a GNU extension and currently ignored.
Index: tbl_data.c
===================================================================
RCS file: /home/cvs/mandoc/mandoc/tbl_data.c,v
retrieving revision 1.56
retrieving revision 1.57
diff -Ltbl_data.c -Ltbl_data.c -u -p -r1.56 -r1.57
--- tbl_data.c
+++ tbl_data.c
@@ -47,15 +47,15 @@ getdata(struct tbl_node *tbl, struct tbl
 	struct tbl_cell	*cp;
 	struct tbl_span	*pdp;
 	const char	*ccp;
-	int		 sv;
+	int		 startpos, endpos;
 
 	/*
 	 * Determine the length of the string in the cell
 	 * and advance the parse point to the end of the cell.
 	 */
 
-	sv = *pos;
-	ccp = p + sv;
+	startpos = *pos;
+	ccp = p + startpos;
 	while (*ccp != '\0' && *ccp != tbl->opts.tab)
 		if (*ccp++ == '\\')
 			mandoc_escape(&ccp, NULL, NULL);
@@ -85,7 +85,7 @@ getdata(struct tbl_node *tbl, struct tbl
 			dp->layout->last = cp;
 		} else {
 			mandoc_msg(MANDOCERR_TBLDATA_EXTRA,
-			    ln, sv, "%s", p + sv);
+			    ln, startpos, "%s", p + startpos);
 			while (p[*pos] != '\0')
 				(*pos)++;
 			return;
@@ -110,7 +110,8 @@ getdata(struct tbl_node *tbl, struct tbl
 	 */
 
 	if (cp->pos == TBL_CELL_DOWN ||
-	    (*pos - sv == 2 && p[sv] == '\\' && p[sv + 1] == '^')) {
+	    (*pos - startpos == 2 &&
+	     p[startpos] == '\\' && p[startpos + 1] == '^')) {
 		pdp = dp;
 		while ((pdp = pdp->prev) != NULL) {
 			pdat = pdp->first;
@@ -152,12 +153,20 @@ getdata(struct tbl_node *tbl, struct tbl
 	 * until a standalone `T}', are included in our cell.
 	 */
 
-	if (*pos - sv == 2 && p[sv] == 'T' && p[sv + 1] == '{') {
+	if (*pos - startpos == 2 &&
+	    p[startpos] == 'T' && p[startpos + 1] == '{') {
 		tbl->part = TBL_PART_CDATA;
 		return;
 	}
 
-	dat->string = mandoc_strndup(p + sv, *pos - sv);
+	endpos = *pos;
+	if (dp->opts->opts & TBL_OPT_NOSPACE) {
+		while (p[startpos] == ' ')
+			startpos++;
+		while (endpos > startpos && p[endpos - 1] == ' ')
+			endpos--;
+	}
+	dat->string = mandoc_strndup(p + startpos, endpos - startpos);
 
 	if (p[*pos] != '\0')
 		(*pos)++;
@@ -178,7 +187,7 @@ getdata(struct tbl_node *tbl, struct tbl
 	    dat->layout->pos == TBL_CELL_DOWN) &&
 	    dat->pos == TBL_DATA_DATA && *dat->string != '\0')
 		mandoc_msg(MANDOCERR_TBLDATA_SPAN,
-		    ln, sv, "%s", dat->string);
+		    ln, startpos, "%s", dat->string);
 }
 
 void
--
 To unsubscribe send an email to source+unsubscribe@mandoc.bsd.lv


                 reply	other threads:[~2021-09-07 11:48 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=c2aab68e0a8ca5b6@mandoc.bsd.lv \
    --to=schwarze@mandoc.bsd.lv \
    --cc=source@mandoc.bsd.lv \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).