mdoc(7) already uses the mandoc(1) -Ios argument in the footer line
authorschwarze <schwarze@openbsd.org>
Sun, 28 Dec 2014 14:39:08 +0000 (14:39 +0000)
committerschwarze <schwarze@openbsd.org>
Sun, 28 Dec 2014 14:39:08 +0000 (14:39 +0000)
when .Os has no argument, so do the same for man(7) when .TH has less
than four arguments; there is no reason to treat both differently.
Issue found following a question from Thomas Klausner <wiz at NetBSD>.

usr.bin/mandoc/libman.h
usr.bin/mandoc/libmandoc.h
usr.bin/mandoc/man.1
usr.bin/mandoc/man.c
usr.bin/mandoc/man_validate.c
usr.bin/mandoc/mandoc.1
usr.bin/mandoc/read.c

index b5cae9f..0bf8135 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: libman.h,v 1.41 2014/11/28 05:51:29 schwarze Exp $ */
+/*     $OpenBSD: libman.h,v 1.42 2014/12/28 14:39:08 schwarze Exp $ */
 /*
  * Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2014 Ingo Schwarze <schwarze@openbsd.org>
@@ -23,6 +23,7 @@ enum  man_next {
 
 struct man {
        struct mparse   *parse; /* parse pointer */
+       const char      *defos; /* default OS argument for .TH */
        int              quick; /* abort parse early */
        int              flags; /* parse flags */
 #define        MAN_ELINE       (1 << 1) /* Next-line element scope. */
index ea6c9cb..0d259a9 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: libmandoc.h,v 1.38 2014/12/21 00:17:24 daniel Exp $ */
+/*     $OpenBSD: libmandoc.h,v 1.39 2014/12/28 14:39:08 schwarze Exp $ */
 /*
  * Copyright (c) 2009, 2010, 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2013, 2014 Ingo Schwarze <schwarze@openbsd.org>
@@ -63,7 +63,8 @@ void           mdoc_addspan(struct mdoc *, const struct tbl_span *);
 void            mdoc_addeqn(struct mdoc *, const struct eqn *);
 
 void            man_free(struct man *);
-struct man     *man_alloc(struct roff *, struct mparse *, int);
+struct man     *man_alloc(struct roff *, struct mparse *,
+                       const char *, int);
 void            man_reset(struct man *);
 int             man_parseln(struct man *, int, char *, int);
 int             man_endparse(struct man *);
index 40b796b..b27ebbd 100644 (file)
@@ -1,4 +1,4 @@
-.\"    $OpenBSD: man.1,v 1.7 2014/12/18 20:45:50 jmc Exp $
+.\"    $OpenBSD: man.1,v 1.8 2014/12/28 14:39:08 schwarze Exp $
 .\"
 .\" Copyright (c) 1989, 1990, 1993
 .\"    The Regents of the University of California.  All rights reserved.
@@ -31,7 +31,7 @@
 .\"
 .\"     @(#)man.1      8.2 (Berkeley) 1/2/94
 .\"
-.Dd $Mdocdate: December 18 2014 $
+.Dd $Mdocdate: December 28 2014 $
 .Dt MAN 1
 .Os
 .Sh NAME
@@ -106,6 +106,9 @@ Override the default operating system
 for the
 .Xr mdoc 7
 .Ic \&Os
+and for the
+.Xr man 7
+.Ic \&TH
 macro.
 .It Fl h
 Display only the SYNOPSIS lines of the requested manual pages.
index f76b8ca..c3a5dc8 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: man.c,v 1.93 2014/11/28 06:26:46 schwarze Exp $ */
+/*     $OpenBSD: man.c,v 1.94 2014/12/28 14:39:08 schwarze Exp $ */
 /*
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2013, 2014 Ingo Schwarze <schwarze@openbsd.org>
@@ -90,7 +90,8 @@ man_free(struct man *man)
 }
 
 struct man *
-man_alloc(struct roff *roff, struct mparse *parse, int quick)
+man_alloc(struct roff *roff, struct mparse *parse,
+       const char *defos, int quick)
 {
        struct man      *p;
 
@@ -98,6 +99,7 @@ man_alloc(struct roff *roff, struct mparse *parse, int quick)
 
        man_hash_init();
        p->parse = parse;
+       p->defos = defos;
        p->quick = quick;
        p->roff = roff;
 
index d90d635..07f0493 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: man_validate.c,v 1.78 2014/11/28 05:51:29 schwarze Exp $ */
+/*     $OpenBSD: man_validate.c,v 1.79 2014/12/28 14:39:08 schwarze Exp $ */
 /*
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2010, 2012, 2013, 2014 Ingo Schwarze <schwarze@openbsd.org>
@@ -377,6 +377,8 @@ post_TH(CHKARGS)
 
        if (n && (n = n->next))
                man->meta.source = mandoc_strdup(n->string);
+       else if (man->defos != NULL)
+               man->meta.source = mandoc_strdup(man->defos);
 
        /* TITLE MSEC DATE SOURCE ->VOL<- */
        /* If missing, use the default VOL name for MSEC. */
