style message about duplicate RCS ids; inspired by mdoclint
authorschwarze <schwarze@openbsd.org>
Sat, 17 Jun 2017 23:06:43 +0000 (23:06 +0000)
committerschwarze <schwarze@openbsd.org>
Sat, 17 Jun 2017 23:06:43 +0000 (23:06 +0000)
usr.bin/mandoc/mandoc.1
usr.bin/mandoc/mandoc.h
usr.bin/mandoc/read.c
usr.bin/mandoc/roff.c

index 0e6d6b3..6210f1c 100644 (file)
@@ -1,4 +1,4 @@
-.\"    $OpenBSD: mandoc.1,v 1.124 2017/06/17 22:40:27 schwarze Exp $
+.\"    $OpenBSD: mandoc.1,v 1.125 2017/06/17 23:06:43 schwarze Exp $
 .\"
 .\" Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
 .\" Copyright (c) 2012, 2014-2017 Ingo Schwarze <schwarze@openbsd.org>
@@ -799,6 +799,11 @@ generated by CVS
 or
 .Ic NetBSD
 keyword substitution as conventionally used in these operating systems.
+.It Sy "duplicate RCS id"
+A single manual page contains two copies of the RCS identifier for
+the same operating system.
+Consider deleting the later instance and moving the first one up
+to the top of the page.
 .It Sy "useless macro"
 .Pq mdoc
 A
index bb7b9c3..55e1643 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: mandoc.h,v 1.173 2017/06/17 22:40:27 schwarze Exp $ */
+/*     $OpenBSD: mandoc.h,v 1.174 2017/06/17 23:06:43 schwarze Exp $ */
 /*
  * Copyright (c) 2010, 2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2010-2017 Ingo Schwarze <schwarze@openbsd.org>
@@ -50,6 +50,7 @@ enum  mandocerr {
        MANDOCERR_MDOCDATE_MISSING, /* Mdocdate missing: Dd ... */
        MANDOCERR_DATE_LEGACY, /* legacy man(7) date format: Dd ... */
        MANDOCERR_RCS_MISSING, /* RCS id missing */
+       MANDOCERR_RCS_REP, /* duplicate RCS id: ... */
        MANDOCERR_MACRO_USELESS, /* useless macro: macro */
        MANDOCERR_BX, /* consider using OS macro: macro */
        MANDOCERR_ER_ORDER, /* errnos out of order: Er ... */
index 8342287..3994cac 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: read.c,v 1.149 2017/06/17 22:40:27 schwarze Exp $ */
+/*     $OpenBSD: read.c,v 1.150 2017/06/17 23:06:43 schwarze Exp $ */
 /*
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2010-2017 Ingo Schwarze <schwarze@openbsd.org>
@@ -88,6 +88,7 @@ static        const char * const      mandocerrs[MANDOCERR_MAX] = {
        "Mdocdate missing",
        "legacy man(7) date format",
        "RCS id missing",
+       "duplicate RCS id",
        "useless macro",
        "consider using OS macro",
        "errnos out of order",
index 516c132..c108ae8 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: roff.c,v 1.185 2017/06/17 22:40:27 schwarze Exp $ */
+/*     $OpenBSD: roff.c,v 1.186 2017/06/17 23:06:43 schwarze Exp $ */
 /*
  * Copyright (c) 2008-2012, 2014 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2010-2015, 2017 Ingo Schwarze <schwarze@openbsd.org>
@@ -1194,8 +1194,12 @@ roff_res(struct roff *r, struct buf *buf, int ln, int pos)
                }
                if (cp != NULL &&
                    isalnum((unsigned char)*cp) == 0 &&
-                   strchr(cp, '$') != NULL)
+                   strchr(cp, '$') != NULL) {
+                       if (r->man->meta.rcsids & (1 << os_e))
+                               mandoc_msg(MANDOCERR_RCS_REP, r->parse,
+                                   ln, stesc + 1 - buf->buf, stesc + 1);
                        r->man->meta.rcsids |= 1 << os_e;
+               }
 
                /* Handle trailing whitespace. */