tech@mandoc.bsd.lv
 help / color / mirror / Atom feed
From: Ingo Schwarze <schwarze@usta.de>
To: tech@mdocml.bsd.lv
Subject: Re: Make the `-width' field to `Bl' not puke
Date: Sun, 15 Apr 2012 12:47:52 +0200	[thread overview]
Message-ID: <20120415104752.GA28604@iris.usta.de> (raw)
In-Reply-To: <201203230550.q2N5oPkb028753@krisdoz.my.domain>

Hi Kristaps,

kristaps@mdocml.bsd.lv wrote on Fri, Mar 23, 2012 at 01:50:25AM -0400:

> Log Message:
> -----------
> Make the `-width' field to `Bl' not puke if it doesn't have an argument.
> This makes mandoc work much, much nicer with Mac OSX manpages.
> 
> Modified Files:
> --------------
>     mdocml:
>         mdoc_argv.c
>         mdoc_validate.c

This patch caused a regression in the following case,
seen e.g. in fs(1):

  .Bl -tag -width -Fl -compact

Correct behaviour is that -width and -offset consume the next
argument even if it starts with a dash.  By changing -width
to OPT_SINGLE, the above case became "-width without argument",
breaking the indentation.

While merging your patch to OpenBSD, i fixed this by removing
the dash check.  Besides, ARGV_SINGLE turned out to be
completely unused - .Bd -file errors out, anyway.
Thus, i simply renamed opt_single to single and was able
to delete a couple of lines of code.

OK to commit to bsd.lv as well?

Yours,
  Ingo


Index: mdoc_argv.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/mdoc_argv.c,v
retrieving revision 1.82
diff -u -p -r1.82 mdoc_argv.c
--- mdoc_argv.c	23 Mar 2012 05:50:24 -0000	1.82
+++ mdoc_argv.c	15 Apr 2012 10:35:26 -0000
@@ -42,8 +42,7 @@ enum	argsflag {
 enum	argvflag {
 	ARGV_NONE, /* no args to flag (e.g., -split) */
 	ARGV_SINGLE, /* one arg to flag (e.g., -file xxx)  */
-	ARGV_MULTI, /* multiple args (e.g., -column xxx yyy) */
-	ARGV_OPT_SINGLE /* optional arg (e.g., -offset [xxx]) */
+	ARGV_MULTI /* multiple args (e.g., -column xxx yyy) */
 };
 
 struct	mdocarg {
@@ -57,8 +56,6 @@ static	enum margserr	 args(struct mdoc *
 static	int		 args_checkpunct(const char *, int);
 static	int		 argv_multi(struct mdoc *, int, 
 				struct mdoc_argv *, int *, char *);
-static	int		 argv_opt_single(struct mdoc *, int, 
-				struct mdoc_argv *, int *, char *);
 static	int		 argv_single(struct mdoc *, int, 
 				struct mdoc_argv *, int *, char *);
 
@@ -69,7 +66,7 @@ static	const enum argvflag argvflags[MDO
 	ARGV_NONE,	/* MDOC_Unfilled */
 	ARGV_NONE,	/* MDOC_Literal */
 	ARGV_SINGLE,	/* MDOC_File */
-	ARGV_OPT_SINGLE, /* MDOC_Offset */
+	ARGV_SINGLE,	/* MDOC_Offset */
 	ARGV_NONE,	/* MDOC_Bullet */
 	ARGV_NONE,	/* MDOC_Dash */
 	ARGV_NONE,	/* MDOC_Hyphen */
@@ -81,7 +78,7 @@ static	const enum argvflag argvflags[MDO
 	ARGV_NONE,	/* MDOC_Ohang */
 	ARGV_NONE,	/* MDOC_Inset */
 	ARGV_MULTI,	/* MDOC_Column */
-	ARGV_OPT_SINGLE, /* MDOC_Width */
+	ARGV_SINGLE,	/* MDOC_Width */
 	ARGV_NONE,	/* MDOC_Compact */
 	ARGV_NONE,	/* MDOC_Std */
 	ARGV_NONE,	/* MDOC_Filled */
@@ -351,10 +348,6 @@ mdoc_argv(struct mdoc *m, int line, enum
 		if ( ! argv_multi(m, line, &tmp, pos, buf))
 			return(ARGV_ERROR);
 		break;
-	case (ARGV_OPT_SINGLE):
-		if ( ! argv_opt_single(m, line, &tmp, pos, buf))
-			return(ARGV_ERROR);
-		break;
 	case (ARGV_NONE):
 		break;
 	}
@@ -669,44 +662,17 @@ argv_multi(struct mdoc *m, int line, 
 }
 
 static int
-argv_opt_single(struct mdoc *m, int line, 
+argv_single(struct mdoc *m, int line, 
 		struct mdoc_argv *v, int *pos, char *buf)
 {
 	enum margserr	 ac;
 	char		*p;
 
-	if ('-' == buf[*pos])
-		return(1);
-
 	ac = args(m, line, pos, buf, ARGSFL_NONE, &p);
 	if (ARGS_ERROR == ac)
 		return(0);
 	if (ARGS_EOLN == ac)
 		return(1);
-
-	v->sz = 1;
-	v->value = mandoc_malloc(sizeof(char *));
-	v->value[0] = mandoc_strdup(p);
-
-	return(1);
-}
-
-static int
-argv_single(struct mdoc *m, int line, 
-		struct mdoc_argv *v, int *pos, char *buf)
-{
-	int		 ppos;
-	enum margserr	 ac;
-	char		*p;
-
-	ppos = *pos;
-
-	ac = args(m, line, pos, buf, ARGSFL_NONE, &p);
-	if (ARGS_EOLN == ac) {
-		mdoc_pmsg(m, line, ppos, MANDOCERR_SYNTARGVCOUNT);
-		return(0);
-	} else if (ARGS_ERROR == ac)
-		return(0);
 
 	v->sz = 1;
 	v->value = mandoc_malloc(sizeof(char *));
--
 To unsubscribe send an email to tech+unsubscribe@mdocml.bsd.lv

       reply	other threads:[~2012-04-15 10:47 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <201203230550.q2N5oPkb028753@krisdoz.my.domain>
2012-04-15 10:47 ` Ingo Schwarze [this message]
2012-04-15 15:19   ` Kristaps Dzonsons
2012-04-15 15:27     ` Ingo Schwarze

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=20120415104752.GA28604@iris.usta.de \
    --to=schwarze@usta.de \
    --cc=tech@mdocml.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).