1ce3adf43SDag-Erling Smørgrav#!/usr/bin/awk 2ce3adf43SDag-Erling Smørgrav# 3ce3adf43SDag-Erling Smørgrav# Version history: 4ce3adf43SDag-Erling Smørgrav# v4+ Adapted for OpenSSH Portable (see cvs Id and history) 5ce3adf43SDag-Erling Smørgrav# v3, I put the program under a proper license 6ce3adf43SDag-Erling Smørgrav# Dan Nelson <dnelson@allantgroup.com> added .An, .Aq and fixed a typo 7ce3adf43SDag-Erling Smørgrav# v2, fixed to work on GNU awk --posix and MacOS X 8ce3adf43SDag-Erling Smørgrav# v1, first attempt, didn't work on MacOS X 9ce3adf43SDag-Erling Smørgrav# 10ce3adf43SDag-Erling Smørgrav# Copyright (c) 2003 Peter Stuge <stuge-mdoc2man@cdy.org> 11ce3adf43SDag-Erling Smørgrav# 12ce3adf43SDag-Erling Smørgrav# Permission to use, copy, modify, and distribute this software for any 13ce3adf43SDag-Erling Smørgrav# purpose with or without fee is hereby granted, provided that the above 14ce3adf43SDag-Erling Smørgrav# copyright notice and this permission notice appear in all copies. 15ce3adf43SDag-Erling Smørgrav# 16ce3adf43SDag-Erling Smørgrav# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17ce3adf43SDag-Erling Smørgrav# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18ce3adf43SDag-Erling Smørgrav# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19ce3adf43SDag-Erling Smørgrav# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20ce3adf43SDag-Erling Smørgrav# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21ce3adf43SDag-Erling Smørgrav# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22ce3adf43SDag-Erling Smørgrav# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23ce3adf43SDag-Erling Smørgrav 24ce3adf43SDag-Erling Smørgrav 25ce3adf43SDag-Erling SmørgravBEGIN { 26ce3adf43SDag-Erling Smørgrav optlist=0 27ce3adf43SDag-Erling Smørgrav oldoptlist=0 28ce3adf43SDag-Erling Smørgrav nospace=0 29ce3adf43SDag-Erling Smørgrav synopsis=0 30ce3adf43SDag-Erling Smørgrav reference=0 31ce3adf43SDag-Erling Smørgrav block=0 32ce3adf43SDag-Erling Smørgrav ext=0 33ce3adf43SDag-Erling Smørgrav extopt=0 34ce3adf43SDag-Erling Smørgrav literal=0 35ce3adf43SDag-Erling Smørgrav prenl=0 36ce3adf43SDag-Erling Smørgrav breakw=0 37ce3adf43SDag-Erling Smørgrav line="" 38ce3adf43SDag-Erling Smørgrav} 39ce3adf43SDag-Erling Smørgrav 40ce3adf43SDag-Erling Smørgravfunction wtail() { 41ce3adf43SDag-Erling Smørgrav retval="" 42ce3adf43SDag-Erling Smørgrav while(w<nwords) { 43ce3adf43SDag-Erling Smørgrav if(length(retval)) 44ce3adf43SDag-Erling Smørgrav retval=retval OFS 45ce3adf43SDag-Erling Smørgrav retval=retval words[++w] 46ce3adf43SDag-Erling Smørgrav } 47ce3adf43SDag-Erling Smørgrav return retval 48ce3adf43SDag-Erling Smørgrav} 49ce3adf43SDag-Erling Smørgrav 50ce3adf43SDag-Erling Smørgravfunction add(str) { 51ce3adf43SDag-Erling Smørgrav for(;prenl;prenl--) 52ce3adf43SDag-Erling Smørgrav line=line "\n" 53ce3adf43SDag-Erling Smørgrav line=line str 54ce3adf43SDag-Erling Smørgrav} 55ce3adf43SDag-Erling Smørgrav 56ce3adf43SDag-Erling Smørgrav! /^\./ { 57ce3adf43SDag-Erling Smørgrav for(;prenl;prenl--) 58ce3adf43SDag-Erling Smørgrav print "" 59ce3adf43SDag-Erling Smørgrav print 60ce3adf43SDag-Erling Smørgrav if(literal) 61ce3adf43SDag-Erling Smørgrav print ".br" 62ce3adf43SDag-Erling Smørgrav next 63ce3adf43SDag-Erling Smørgrav} 64ce3adf43SDag-Erling Smørgrav 65ce3adf43SDag-Erling Smørgrav/^\.\\"/ { next } 66ce3adf43SDag-Erling Smørgrav 67ce3adf43SDag-Erling Smørgrav{ 68ce3adf43SDag-Erling Smørgrav option=0 69ce3adf43SDag-Erling Smørgrav parens=0 70ce3adf43SDag-Erling Smørgrav angles=0 71ce3adf43SDag-Erling Smørgrav sub("^\\.","") 72ce3adf43SDag-Erling Smørgrav nwords=split($0,words) 73ce3adf43SDag-Erling Smørgrav for(w=1;w<=nwords;w++) { 74ce3adf43SDag-Erling Smørgrav skip=0 75ce3adf43SDag-Erling Smørgrav if(match(words[w],"^Li|Pf$")) { 76ce3adf43SDag-Erling Smørgrav skip=1 77ce3adf43SDag-Erling Smørgrav } else if(match(words[w],"^Xo$")) { 78ce3adf43SDag-Erling Smørgrav skip=1 79ce3adf43SDag-Erling Smørgrav ext=1 80ce3adf43SDag-Erling Smørgrav if(length(line)&&!(match(line," $")||prenl)) 81ce3adf43SDag-Erling Smørgrav add(OFS) 82ce3adf43SDag-Erling Smørgrav } else if(match(words[w],"^Xc$")) { 83ce3adf43SDag-Erling Smørgrav skip=1 84ce3adf43SDag-Erling Smørgrav ext=0 85ce3adf43SDag-Erling Smørgrav if(!extopt) 86ce3adf43SDag-Erling Smørgrav prenl++ 87ce3adf43SDag-Erling Smørgrav w=nwords 88ce3adf43SDag-Erling Smørgrav } else if(match(words[w],"^Bd$")) { 89ce3adf43SDag-Erling Smørgrav skip=1 90ce3adf43SDag-Erling Smørgrav if(match(words[w+1],"-literal")) { 91ce3adf43SDag-Erling Smørgrav literal=1 92ce3adf43SDag-Erling Smørgrav prenl++ 93ce3adf43SDag-Erling Smørgrav w=nwords 94ce3adf43SDag-Erling Smørgrav } 95ce3adf43SDag-Erling Smørgrav } else if(match(words[w],"^Ed$")) { 96ce3adf43SDag-Erling Smørgrav skip=1 97ce3adf43SDag-Erling Smørgrav literal=0 98ce3adf43SDag-Erling Smørgrav } else if(match(words[w],"^Ns$")) { 99ce3adf43SDag-Erling Smørgrav skip=1 100ce3adf43SDag-Erling Smørgrav if(!nospace) 101ce3adf43SDag-Erling Smørgrav nospace=1 102ce3adf43SDag-Erling Smørgrav sub(" $","",line) 103ce3adf43SDag-Erling Smørgrav } else if(match(words[w],"^No$")) { 104ce3adf43SDag-Erling Smørgrav skip=1 105ce3adf43SDag-Erling Smørgrav sub(" $","",line) 106ce3adf43SDag-Erling Smørgrav add(words[++w]) 107ce3adf43SDag-Erling Smørgrav } else if(match(words[w],"^Dq$")) { 108ce3adf43SDag-Erling Smørgrav skip=1 109ce3adf43SDag-Erling Smørgrav add("``") 110ce3adf43SDag-Erling Smørgrav add(words[++w]) 111ce3adf43SDag-Erling Smørgrav while(w<nwords&&!match(words[w+1],"^[\\.,]")) 112ce3adf43SDag-Erling Smørgrav add(OFS words[++w]) 113ce3adf43SDag-Erling Smørgrav add("''") 114ce3adf43SDag-Erling Smørgrav if(!nospace&&match(words[w+1],"^[\\.,]")) 115ce3adf43SDag-Erling Smørgrav nospace=1 116ce3adf43SDag-Erling Smørgrav } else if(match(words[w],"^Sq|Ql$")) { 117ce3adf43SDag-Erling Smørgrav skip=1 118ce3adf43SDag-Erling Smørgrav add("`" words[++w] "'") 119ce3adf43SDag-Erling Smørgrav if(!nospace&&match(words[w+1],"^[\\.,]")) 120ce3adf43SDag-Erling Smørgrav nospace=1 121ce3adf43SDag-Erling Smørgrav } else if(match(words[w],"^Oo$")) { 122ce3adf43SDag-Erling Smørgrav skip=1 123ce3adf43SDag-Erling Smørgrav extopt=1 124ce3adf43SDag-Erling Smørgrav if(!nospace) 125ce3adf43SDag-Erling Smørgrav nospace=1 126ce3adf43SDag-Erling Smørgrav add("[") 127ce3adf43SDag-Erling Smørgrav } else if(match(words[w],"^Oc$")) { 128ce3adf43SDag-Erling Smørgrav skip=1 129ce3adf43SDag-Erling Smørgrav extopt=0 130ce3adf43SDag-Erling Smørgrav add("]") 131ce3adf43SDag-Erling Smørgrav } 132ce3adf43SDag-Erling Smørgrav if(!skip) { 133ce3adf43SDag-Erling Smørgrav if(!nospace&&length(line)&&!(match(line," $")||prenl)) 134ce3adf43SDag-Erling Smørgrav add(OFS) 135ce3adf43SDag-Erling Smørgrav if(nospace==1) 136ce3adf43SDag-Erling Smørgrav nospace=0 137ce3adf43SDag-Erling Smørgrav } 138ce3adf43SDag-Erling Smørgrav if(match(words[w],"^Dd$")) { 139ce3adf43SDag-Erling Smørgrav if(match(words[w+1],"^\\$Mdocdate:")) { 140ce3adf43SDag-Erling Smørgrav w++; 141ce3adf43SDag-Erling Smørgrav if(match(words[w+4],"^\\$$")) { 142ce3adf43SDag-Erling Smørgrav words[w+4] = "" 143ce3adf43SDag-Erling Smørgrav } 144ce3adf43SDag-Erling Smørgrav } 145ce3adf43SDag-Erling Smørgrav date=wtail() 146ce3adf43SDag-Erling Smørgrav next 147ce3adf43SDag-Erling Smørgrav } else if(match(words[w],"^Dt$")) { 148ce3adf43SDag-Erling Smørgrav id=wtail() 149ce3adf43SDag-Erling Smørgrav next 150ce3adf43SDag-Erling Smørgrav } else if(match(words[w],"^Ux$")) { 151ce3adf43SDag-Erling Smørgrav add("UNIX") 152ce3adf43SDag-Erling Smørgrav skip=1 153ce3adf43SDag-Erling Smørgrav } else if(match(words[w],"^Ox$")) { 154ce3adf43SDag-Erling Smørgrav add("OpenBSD") 155ce3adf43SDag-Erling Smørgrav skip=1 156ce3adf43SDag-Erling Smørgrav } else if(match(words[w],"^Os$")) { 157ce3adf43SDag-Erling Smørgrav add(".TH " id " \"" date "\" \"" wtail() "\"") 158ce3adf43SDag-Erling Smørgrav } else if(match(words[w],"^Sh$")) { 159ce3adf43SDag-Erling Smørgrav add(".SH") 160ce3adf43SDag-Erling Smørgrav synopsis=match(words[w+1],"SYNOPSIS") 161ce3adf43SDag-Erling Smørgrav } else if(match(words[w],"^Xr$")) { 162ce3adf43SDag-Erling Smørgrav add("\\fB" words[++w] "\\fP(" words[++w] ")" words[++w]) 163ce3adf43SDag-Erling Smørgrav } else if(match(words[w],"^Rs$")) { 164ce3adf43SDag-Erling Smørgrav split("",refauthors) 165ce3adf43SDag-Erling Smørgrav nrefauthors=0 166ce3adf43SDag-Erling Smørgrav reftitle="" 167ce3adf43SDag-Erling Smørgrav refissue="" 168ce3adf43SDag-Erling Smørgrav refdate="" 169ce3adf43SDag-Erling Smørgrav refopt="" 170ce3adf43SDag-Erling Smørgrav refreport="" 171ce3adf43SDag-Erling Smørgrav reference=1 172ce3adf43SDag-Erling Smørgrav next 173ce3adf43SDag-Erling Smørgrav } else if(match(words[w],"^Re$")) { 174ce3adf43SDag-Erling Smørgrav prenl++ 175ce3adf43SDag-Erling Smørgrav for(i=nrefauthors-1;i>0;i--) { 176ce3adf43SDag-Erling Smørgrav add(refauthors[i]) 177ce3adf43SDag-Erling Smørgrav if(i>1) 178ce3adf43SDag-Erling Smørgrav add(", ") 179ce3adf43SDag-Erling Smørgrav } 180ce3adf43SDag-Erling Smørgrav if(nrefauthors>1) 181ce3adf43SDag-Erling Smørgrav add(" and ") 182ce3adf43SDag-Erling Smørgrav if(nrefauthors>0) 183ce3adf43SDag-Erling Smørgrav add(refauthors[0] ", ") 184ce3adf43SDag-Erling Smørgrav add("\\fI" reftitle "\\fP") 185ce3adf43SDag-Erling Smørgrav if(length(refissue)) 186ce3adf43SDag-Erling Smørgrav add(", " refissue) 187ce3adf43SDag-Erling Smørgrav if(length(refreport)) { 188ce3adf43SDag-Erling Smørgrav add(", " refreport) 189ce3adf43SDag-Erling Smørgrav } 190ce3adf43SDag-Erling Smørgrav if(length(refdate)) 191ce3adf43SDag-Erling Smørgrav add(", " refdate) 192ce3adf43SDag-Erling Smørgrav if(length(refopt)) 193ce3adf43SDag-Erling Smørgrav add(", " refopt) 194ce3adf43SDag-Erling Smørgrav add(".") 195ce3adf43SDag-Erling Smørgrav reference=0 196ce3adf43SDag-Erling Smørgrav } else if(reference) { 197ce3adf43SDag-Erling Smørgrav if(match(words[w],"^%A$")) { refauthors[nrefauthors++]=wtail() } 198ce3adf43SDag-Erling Smørgrav if(match(words[w],"^%T$")) { 199ce3adf43SDag-Erling Smørgrav reftitle=wtail() 200ce3adf43SDag-Erling Smørgrav sub("^\"","",reftitle) 201ce3adf43SDag-Erling Smørgrav sub("\"$","",reftitle) 202ce3adf43SDag-Erling Smørgrav } 203ce3adf43SDag-Erling Smørgrav if(match(words[w],"^%N$")) { refissue=wtail() } 204ce3adf43SDag-Erling Smørgrav if(match(words[w],"^%D$")) { refdate=wtail() } 205ce3adf43SDag-Erling Smørgrav if(match(words[w],"^%O$")) { refopt=wtail() } 206ce3adf43SDag-Erling Smørgrav if(match(words[w],"^%R$")) { refreport=wtail() } 207ce3adf43SDag-Erling Smørgrav } else if(match(words[w],"^Nm$")) { 208ce3adf43SDag-Erling Smørgrav if(synopsis) { 209ce3adf43SDag-Erling Smørgrav add(".br") 210ce3adf43SDag-Erling Smørgrav prenl++ 211ce3adf43SDag-Erling Smørgrav } 212ce3adf43SDag-Erling Smørgrav n=words[++w] 213ce3adf43SDag-Erling Smørgrav if(!length(name)) 214ce3adf43SDag-Erling Smørgrav name=n 215ce3adf43SDag-Erling Smørgrav if(!length(n)) 216ce3adf43SDag-Erling Smørgrav n=name 217ce3adf43SDag-Erling Smørgrav add("\\fB" n "\\fP") 218ce3adf43SDag-Erling Smørgrav if(!nospace&&match(words[w+1],"^[\\.,]")) 219ce3adf43SDag-Erling Smørgrav nospace=1 220ce3adf43SDag-Erling Smørgrav } else if(match(words[w],"^Nd$")) { 221ce3adf43SDag-Erling Smørgrav add("\\- " wtail()) 222ce3adf43SDag-Erling Smørgrav } else if(match(words[w],"^Fl$")) { 223ce3adf43SDag-Erling Smørgrav add("\\fB\\-" words[++w] "\\fP") 224ce3adf43SDag-Erling Smørgrav if(!nospace&&match(words[w+1],"^[\\.,]")) 225ce3adf43SDag-Erling Smørgrav nospace=1 226ce3adf43SDag-Erling Smørgrav } else if(match(words[w],"^Ar$")) { 227ce3adf43SDag-Erling Smørgrav add("\\fI") 228ce3adf43SDag-Erling Smørgrav if(w==nwords) 229ce3adf43SDag-Erling Smørgrav add("file ...\\fP") 230ce3adf43SDag-Erling Smørgrav else { 231ce3adf43SDag-Erling Smørgrav add(words[++w] "\\fP") 232ce3adf43SDag-Erling Smørgrav while(match(words[w+1],"^\\|$")) 233ce3adf43SDag-Erling Smørgrav add(OFS words[++w] " \\fI" words[++w] "\\fP") 234ce3adf43SDag-Erling Smørgrav } 235ce3adf43SDag-Erling Smørgrav if(!nospace&&match(words[w+1],"^[\\.,]")) 236ce3adf43SDag-Erling Smørgrav nospace=1 237ce3adf43SDag-Erling Smørgrav } else if(match(words[w],"^Cm$")) { 238ce3adf43SDag-Erling Smørgrav add("\\fB" words[++w] "\\fP") 239ce3adf43SDag-Erling Smørgrav while(w<nwords&&match(words[w+1],"^[\\.,:;)]")) 240ce3adf43SDag-Erling Smørgrav add(words[++w]) 241ce3adf43SDag-Erling Smørgrav } else if(match(words[w],"^Op$")) { 242ce3adf43SDag-Erling Smørgrav option=1 243ce3adf43SDag-Erling Smørgrav if(!nospace) 244ce3adf43SDag-Erling Smørgrav nospace=1 245ce3adf43SDag-Erling Smørgrav add("[") 246ce3adf43SDag-Erling Smørgrav } else if(match(words[w],"^Pp$")) { 247ce3adf43SDag-Erling Smørgrav prenl++ 248ce3adf43SDag-Erling Smørgrav } else if(match(words[w],"^An$")) { 249ce3adf43SDag-Erling Smørgrav prenl++ 250ce3adf43SDag-Erling Smørgrav } else if(match(words[w],"^Ss$")) { 251ce3adf43SDag-Erling Smørgrav add(".SS") 252ce3adf43SDag-Erling Smørgrav } else if(match(words[w],"^Pa$")&&!option) { 253ce3adf43SDag-Erling Smørgrav add("\\fI") 254ce3adf43SDag-Erling Smørgrav w++ 255ce3adf43SDag-Erling Smørgrav if(match(words[w],"^\\.")) 256ce3adf43SDag-Erling Smørgrav add("\\&") 257ce3adf43SDag-Erling Smørgrav add(words[w] "\\fP") 258ce3adf43SDag-Erling Smørgrav while(w<nwords&&match(words[w+1],"^[\\.,:;)]")) 259ce3adf43SDag-Erling Smørgrav add(words[++w]) 260ce3adf43SDag-Erling Smørgrav } else if(match(words[w],"^Dv$")) { 261ce3adf43SDag-Erling Smørgrav add(".BR") 262ce3adf43SDag-Erling Smørgrav } else if(match(words[w],"^Em|Ev$")) { 263ce3adf43SDag-Erling Smørgrav add(".IR") 264ce3adf43SDag-Erling Smørgrav } else if(match(words[w],"^Pq$")) { 265ce3adf43SDag-Erling Smørgrav add("(") 266ce3adf43SDag-Erling Smørgrav nospace=1 267ce3adf43SDag-Erling Smørgrav parens=1 268ce3adf43SDag-Erling Smørgrav } else if(match(words[w],"^Aq$")) { 269ce3adf43SDag-Erling Smørgrav add("<") 270ce3adf43SDag-Erling Smørgrav nospace=1 271ce3adf43SDag-Erling Smørgrav angles=1 272ce3adf43SDag-Erling Smørgrav } else if(match(words[w],"^S[xy]$")) { 273ce3adf43SDag-Erling Smørgrav add(".B " wtail()) 274ce3adf43SDag-Erling Smørgrav } else if(match(words[w],"^Ic$")) { 275ce3adf43SDag-Erling Smørgrav plain=1 276ce3adf43SDag-Erling Smørgrav add("\\fB") 277ce3adf43SDag-Erling Smørgrav while(w<nwords) { 278ce3adf43SDag-Erling Smørgrav w++ 279ce3adf43SDag-Erling Smørgrav if(match(words[w],"^Op$")) { 280ce3adf43SDag-Erling Smørgrav w++ 281ce3adf43SDag-Erling Smørgrav add("[") 282ce3adf43SDag-Erling Smørgrav words[nwords]=words[nwords] "]" 283ce3adf43SDag-Erling Smørgrav } 284ce3adf43SDag-Erling Smørgrav if(match(words[w],"^Ar$")) { 285ce3adf43SDag-Erling Smørgrav add("\\fI" words[++w] "\\fP") 286ce3adf43SDag-Erling Smørgrav } else if(match(words[w],"^[\\.,]")) { 287ce3adf43SDag-Erling Smørgrav sub(" $","",line) 288ce3adf43SDag-Erling Smørgrav if(plain) { 289ce3adf43SDag-Erling Smørgrav add("\\fP") 290ce3adf43SDag-Erling Smørgrav plain=0 291ce3adf43SDag-Erling Smørgrav } 292ce3adf43SDag-Erling Smørgrav add(words[w]) 293ce3adf43SDag-Erling Smørgrav } else { 294ce3adf43SDag-Erling Smørgrav if(!plain) { 295ce3adf43SDag-Erling Smørgrav add("\\fB") 296ce3adf43SDag-Erling Smørgrav plain=1 297ce3adf43SDag-Erling Smørgrav } 298ce3adf43SDag-Erling Smørgrav add(words[w]) 299ce3adf43SDag-Erling Smørgrav } 300ce3adf43SDag-Erling Smørgrav if(!nospace) 301ce3adf43SDag-Erling Smørgrav add(OFS) 302ce3adf43SDag-Erling Smørgrav } 303ce3adf43SDag-Erling Smørgrav sub(" $","",line) 304ce3adf43SDag-Erling Smørgrav if(plain) 305ce3adf43SDag-Erling Smørgrav add("\\fP") 306ce3adf43SDag-Erling Smørgrav } else if(match(words[w],"^Bl$")) { 307ce3adf43SDag-Erling Smørgrav oldoptlist=optlist 308ce3adf43SDag-Erling Smørgrav if(match(words[w+1],"-bullet")) 309ce3adf43SDag-Erling Smørgrav optlist=1 310ce3adf43SDag-Erling Smørgrav else if(match(words[w+1],"-enum")) { 311ce3adf43SDag-Erling Smørgrav optlist=2 312ce3adf43SDag-Erling Smørgrav enum=0 313ce3adf43SDag-Erling Smørgrav } else if(match(words[w+1],"-tag")) 314ce3adf43SDag-Erling Smørgrav optlist=3 315ce3adf43SDag-Erling Smørgrav else if(match(words[w+1],"-item")) 316ce3adf43SDag-Erling Smørgrav optlist=4 317ce3adf43SDag-Erling Smørgrav else if(match(words[w+1],"-bullet")) 318ce3adf43SDag-Erling Smørgrav optlist=1 319ce3adf43SDag-Erling Smørgrav w=nwords 320ce3adf43SDag-Erling Smørgrav } else if(match(words[w],"^El$")) { 321ce3adf43SDag-Erling Smørgrav optlist=oldoptlist 322*ca86bcf2SDag-Erling Smørgrav if(!optlist) 323*ca86bcf2SDag-Erling Smørgrav add(".PP") 324ce3adf43SDag-Erling Smørgrav } else if(match(words[w],"^Bk$")) { 325ce3adf43SDag-Erling Smørgrav if(match(words[w+1],"-words")) { 326ce3adf43SDag-Erling Smørgrav w++ 327ce3adf43SDag-Erling Smørgrav breakw=1 328ce3adf43SDag-Erling Smørgrav } 329ce3adf43SDag-Erling Smørgrav } else if(match(words[w],"^Ek$")) { 330ce3adf43SDag-Erling Smørgrav breakw=0 331ce3adf43SDag-Erling Smørgrav } else if(match(words[w],"^It$")&&optlist) { 332ce3adf43SDag-Erling Smørgrav if(optlist==1) 333ce3adf43SDag-Erling Smørgrav add(".IP \\(bu") 334ce3adf43SDag-Erling Smørgrav else if(optlist==2) 335ce3adf43SDag-Erling Smørgrav add(".IP " ++enum ".") 336ce3adf43SDag-Erling Smørgrav else if(optlist==3) { 337ce3adf43SDag-Erling Smørgrav add(".TP") 338ce3adf43SDag-Erling Smørgrav prenl++ 339ce3adf43SDag-Erling Smørgrav if(match(words[w+1],"^Pa$|^Ev$")) { 340ce3adf43SDag-Erling Smørgrav add(".B") 341ce3adf43SDag-Erling Smørgrav w++ 342ce3adf43SDag-Erling Smørgrav } 343ce3adf43SDag-Erling Smørgrav } else if(optlist==4) 344ce3adf43SDag-Erling Smørgrav add(".IP") 345ce3adf43SDag-Erling Smørgrav } else if(match(words[w],"^Sm$")) { 346ce3adf43SDag-Erling Smørgrav if(match(words[w+1],"off")) 347ce3adf43SDag-Erling Smørgrav nospace=2 348ce3adf43SDag-Erling Smørgrav else if(match(words[w+1],"on")) 349ce3adf43SDag-Erling Smørgrav nospace=0 350ce3adf43SDag-Erling Smørgrav w++ 351ce3adf43SDag-Erling Smørgrav } else if(!skip) { 352ce3adf43SDag-Erling Smørgrav add(words[w]) 353ce3adf43SDag-Erling Smørgrav } 354ce3adf43SDag-Erling Smørgrav } 355ce3adf43SDag-Erling Smørgrav if(match(line,"^\\.[^a-zA-Z]")) 356ce3adf43SDag-Erling Smørgrav sub("^\\.","",line) 357ce3adf43SDag-Erling Smørgrav if(parens) 358ce3adf43SDag-Erling Smørgrav add(")") 359ce3adf43SDag-Erling Smørgrav if(angles) 360ce3adf43SDag-Erling Smørgrav add(">") 361ce3adf43SDag-Erling Smørgrav if(option) 362ce3adf43SDag-Erling Smørgrav add("]") 363ce3adf43SDag-Erling Smørgrav if(ext&&!extopt&&!match(line," $")) 364ce3adf43SDag-Erling Smørgrav add(OFS) 365ce3adf43SDag-Erling Smørgrav if(!ext&&!extopt&&length(line)) { 366ce3adf43SDag-Erling Smørgrav print line 367ce3adf43SDag-Erling Smørgrav prenl=0 368ce3adf43SDag-Erling Smørgrav line="" 369ce3adf43SDag-Erling Smørgrav } 370ce3adf43SDag-Erling Smørgrav} 371