index 74ac585..da3753a 100644 (file)
@@ -1,4 +1,4 @@
-.\"    $OpenBSD: mandoc.1,v 1.69 2014/12/15 17:36:47 schwarze Exp $
+.\"    $OpenBSD: mandoc.1,v 1.70 2014/12/28 14:39:08 schwarze Exp $
 .\"
 .\" Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
 .\" Copyright (c) 2012, 2014 Ingo Schwarze <schwarze@openbsd.org>
@@ -15,7 +15,7 @@
 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 .\"
-.Dd $Mdocdate: December 15 2014 $
+.Dd $Mdocdate: December 28 2014 $
 .Dt MANDOC 1
 .Os
 .Sh NAME
@@ -85,6 +85,9 @@ Override the default operating system
 for the
 .Xr mdoc 7
 .Sq \&Os
+and for the
+.Xr man 7
+.Sq \&TH
 macro.
 .It Fl h
 Display only the SYNOPSIS lines.
index a386ade..ba26fe8 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: read.c,v 1.80 2014/12/16 23:44:16 schwarze Exp $ */
+/*     $OpenBSD: read.c,v 1.81 2014/12/28 14:39:08 schwarze Exp $ */
 /*
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2010-2014 Ingo Schwarze <schwarze@openbsd.org>
@@ -293,7 +293,8 @@ choose_parser(struct mparse *curp)
        /* Fall back to man(7) as a last resort. */
 
        if (NULL == curp->pman)
-               curp->pman = man_alloc(curp->roff, curp,
+               curp->pman = man_alloc(
+                   curp->roff, curp, curp->defos,
                    MPARSE_QUICK & curp->options ? 1 : 0);
        assert(curp->pman);
        curp->man = curp->pman;
@@ -689,7 +690,8 @@ mparse_end(struct mparse *curp)
                        curp->mdoc = curp->pmdoc;
                else {
                        if (curp->pman == NULL)
-                               curp->pman = man_alloc(curp->roff, curp,
+                               curp->pman = man_alloc(
+                                   curp->roff, curp, curp->defos,
                                    curp->options & MPARSE_QUICK ? 1 : 0);
                        curp->man = curp->pman;
                }
@@ -918,7 +920,8 @@ mparse_alloc(int options, enum mandoclevel wlevel, mandocmsg mmsg,
                    curp->roff, curp, curp->defos,
                    curp->options & MPARSE_QUICK ? 1 : 0);
        if (curp->options & MPARSE_MAN)
-               curp->pman = man_alloc(curp->roff, curp,
+               curp->pman = man_alloc(
+                   curp->roff, curp, curp->defos,
                    curp->options & MPARSE_QUICK ? 1 : 0);
 
        return(curp);