diff options
Diffstat (limited to 'usr.bin/mandoc/roff.c')
-rw-r--r-- | usr.bin/mandoc/roff.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/usr.bin/mandoc/roff.c b/usr.bin/mandoc/roff.c index 7193bdba615..516c13217d1 100644 --- a/usr.bin/mandoc/roff.c +++ b/usr.bin/mandoc/roff.c @@ -1,4 +1,4 @@ -/* $OpenBSD: roff.c,v 1.184 2017/06/14 22:50:37 schwarze Exp $ */ +/* $OpenBSD: roff.c,v 1.185 2017/06/17 22:40:27 schwarze Exp $ */ /* * Copyright (c) 2008-2012, 2014 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2010-2015, 2017 Ingo Schwarze <schwarze@openbsd.org> @@ -1164,6 +1164,7 @@ roff_res(struct roff *r, struct buf *buf, int ln, int pos) size_t maxl; /* expected length of the escape name */ size_t naml; /* actual length of the escape name */ enum mandoc_esc esc; /* type of the escape sequence */ + enum mdoc_os os_e; /* kind of RCS id seen */ int inaml; /* length returned from mandoc_escape() */ int expand_count; /* to avoid infinite loops */ int npos; /* position in numeric expression */ @@ -1181,6 +1182,23 @@ roff_res(struct roff *r, struct buf *buf, int ln, int pos) stesc++; if (*stesc != '"' && *stesc != '#') continue; + + /* Comment found, look for RCS id. */ + + if ((cp = strstr(stesc, "$" "OpenBSD")) != NULL) { + os_e = MDOC_OS_OPENBSD; + cp += 8; + } else if ((cp = strstr(stesc, "$" "NetBSD")) != NULL) { + os_e = MDOC_OS_NETBSD; + cp += 7; + } + if (cp != NULL && + isalnum((unsigned char)*cp) == 0 && + strchr(cp, '$') != NULL) + r->man->meta.rcsids |= 1 << os_e; + + /* Handle trailing whitespace. */ + cp = strchr(stesc--, '\0') - 1; if (*cp == '\n') { done = 1; |