tech@mandoc.bsd.lv
 help / color / mirror / Atom feed
* Re: Make the `-width' field to `Bl' not puke
       [not found] <201203230550.q2N5oPkb028753@krisdoz.my.domain>
@ 2012-04-15 10:47 ` Ingo Schwarze
  2012-04-15 15:19   ` Kristaps Dzonsons
  0 siblings, 1 reply; 3+ messages in thread
From: Ingo Schwarze @ 2012-04-15 10:47 UTC (permalink / raw)
  To: tech

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

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Make the `-width' field to `Bl' not puke
  2012-04-15 10:47 ` Make the `-width' field to `Bl' not puke Ingo Schwarze
@ 2012-04-15 15:19   ` Kristaps Dzonsons
  2012-04-15 15:27     ` Ingo Schwarze
  0 siblings, 1 reply; 3+ messages in thread
From: Kristaps Dzonsons @ 2012-04-15 15:19 UTC (permalink / raw)
  To: tech

 > 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?

Hi Ingo,

In reading this (but not testing it right now), it looks like it'll work 
fine in the event of `Bl -tag -width\n'; thus, it's fine by me.  And it 
cleans up that mess of special-case spaghetti: doubly ok!

Thanks,

Kristaps
--
 To unsubscribe send an email to tech+unsubscribe@mdocml.bsd.lv

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Make the `-width' field to `Bl' not puke
  2012-04-15 15:19   ` Kristaps Dzonsons
@ 2012-04-15 15:27     ` Ingo Schwarze
  0 siblings, 0 replies; 3+ messages in thread
From: Ingo Schwarze @ 2012-04-15 15:27 UTC (permalink / raw)
  To: tech

Hi Kristaps,

Kristaps Dzonsons wrote on Sun, Apr 15, 2012 at 05:19:51PM +0200:

> In reading this (but not testing it right now), it looks like it'll
> work fine in the event of `Bl -tag -width\n';

Yes, i did test that.

> thus, it's fine by me.
> And it cleans up that mess of special-case spaghetti: doubly ok!

Committed, thanks!
  Ingo
--
 To unsubscribe send an email to tech+unsubscribe@mdocml.bsd.lv

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2012-04-15 15:28 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <201203230550.q2N5oPkb028753@krisdoz.my.domain>
2012-04-15 10:47 ` Make the `-width' field to `Bl' not puke Ingo Schwarze
2012-04-15 15:19   ` Kristaps Dzonsons
2012-04-15 15:27     ` Ingo Schwarze

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).