Annotation of 43BSDReno/share/tmac/tmac.doc, revision 1.1.1.1

1.1       root        1: .\"
                      2: .\" Copyright (c) 1990 The Regents of the University of California.
                      3: .\" All rights reserved.
                      4: .\"
                      5: .\" Redistribution and use in source and binary forms are permitted provided
                      6: .\" that: (1) source distributions retain this entire copyright notice and
                      7: .\" comment, and (2) distributions including binaries display the following
                      8: .\" acknowledgement:  ``This product includes software developed by the
                      9: .\" University of California, Berkeley and its contributors'' in the
                     10: .\" documentation or other materials provided with the distribution and in
                     11: .\" all advertising materials mentioning features or use of this software.
                     12: .\" Neither the name of the University nor the names of its contributors may
                     13: .\" be used to endorse or promote products derived from this software without
                     14: .\" specific prior written permission.
                     15: .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
                     16: .\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
                     17: .\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                     18: .\"
                     19: .\"     @(#)tmac.doc   5.9 (Berkeley) 7/24/90
                     20: .\"
                     21: .\" Assume nroff on crt's only if cR==1
                     22: .if n .nr cR 1
                     23: .\"    STRING CONSTANTS
                     24: .\"    DITROFF
                     25: .if t \{\
                     26: .\"    Address Style
                     27: .ds aD \fI
                     28: .\"    Argument Reference Style
                     29: .ds aR \f(CO
                     30: .\"    Interactive Comand Modifier (flag)
                     31: .ds cM \f(CB
                     32: .\"    Emphasis (in the English sense - usually italics)
                     33: .ds eM \fI
                     34: .\"    Errno Style
                     35: .ds eR \fC
                     36: .\"    Environment Variable Style
                     37: .ds eV \fC
                     38: .\"    Command Line Flag Style
                     39: .ds fL \f(CB
                     40: .\"    Header String Style
                     41: .ds Hs \fR
                     42: .\"    Interactive Command Style
                     43: .ds iC \f(CB
                     44: .\"    Literal Style
                     45: .ds lI \fC
                     46: .\"    Left Parenthesis Style
                     47: .ds lP \fR\|(\|\fP
                     48: .\"    Right Parenthesis Style
                     49: .ds rP \fR\|)\|\fP
                     50: .\"    Options Open Bracket Style
                     51: .ds lB \fR\^[\^\fP
                     52: .\"    Options Open Bracket Style
                     53: .ds rB \fR\^]\fP
                     54: .\"    Name (subject of manpage) Style
                     55: .ds nM \f(CB
                     56: .\"    Pathname Style
                     57: .ds pA \fC
                     58: .\"    Accepted punctuation string for -mdoc syntax
                     59: .ds Pu \fR[.,:;(\^)[\^]\fR]
                     60: .\"    Section Header Style
                     61: .ds Sp \s12\fB
                     62: .\" .ds sT \s-2\fR
                     63: .\"    Symbolic Emphasis (boldface)
                     64: .ds sY \f(CB
                     65: .\"    Generic Variable Style
                     66: .ds vA \fI
                     67: .\"    Volume Title Style
                     68: .ds Vs \fR
                     69: .\"    Cross Reference STyle (man page only)
                     70: .ds xR \fC
                     71: .\"    Math *
                     72: .tr *\(**
                     73: .\}
                     74: .\"    NROFF
                     75: .if n \{\
                     76: .\"    Address Style
                     77: .ds aD \fI
                     78: .\"    Argument Reference Style
                     79: .ds aR \fI
                     80: .\"    Interactive Command Modifier (flag)
                     81: .ds cM \fB
                     82: .\"    Emphasis (in the English sense - usually italics)
                     83: .ds eM \fI
                     84: .\"    Errno Style
                     85: .ds eR \fR
                     86: .\"    Environment Variable Style
                     87: .ds eV \fR
                     88: .\"    Command Line Flag Style
                     89: .ds fL \fB
                     90: .\"    Header String Style
                     91: .ds Hs \fR
                     92: .\"    Interactive Command Style
                     93: .ds iC \fB
                     94: .\"    Literal Style
                     95: .ds lI \fR
                     96: .\"    Left Parenthesis Style
                     97: .ds lP \fR\|(\fP
                     98: .\"    Right Parenthesis Style
                     99: .ds rP \fR\|)\fP
                    100: .\"    Options Open Bracket Style
                    101: .ds lB \fR\|[\|\fP
                    102: .\"    Options Open Bracket Style
                    103: .ds rB \fR\|]\fP
                    104: .\"    Name (subject of manpage) Style
                    105: .ds nM \fB
                    106: .\"    Pathname Style
                    107: .ds pA \fI
                    108: .\"    Accepted punctuation string for -mdoc syntax
                    109: .ds Pu [.,;:()[]]
                    110: .\"    Section Header Style
                    111: .ds Sp \s12\fB
                    112: .\"    .ds sT \s-2\fR
                    113: .\" .ds sT \s-2\fR
                    114: .\"    Symbol, Mode or Mask Style
                    115: .ds sY \fB
                    116: .\"    Generic Variable Style
                    117: .ds vA \fI
                    118: .\"    Volume Title Style
                    119: .ds Vs \fR
                    120: .\"    Cross Reference Style (man page only)
                    121: .ds xR \fR
                    122: .\}
                    123: .\"    INDENTS - Subheaders(sI), Text(Ti) between Section Headers and Subsects
                    124: .if t \{\
                    125: .      nr sI \w'\fC,'u*5
                    126: .      nr Ti \n(sIu
                    127: .\}
                    128: .if n \{\
                    129: .      nr sI .5i
                    130: .      nr Ti .5i
                    131: .\}
                    132: .\"    Flags for macros names which are used only for .Ds
                    133: .nr dI 6n
                    134: .nr dC 1
                    135: .nr dL 1
                    136: .nr dR 1
                    137: .\"    INDENT WIDTHS (for Lists)
                    138: .\"    Width Needed for Address Tag (indented amount)
                    139: .nr Ad 12n
                    140: .\"    Angle Quote Width
                    141: .nr Aq 12n
                    142: .\"    Width Needed for Argument
                    143: .nr Ar 12n
                    144: .\"    Width Needed for Column offset
                    145: .nr Cl 15n
                    146: .\"    Width neeeded for Interactive Command Modifier
                    147: .nr Cm 10n
                    148: .\"    Width Needed for Complex Expressions
                    149: .nr Cx 20n
                    150: .\"    Indent Width Needed for Display (right and left margins)
                    151: .nr Ds 6n
                    152: .\"    Double Quote Width
                    153: .nr Dq 12n
                    154: .\"    tI is dependent on Ds and used by .Dp
                    155: .nr tI \n(Dsu
                    156: .\"    Width Needed for Display
                    157: .nr Em 10n
                    158: .\"    Width Needed for Errno Types
                    159: .nr Er 15n
                    160: .\"    Width Needed for Environment Variables
                    161: .nr Ev 15n
                    162: .\"    Width Needed for Example Indent
                    163: .nr Ex 10n
                    164: .\"    Width Needed for Flag
                    165: .nr Fl 10n
                    166: .\"    Width Needed for Function
                    167: .nr Fn 16n
                    168: .\"    Width neeeded for Interactive Command Name
                    169: .nr Ic 10n
                    170: .\"    Width Needed for Constant
                    171: .nr Li 16n
                    172: .\"    Width Needed for Math Symbol ? not sure if needed
                    173: .nr Ms 6n
                    174: .\"    Width Needed for Name
                    175: .nr Nm 10n
                    176: .\"    Width Needed for Option Begin
                    177: .nr Ob 14n
                    178: .\"    Width Needed for Option End
                    179: .nr Oe 14n
                    180: .\"    Width Needed for Option (one line)
                    181: .nr Op 14n
                    182: .\"    Width Needed for Pathname
                    183: .nr Pa 32n
                    184: .\"    Parenthesis Quote Width
                    185: .nr Pq 12n
                    186: .\"    Single Quote Width
                    187: .nr Sq 12n
                    188: .\"    Width Needed for Symbols, Modes or Masks
                    189: .nr Sy 6n
                    190: .\"    Width needed for default or unknown text width
                    191: .nr Tx 22n
                    192: .\"    Width Needed for Generic Variable
                    193: .nr Va 12n
                    194: .\"    Width Needed for Cross Reference, should the cross ref be annotated.
                    195: .nr Xr 10n
                    196: .\" PARAGRAPH SPACE
                    197: .if t \{\
                    198: .      nr Pp .5v
                    199: .\}
                    200: .if n \{\
                    201: .      nr Pp 1v
                    202: .\}
                    203: .\"    PAGE LAYOUT
                    204: .\" .Li Tagged Paragraph Style - zero if break on oversized tag
                    205: .\" one if add em space and continue filling line.
                    206: .nr tP 0
                    207: .\" Page Layout Macro
                    208: .de pL
                    209: .\"    DITROFF
                    210: .ie t \{\
                    211: .\" Header Margin
                    212: .      nr Hm .5i
                    213: .\" Footer Margin
                    214: .      nr Fm .5i
                    215: .\" Line length
                    216: .      nr ll 5.5i
                    217: .\" Line length
                    218: .      ll 5.5i
                    219: .\" Title length
                    220: .      nr lt 5.5i
                    221: .\" Title length
                    222: .      lt 5.5i
                    223: .\" Page offset
                    224: .      nr po 1.56i
                    225: .\" Page offset
                    226: .      po 1.56i
                    227: .\" Vertical space distance (from Section headers/Lists/Subsections)
                    228: .      nr vV .5v
                    229: .\" em space
                    230: .      ds tP \|\|\|\|\|\|
                    231: .\}
                    232: .el \{\
                    233: .\" Line length
                    234: .      nr ll 78n
                    235: .      ll 78n
                    236: .\" Title length
                    237: .      nr lt 78n
                    238: .\" Title length
                    239: .      lt 78n
                    240: .\" Page offset
                    241: .      nr po 0i
                    242: .\" Page offset
                    243: .      po 0i
                    244: .\" Vertical space distance (from Section headers/Lists/Subsections)
                    245: .      nr vV 1v
                    246: .\" em space
                    247: .      ds tP \0\0
                    248: .\" Test for crt
                    249: .      ie \\n(cR .nr Hm 0
                    250: .      el .nr Hm .5i
                    251: .\" Footer Margin
                    252: .      nr Fm .5i
                    253: .\}
                    254: ..
                    255: .\" Adjustment mode
                    256: .if n \{\
                    257: .ad l
                    258: .na
                    259: ..
                    260: .\}
                    261: .\" PREDEFINED STRINGS
                    262: .if t \{\
                    263: .      ds <= \(<=
                    264: .      ds >= \(>=
                    265: .      ds Lq \&``
                    266: .      ds Rq \&''
                    267: .      ds ua \(ua
                    268: .      ds aa \(aa
                    269: .      ds ga \(ga
                    270: .      ds sR \(aa
                    271: .      ds sL \(ga
                    272: .\}
                    273: .if n \{\
                    274: .      ds <= \&<\&=
                    275: .      ds >= \&>\&=
                    276: .       ds Rq ''
                    277: .       ds Lq ``
                    278: .      ds ua ^
                    279: .      ds aa '
                    280: .      ds ga `
                    281: .      ds sL `
                    282: .      ds sR '
                    283: .\}
                    284: .\" Note: The distances from the bottom or top of the page are set
                    285: .\" in headers (macro .hK): to -1.25 for troff, and -1.167 for nroff
                    286: .\" bottoms, and top is 0.
                    287: .\"
                    288: .\"    .Dt Document/manpage_title section/chapter volume
                    289: .\"            The \{ and \} is necessary as roff doesn't nest if-elses
                    290: .\"            properly, especially with .ds.
                    291: .\"    TODO: separate Dt into Dt, Ch and Vt for supp docs.
                    292: .de Dt
                    293: .ds dT UNTITLED
                    294: .ds vT Local
                    295: .ds cH Null
                    296: .\"    Volume and Section Number or Chapter Number
                    297: .if !"\\$1"" .ds dT \\$1
                    298: .if !"\\$2"" \{\
                    299: .      ds cH \\$2
                    300: .      if "\\$3"" \{\
                    301: .              \" Volume Title if none given
                    302: .              if \\$2>=1 .if \\$2<=8 \{\
                    303: .                      ds vT UNIX Reference Manual
                    304: .                      if \\$2>1 .if \\$2<6 .ds vT UNIX Programmer's Manual
                    305: .                      if "\\$2"8" .ds vT UNIX System Manager's Manual
                    306: .              \}
                    307: .              if "\\$2"unass"  .ds vT DRAFT
                    308: .              if "\\$2"draft"  .ds vT DRAFT
                    309: .              if "\\$2"paper"  .ds vT Null
                    310: .      \}
                    311: .\}
                    312: .if !"\\$3"" \{\
                    313: .      \" Volume Title if given
                    314: .      if "\\$3"USD"   .ds vT UNIX User's Supplementary Documents
                    315: .      if "\\$3"PS1"   .ds vT UNIX Programmers's Supplementary Documents
                    316: .      if "\\$3"AMD"   .ds vT UNIX Ancestral Manual Documents
                    317: .      if "\\$3"SMM"   .ds vT UNIX System Manager's Manual
                    318: .      if "\\$3"URM"   .ds vT UNIX Reference Manual
                    319: .      if "\\$3"PRM"   .ds vT UNIX Programmers's Manual
                    320: .      if "\\$3"IND"   .ds vT UNIX Manual Master Index
                    321: .      if "\\$3"CON"   .ds vT UNIX Contributed Software Manual
                    322: .      if "\\$3"IMP"   .ds vT UNIX Implementation Notes
                    323: .      if "\\$3"HOW"   .ds vT UNIX How Pocket Manual
                    324: .      if "\\$3"LOCAL" .ds vT UNIX Local Manual
                    325: .      if "\\*(vT"Local" .ds vT \\$3
                    326: .\}
                    327: ..
                    328: .\"
                    329: .\"    .Os Operating System/Standard and Release or Version Number
                    330: .\"
                    331: .de Os
                    332: .ds oS Null
                    333: .if "\\$1"" \{\
                    334: .      ds oS 4.4 Berkeley UNIX
                    335: .\}
                    336: .if "\\$2"" \{\
                    337: .      ds o1 Non-Null
                    338: .\}
                    339: .if "\\$1"ATT"   \{\
                    340: .      ds oS AT&T
                    341: .      if "\\$2""    .as oS \0UNIX
                    342: .      if "\\$2"7th" .as oS \07th Edition
                    343: .      if "\\$2"7"   .as oS \07th Edition
                    344: .      if "\\$2"III" .as oS \0System III
                    345: .      if "\\$2"3"   .as oS \0System III
                    346: .      if "\\$2"V"   .as oS \0System V
                    347: .      if "\\$2"V.2" .as oS \0System V Release 2
                    348: .      if "\\$2"V.3" .as oS \0System V Release 3
                    349: .      if "\\$2"V.4" .as oS \0System V Release 4
                    350: .\}
                    351: .if "\\$1"BSD" \{\
                    352: .      if "\\$2"3"    .ds oS 3rd Berkeley Distribution
                    353: .      if "\\$2"4"    .ds oS 4th Berkeley Distribution
                    354: .      if "\\$2"4.1"  .ds oS 4.1 Berkeley Distribution
                    355: .      if "\\$2"4.2"  .ds oS 4.2 Berkeley Distribution
                    356: .      if "\\$2"4.3"  .ds oS 4.3 Berkeley Distribution
                    357: .      if "\\$2"4.3+" .ds oS 4.3+tahoe Berkeley Distribution
                    358: .      if "\\$2"4.4"  .ds oS 4.4 Berkeley Distribution
                    359: .\}
                    360: .if "\\*(oS"Null" .ds oS \\$1
                    361: .if "\\*(o1"Non-Null" .as oS \0\\$2
                    362: .rm o1
                    363: ..
                    364: .\"
                    365: .\" Standards
                    366: .\"
                    367: .\" .de St
                    368: .\" .ds sT Null
                    369: .\" .if "\\$1"POSIX" \{\
                    370: .\" .  ds sT IEEE Standard POSIX
                    371: .\" .  if \\$2 .as sT \0\\$2
                    372: .\" .\}
                    373: .\" .if "\\$1"ANSI" \{\
                    374: .\" .  ds sT ANSI Standard
                    375: .\" .  if \\$2 .as sT \0\\$2
                    376: .\" .\}
                    377: .\" .if "\\$1"ISO" \{\
                    378: .\" .  ds sT ISO Standard
                    379: .\" .  if \\$2 .as sT \0\\$2
                    380: .\" .\}
                    381: .\" .if "\\*(sT"Null" .ds sR \\$3
                    382: .\" ..
                    383: .\"
                    384: .\" .de Gp
                    385: .\" .ie !"\\$1"" .ds gP \&\\$1 \\$2 \\$3 \\$4 \\$5
                    386: .\" .el .ds gP Null
                    387: .\" ..
                    388: .\"
                    389: .\"
                    390: .de Dd
                    391: .nr aa 0
                    392: .ie \\n(.$>0 \{\
                    393: .      ie \\n(.$<4 \{\
                    394: .              ds dD \\$1 \\$2 \\$3
                    395: .      \}
                    396: .      el .tm Usage: .Dd Month Day, Year (e.g July 4, 1977).
                    397: .\}
                    398: .el \{\
                    399: .      ds dD Epoch
                    400: .\}
                    401: ..
                    402: .\"
                    403: .\"    House Keeping Macro - Make sense of dT, cH, vT, sT, gP and dS
                    404: .\"    TODO: Try to get else's for efficiency
                    405: .\"    TODO: GET RID OF .wh -1.167i (its in v7)
                    406: .\"
                    407: .\"
                    408: .de hK
                    409: .nr % 1
                    410: .ds hT \\*(dT
                    411: .if !"\\*(cH"Null" \{\
                    412: .      ie !"\\*(gP"Null" .as hT \|(\|\\*(cH\\*(gP\|)
                    413: .      el .as hT \\|(\\|\\*(cH\\|)
                    414: .\}
                    415: .if "\\*(cH"Null" .if !"\\*(gP"Null" .as hT \&\|(\|\\*(gP\|)
                    416: .if t \{\
                    417: .      wh 0 hM
                    418: .      wh -1.25i fM
                    419: .\}
                    420: .if n \{\
                    421: .      ie \\n(cR \{\
                    422: .              hM
                    423: .              wh -0v fM
                    424: .      \}
                    425: .      el \{\
                    426: .              wh 0 hM
                    427: .              wh -1.167i fM
                    428: .      \}
                    429: .\}
                    430: .if n \{\
                    431: .      if \\n(nl==0:\\n(nl==-1 'bp
                    432: .\}
                    433: .if t 'bp
                    434: .em lM
                    435: ..
                    436: .\"    Header Macro
                    437: .\"
                    438: .de hM
                    439: .ev 1
                    440: .pL
                    441: .if !\\n(cR 'sp \\n(Hmu
                    442: .tl @\\*(Hs\\*(hT\fP@\\*(Vs\\*(vT\fP@\\*(Hs\\*(hT\fP@
                    443: 'sp \\n(Hmu
                    444: .ev
                    445: ..
                    446: .\"
                    447: .de fM
                    448: .ev 1
                    449: .pL
                    450: .if !\\n(cR \{\
                    451: '      sp \\n(Fmu
                    452: .      tl @\\*(Hs\\*(oS\fP@\\*(Vs\\*(dD\fP@%@
                    453: '      bp
                    454: .\}
                    455: .if \\n(cR \{\
                    456: .\" .  tl @\\*(Hs\\*(oS\fP@\\*(Vs\\*(dD\fP@%@
                    457: .\" '  bp
                    458: .\}
                    459: .ev
                    460: ..
                    461: .de lM
                    462: .fl
                    463: .if \\n(cR \{\
                    464: .       fM
                    465: .       pl \\n(nlu
                    466: .\}
                    467: ..
                    468: .de Pp
                    469: .sp \\n(Ppu
                    470: .ne 2
                    471: .ns
                    472: ..
                    473: .de Lp
                    474: .Pp
                    475: ..
                    476: .de LP
                    477: .tm Not a \-mdoc command: .LP
                    478: ..
                    479: .de PP
                    480: .tm Not a \-mdoc command: .PP
                    481: ..
                    482: .de pp
                    483: .tm Not a \-mdoc command: .pp
                    484: ..
                    485: .de Co
                    486: .tm Not a \-mdoc command: .Co
                    487: ..
                    488: .nr z. 1
                    489: .nr z, 1
                    490: .nr z: 1
                    491: .nr z; 1
                    492: .nr z) 1
                    493: .nr z( 1
                    494: .nr z[ 1
                    495: .nr z] 1
                    496: .\" This is disgusting, troff not parse if stmt properly
                    497: .nr z1 0
                    498: .nr z2 0
                    499: .nr z3 0
                    500: .nr z4 0
                    501: .nr z5 0
                    502: .nr z6 0
                    503: .nr z7 0
                    504: .nr z8 0
                    505: .nr z9 0
                    506: .nr z0 0
                    507: .nr z# 0
                    508: .\"
                    509: .de Ad
                    510: .ie \\n(.$==0 \{\
                    511: .       tm Usage: .Ad address [...] \\*(Pu
                    512: .\}
                    513: .el \{\
                    514: .       ds sV \\*(aD
                    515: .       nr cF \\n(.f
                    516: .       ie "\\*(iM"" .ds f1 \&\\*(sV
                    517: .       el .as f1 \&\\*(sV
                    518: .       nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                    519: .       ft \\n(cF
                    520: .\}
                    521: ..
                    522: .\"
                    523: .\" Command Line Argument Macro
                    524: .\"
                    525: .de Ar
                    526: .ie \\n(.$==0 \{\
                    527: .       ie !"\\*(iM"" .as f1 \&[\|\\*(aRfile\ ...\fP\|]
                    528: .       el \&[\|\\*(aRfile\ ...\fP\|]
                    529: .\}
                    530: .el \{\
                    531: .       ds sV \\*(aR
                    532: .       nr cF \\n(.f
                    533: .       ie "\\*(iM"" .ds f1 \&\\*(sV
                    534: .       el .as f1 \&\\*(sV
                    535: .       nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                    536: .       ft \\n(cF
                    537: .\}
                    538: ..
                    539: .\"
                    540: .de Em
                    541: .ie \\n(.$==0 \{\
                    542: .       tm Usage: .Em text ... \\*(Pu
                    543: .\}
                    544: .el \{\
                    545: .       ds sV \\*(eM
                    546: .       nr cF \\n(.f
                    547: .       ie "\\*(iM"" .ds f1 \&\\*(sV
                    548: .       el .as f1 \&\\*(sV
                    549: .       nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                    550: .       ft \\n(cF
                    551: .\}
                    552: ..
                    553: .\"
                    554: .de Er
                    555: .ie \\n(.$==0 \{\
                    556: .       tm Usage: .Er ERRNOTYPE ... \\*(Pu
                    557: .       \}
                    558: .el \{\
                    559: .       ds sV \\*(eR
                    560: .       nr cF \\n(.f
                    561: .       ie "\\*(iM"" .ds f1 \&\\*(sV
                    562: .       el .as f1 \&\\*(sV
                    563: .       nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                    564: .       ft \\n(cF
                    565: .\}
                    566: ..
                    567: .\"
                    568: .de Ev
                    569: .ie \\n(.$==0 \{\
                    570: .      tm Usage: .Ev ENVIRONMENT_VARIABLE(s) ... \\*(Pu
                    571: .      \}
                    572: .el \{\
                    573: .      ds sV \\*(eV
                    574: .      nr cF \\n(.f
                    575: .       ie "\\*(iM"" .ds f1 \&\\*(sV
                    576: .       el .as f1 \&\\*(sV
                    577: .       nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                    578: .      ft \\n(cF
                    579: .\}
                    580: ..
                    581: .\"
                    582: .\" Flag Name Macro
                    583: .\"
                    584: .de Fl
                    585: .ie \\n(.$==0 \{\
                    586: .       ie !"\\*(iM"" .as f1 \&\\*(fL\-\fP
                    587: .       el \&\\*(fL\-\fP
                    588: .\}
                    589: .el \{\
                    590: .       nr rZ 0
                    591: .       sW \\$1
                    592: .       if (\\n(sW==1&\\n(.$==1) .rZ \\$1
                    593: .       ds sV \\*(fL
                    594: .       nr cF \\n(.f
                    595: .       ie \\n(rZ \{\
                    596: .               ie "\\*(iM"" .ds f1 \&\\*(sV\-\f\\n(cF\\$1
                    597: .               el \&\\*(sV\-\f\\n(cF\\$1
                    598: .       \}
                    599: .      el \{\
                    600: .             ie "\\*(iM"" .ds f1 \&\\*(sV
                    601: .             el .as f1 \&\\*(sV
                    602: .             fB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                    603: .             ft \\n(cF
                    604: .      \}
                    605: .\}
                    606: ..
                    607: .\"    Interactive Commands Macro
                    608: .\"
                    609: .de Ic
                    610: .ie \\n(.$==0 \{\
                    611: .      tm Usage: .Ic Interactive Commands(s) ... \\*(Pu
                    612: .\}
                    613: .el \{\
                    614: .       ds sV \\*(iC
                    615: .       nr cF \\n(.f
                    616: .       ie "\\*(iM"" .ds f1 \&\\*(sV
                    617: .       el .as f1 \&\\*(sV
                    618: .       nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                    619: .       ft \\n(cF
                    620: .\}
                    621: ..
                    622: .\"
                    623: .\" Interactive Command Modifiers (flags)
                    624: .\"
                    625: .de Cm
                    626: .ie \\n(.$==0 \{\
                    627: .      tm Usage: .Cm Interactive Command Modifier(s) ... \\*(Pu
                    628: .\}
                    629: .el \{\
                    630: .       ds sV \\*(cM
                    631: .       nr cF \\n(.f
                    632: .       ie "\\*(iM"" .ds f1 \&\\*(sV
                    633: .       el .as f1 \&\\*(sV
                    634: .       nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                    635: .       ft \\n(cF
                    636: .\}
                    637: ..
                    638: .\"
                    639: .de Li
                    640: .ie \\n(.$==0 \{\
                    641: .       tm Usage: .Li literal ... \\*(Pu
                    642: .       \}
                    643: .el \{\
                    644: .       ds sV \\*(lI
                    645: .       nr cF \\n(.f
                    646: .       ie "\\*(iM"" .ds f1 \&\\*(sV
                    647: .       el .as f1 \&\\*(sV
                    648: .       nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                    649: .       ft \\n(cF
                    650: .\}
                    651: ..
                    652: .\" If in nroff or any other case where the default font
                    653: .\" is constant width, and literal means zilch, single quote instead.
                    654: .ie n \{\
                    655: .de Ql
                    656: .      ie \\n(.$==0 \{\
                    657: .             tm Usage: .Ql literal ... \\*(Pu
                    658: .       \}
                    659: .      el \{\
                    660: .              Sq \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                    661: .      \}
                    662: ..
                    663: .\}
                    664: .el \{\
                    665: .de Ql
                    666: .      ie \\n(.$==0 \{\
                    667: .             tm Usage: .Ql literal ... \\*(Pu
                    668: .       \}
                    669: .      el \{\
                    670: .              Li \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                    671: .      \}
                    672: ..
                    673: .\}
                    674: .\"
                    675: .de Nm
                    676: .ie \\n(.$==0 \{\
                    677: .      if "\\*(n1"" .tm Usage: .Nm Name(s) ... \\*(Pu
                    678: .      ie !"\\*(iM"" .as f1 \&\\*(nM\\*(n1\\$1\fP
                    679: .      el \&\\*(nM\\*(n1\\$1\fP
                    680: .\}
                    681: .el \{\
                    682: .      ds sV \\*(nM
                    683: .      nr cF \\n(.f
                    684: .      if \\n(nS \{\
                    685: .              rs
                    686: .              in -\\n(iSu
                    687: .              ie \\n(nS>1 .br
                    688: .              el \{\
                    689: .                      sW \\$1
                    690: .                      nr iS ((\\n(sW+1)*\\n(fW)u
                    691: .              \}
                    692: .              in +\\n(iSu
                    693: .              ti -\\n(iSu
                    694: .              nr nS \\n(nS+1
                    695: .      \}
                    696: .      if "\\*(n1"" .ds n1 \\$1
                    697: .      ie "\\*(iM"" .ds f1 \&\\*(sV
                    698: .      el .as f1 \&\\*(sV
                    699: .      nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                    700: .      ft \\n(cF
                    701: .\}
                    702: ..
                    703: .\"
                    704: .de Pa
                    705: .ie \\n(.$==0 \{\
                    706: \&\\*(pA~\fP
                    707: .\}
                    708: .el \{\
                    709: .       ds sV \\*(pA
                    710: .       nr cF \\n(.f
                    711: .       ie "\\*(iM"" .ds f1 \&\\*(sV
                    712: .       el .as f1 \&\\*(sV
                    713: .       nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                    714: .       ft \\n(cF
                    715: .\}
                    716: ..
                    717: .\"
                    718: .de Sy
                    719: .ie \\n(.$==0 \{\
                    720: .       tm Usage: .Sy Symbolic Text ... \\*(Pu
                    721: .       \}
                    722: .el \{\
                    723: .       ds sV \\*(sY
                    724: .       nr cF \\n(.f
                    725: .       ie "\\*(iM"" .ds f1 \&\\*(sV
                    726: .       el .as f1 \&\\*(sV
                    727: .       nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                    728: .       ft \\n(cF
                    729: .\}
                    730: ..
                    731: .\"
                    732: .de Ms
                    733: .ie \\n(.$==0 \{\
                    734: .       tm Usage: .Ms Math Symbol ... \\*(Pu
                    735: .       \}
                    736: .el \{\
                    737: .       ds sV \\*(sY
                    738: .       nr cF \\n(.f
                    739: .       ie "\\*(iM"" .ds f1 \&\\*(sV
                    740: .       el .as f1 \&\\*(sV
                    741: .       nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                    742: .       ft \\n(cF
                    743: .\}
                    744: ..
                    745: .\"
                    746: .de Va
                    747: .ie \\n(.$==0 \{\
                    748: .       tm Usage: .Va variable_name(s) ... \\*(Pu
                    749: .\}
                    750: .el \{\
                    751: .       ds sV \\*(vA
                    752: .       nr cF \\n(.f
                    753: .       ie "\\*(iM"" .ds f1 \&\\*(sV
                    754: .       el .as f1 \&\\*(sV
                    755: .       nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                    756: .       ft \\n(cF
                    757: .\}
                    758: ..
                    759: .\"
                    760: .de nB
                    761: .hy 0
                    762: .if \\n(.$==0 .tm Usage error: called with empty arguments (empty quotes)?
                    763: .ie \\n(.$>1 \{\
                    764: .      rZ \\$1
                    765: .      ie \\n(rZ .as f1 \&\f\\n(cF\\$1\fP
                    766: .      el .as f1 \&\\$1
                    767: .      rZ \\$2
                    768: .      if !\\n(rZ \{\
                    769: .              ie !"\\*(iM""\{\
                    770: .\"                    I surrender
                    771: .                      if "\\*(iM"Tp" .as f1 \&\ \&
                    772: .                      if "\\*(iM"Dp" .as f1 \&\ \&
                    773: .                      if "\\*(iM"Op" .as f1 \&\ \&
                    774: .                      if "\\*(iM"Cx" .as f1 \&\ \&
                    775: .                      if "\\*(iM"Dq" .as f1 \& \&
                    776: .                      if "\\*(iM"Sq" .as f1 \& \&
                    777: .                      if "\\*(iM"Pq" .as f1 \& \&
                    778: .                      if "\\*(iM"Aq" .as f1 \& \&
                    779: .              \}
                    780: .              el .as f1 \& \&
                    781: .      \}
                    782: .      nB \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                    783: .\}
                    784: .el \{\
                    785: .      rZ \\$1
                    786: .      ie \\n(rZ .as f1 \&\f\\n(cF\\$1
                    787: .      el .as f1 \&\\$1\f\\n(cF
                    788: .      if "\\*(iM"" \{\&\\*(f1
                    789: .              ds f1
                    790: .      \}
                    791: .      hy
                    792: .\}
                    793: ..
                    794: .de fB
                    795: .hy 0
                    796: .if \\n(.$==0 .tm Usage error: called with empty arguments (empty quotes)?
                    797: .ie \\n(.$>1 \{\
                    798: .      rZ \\$1
                    799: .      ie \\n(rZ .as f1 \&\f\\n(cF\\$1\fP
                    800: .      el \{\
                    801: .              ie "\\$1"-" .as f1 \&\-\-
                    802: .              el .as f1 \&\-\\$1
                    803: .      \}
                    804: .      rZ \\$2
                    805: .      if !\\n(rZ \{\
                    806: .              ie !"\\*(iM""\{\
                    807: .\"                    I surrender
                    808: .                      if "\\*(iM"Tp" .as f1 \&\ \&
                    809: .                      if "\\*(iM"Dp" .as f1 \&\ \&
                    810: .                      if "\\*(iM"Op" .as f1 \&\ \&
                    811: .                      if "\\*(iM"Cx" .as f1 \&\ \&
                    812: .                      if "\\*(iM"Dq" .as f1 \& \&
                    813: .                      if "\\*(iM"Sq" .as f1 \& \&
                    814: .                      if "\\*(iM"Pq" .as f1 \& \&
                    815: .                      if "\\*(iM"Aq" .as f1 \& \&
                    816: .              \}
                    817: .              el .as f1 \& \&
                    818: .      \}
                    819: .      fB \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                    820: .\}
                    821: .el \{\
                    822: .      rZ \\$1
                    823: .      ie \\n(rZ .as f1 \&\f\\n(cF\\$1
                    824: .      el \{\
                    825: .              ie "\\$1"-" .as f1 \&\-\-\f\\n(cF
                    826: .              el .as f1 \&\-\\$1\f\\n(cF
                    827: .      \}
                    828: .      if "\\*(iM"" \{\&\\*(f1
                    829: .              ds f1
                    830: .      \}
                    831: .      hy
                    832: .\}
                    833: ..
                    834: .\"
                    835: .\" Single quoted Items
                    836: .\" eF, sB g[0-9] and f2
                    837: .de Sq
                    838: .nr eF 0
                    839: .ie \\n(.$==0 \{\
                    840: .       ie "\\*(iM"" \&\\*(sL\&\\*sR
                    841: .       el .as f1 \&\\*(sL\&\\*(sR
                    842: .\}
                    843: .el \{\
                    844: .       ie "\\*(iM"" \{\
                    845: .              ds f1 \&\\*(sL
                    846: .              ds iM Sq
                    847: .      \}
                    848: .       el .as f1 \&\\*(sL
                    849: .       sB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                    850: .      ie \\n(eF>0 .\\*(g1 \\*(g2 \\*(g3 \\*(g4 \\*(g5 \\*(g6 \\*(g7 \\*(g8
                    851: .      el .as f1 \\*(g0
                    852: .      as f1 \\*(sR
                    853: .      if !"\\*(f2"" .as f1 \\*(f2
                    854: .      if "\\*(iM"Sq" \{\
                    855: \&\\*(f1
                    856: .              ds f1
                    857: .              ds iM
                    858: .      \}
                    859: .      ds f2
                    860: .      rm  g0 g1 g2 g3 g4 g5 g6 g7 g8 g9
                    861: .      nr eF 0
                    862: .\}
                    863: ..
                    864: .\"
                    865: .\" Double quoted Items
                    866: .de Dq
                    867: .nr Ef 0
                    868: .ie \\n(.$==0 \{\
                    869: .       ie "\\*(iM"" \&\\*(Lq\&\\*(Rq
                    870: .       el .as f1 \&\\*(Lq\&\\*(Rq
                    871: .\}
                    872: .el \{\
                    873: .       ie "\\*(iM"" \{\
                    874: .               ds f1 \&\\*(Lq
                    875: .               ds iM Dq
                    876: .       \}
                    877: .       el .as f1 \&\\*(Lq
                    878: .       Sb \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                    879: .       ie \\n(Ef>0 .\\*(k1 \\*(k2 \\*(k3 \\*(k4 \\*(k5 \\*(k6 \\*(k7 \\*(k8
                    880: .       el .as f1 \\*(k0
                    881: .       as f1 \\*(Rq
                    882: .       if !"\\*(f4"" .as f1 \\*(f4
                    883: .       if "\\*(iM"Dq" \{\
                    884: \&\\*(f1
                    885: .               ds f1
                    886: .               ds iM
                    887: .       \}
                    888: .       ds f4
                    889: .       rm  k0 k1 k2 k3 k4 k5 k6 k7 k8 k9
                    890: .       nr Ef 0
                    891: .\}
                    892: ..
                    893: .\"
                    894: .\" Parenthesis quoted Items
                    895: .de Pq
                    896: .nr pQ 0
                    897: .ie \\n(.$==0 \{\
                    898: .       ie "\\*(iM"" \&(\&)
                    899: .       el .as f1 \&(\&)
                    900: .\}
                    901: .el \{\
                    902: .       ie "\\*(iM"" \{\
                    903: .               ds f1 \&(
                    904: .               ds iM Pq
                    905: .       \}
                    906: .       el .as f1 \&(
                    907: .       pB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                    908: .       ie \\n(pQ>0 .\\*(y1 \\*(y2 \\*(y3 \\*(y4 \\*(y5 \\*(y6 \\*(y7 \\*(y8
                    909: .       el .as f1 \\*(y0
                    910: .       as f1 \&)
                    911: .       if !"\\*(f3"" .as f1 \\*(f3
                    912: .       if "\\*(iM"Pq" \{\
                    913: \&\\*(f1
                    914: .               ds f1
                    915: .               ds iM
                    916: .       \}
                    917: .       ds f3
                    918: .       rm  y0 y1 y2 y3 y4 y5 y6 y7 y8 y9
                    919: .       nr pQ 0
                    920: .\}
                    921: ..
                    922: .\" eF, sB g[0-9] and f2
                    923: .de sB
                    924: .hy 0
                    925: .ie \\n(.$==0 .tm Sick Logic: macro sB
                    926: .el \{\
                    927: .      ie \\n(eF>=1 .nr eF \\n(eF+1
                    928: .      el \{\
                    929: .              mN \\$1
                    930: .              if \\n(mN .nr eF \\n(eF+1
                    931: .      \}
                    932: .       rZ \\$1
                    933: .       ie \\n(rZ .as f2 \\$1
                    934: .       el \{\
                    935: .              ie \\n(eF<1 .as g\\n(eF \\$1
                    936: .              el .as g\\n(eF \\$1
                    937: .      \}
                    938: .       if \\n(.$>1 \{\
                    939: .              rZ \\$2
                    940: .              if \\n(rZ==0 \{\
                    941: .                      if \\n(eF<1 \{\
                    942: .                              as g\\n(eF \& \&
                    943: .                      \}
                    944: .              \}
                    945: .              sB \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                    946: .      \}
                    947: .\}
                    948: ..
                    949: .de Sb
                    950: .hy 0
                    951: .ie \\n(.$==0 .tm Sick Logic: macro Sb
                    952: .el \{\
                    953: .       ie \\n(Ef>=1 .nr Ef \\n(Ef+1
                    954: .      el \{\
                    955: .              mN \\$1
                    956: .              if \\n(mN .nr Ef \\n(Ef+1
                    957: .      \}
                    958: .       rZ \\$1
                    959: .       ie \\n(rZ .as f4 \\$1
                    960: .       el \{\
                    961: .               ie \\n(Ef<1 .as k\\n(Ef \\$1
                    962: .               el .as k\\n(Ef \\$1
                    963: .       \}
                    964: .       if \\n(.$>1 \{\
                    965: .               rZ \\$2
                    966: .               if \\n(rZ==0 \{\
                    967: .                       if \\n(Ef<1 \{\
                    968: .                               as k\\n(Ef \& \&
                    969: .                       \}
                    970: .               \}
                    971: .               Sb \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                    972: .       \}
                    973: .\}
                    974: ..
                    975: .de pB
                    976: .hy 0
                    977: .ie \\n(.$==0 .tm Sick Logic: macro pB
                    978: .el \{\
                    979: .       ie \\n(pQ>=1 .nr pQ \\n(pQ+1
                    980: .       el \{\
                    981: .               mN \\$1
                    982: .               if \\n(mN .nr pQ \\n(pQ+1
                    983: .       \}
                    984: .       rZ \\$1
                    985: .       ie \\n(rZ .as f3 \\$1
                    986: .       el \{\
                    987: .               ie \\n(pQ<1 .as y\\n(pQ \\$1
                    988: .               el .as y\\n(pQ \\$1
                    989: .       \}
                    990: .       if \\n(.$>1 \{\
                    991: .               rZ \\$2
                    992: .               if \\n(rZ==0 \{\
                    993: .                       if \\n(pQ<1 \{\
                    994: .                               as y\\n(pQ \& \&
                    995: .                       \}
                    996: .               \}
                    997: .               pB \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                    998: .       \}
                    999: .\}
                   1000: ..
                   1001: .de aQ
                   1002: .hy 0
                   1003: .ie \\n(.$==0 .tm Bad Syntax: .Aq
                   1004: .el \{\
                   1005: .       ie \\n(aQ>=1 .nr aQ \\n(aQ+1
                   1006: .       el \{\
                   1007: .               mN \\$1
                   1008: .               if \\n(mN .nr aQ \\n(aQ+1
                   1009: .       \}
                   1010: .       rZ \\$1
                   1011: .       ie \\n(rZ .as aZ \\$1
                   1012: .       el \{\
                   1013: .               ie \\n(aQ<1 .as a\\n(aQ \\$1
                   1014: .               el .as a\\n(aQ \\$1
                   1015: .       \}
                   1016: .       if \\n(.$>1 \{\
                   1017: .               rZ \\$2
                   1018: .               if \\n(rZ==0 \{\
                   1019: .                       if \\n(aQ<1 \{\
                   1020: .                               as a\\n(aQ \& \&
                   1021: .                       \}
                   1022: .               \}
                   1023: .               aQ \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                   1024: .       \}
                   1025: .\}
                   1026: ..
                   1027: .\" Angle Bracket Quoted Items
                   1028: .de Aq
                   1029: .nr aQ 0
                   1030: .ie \\n(.$==0 \{\
                   1031: .       ie "\\*(iM"" \&<\&>
                   1032: .       el .as f1 \&<\&>
                   1033: .\}
                   1034: .el \{\
                   1035: .       ie "\\*(iM"" \{\
                   1036: .               ds f1 \&<
                   1037: .               ds iM Aq
                   1038: .       \}
                   1039: .       el .as f1 \&<
                   1040: .       aQ \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
                   1041: .       ie \\n(aQ>0 .\\*(a1 \\*(a2 \\*(a3 \\*(a4 \\*(a5 \\*(a6 \\*(a7 \\*(a8
                   1042: .       el .as f1 \\*(a0
                   1043: .       as f1 \&>
                   1044: .       if !"\\*(aZ"" .as f1 \\*(aZ
                   1045: .       if "\\*(iM"Aq" \{\
                   1046: \&\\*(f1
                   1047: .               ds f1
                   1048: .               ds iM
                   1049: .       \}
                   1050: .       ds aZ
                   1051: .       rm  a0 a1 a2 a3 a4 a5 a6 a7 a8
                   1052: .       nr aQ 0
                   1053: .\}
                   1054: ..
                   1055: .\" macro Name test, return macro register value if true
                   1056: .de mN
                   1057: .nr mN 0
                   1058: .sW \\$1
                   1059: .if \\n(sW==2 \{\
                   1060: .      if \\n(\\$1 .nr mN \\n(\\$1
                   1061: .\}
                   1062: ..
                   1063: .\" Punctuation test (using z registers), return 1 if true
                   1064: .de rZ
                   1065: .nr rZ 0
                   1066: .sW \\$1
                   1067: .if \\n(sW==1 \{\
                   1068: .      if \\n(z\\$1==1 \{\
                   1069: .              nr rZ 1
                   1070: .      \}
                   1071: .\}
                   1072: ..
                   1073: .\"
                   1074: .\" sW returns number of characters in a string
                   1075: .if t \{\
                   1076: .nr fW \w'\fC,'
                   1077: .de sW
                   1078: .nr sW \w'\fC\\$1'
                   1079: .\}
                   1080: .if n \{\
                   1081: .nr fW \w'0'
                   1082: .de sW
                   1083: .nr sW \w'\\$1'
                   1084: .\}
                   1085: .ie \\n(sW>=\\n(fW \{\
                   1086: .      ie \\n(sW%\\n(fW .nr sW (\\n(sW/\\n(fW)+1
                   1087: .      el .nr sW \\n(sW/\\n(fW
                   1088: .\}
                   1089: .el .nr sW 0
                   1090: ..
                   1091: .\"    Option Expression -
                   1092: .\"    TODO - add line overflow check (right!)
                   1093: .nr eP 0
                   1094: .ds e1
                   1095: .nr oE 0
                   1096: .nr hP 0
                   1097: .ds hP
                   1098: .nr Ep 0
                   1099: .de Op
                   1100: .hy 0
                   1101: .if "\\*(iM"" \{\
                   1102: .      ds iM Op
                   1103: .       ds f1 \&
                   1104: .\}
                   1105: .as f1 \&\\*(lB
                   1106: .\" .tm Op:  \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                   1107: .dO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                   1108: .ie !"\\$1"Cx" .oE
                   1109: .el .nr oE \\n(oE+1
                   1110: ..
                   1111: .\"
                   1112: .\" just for mike, with every bite of garlic in mind (oops, i mean burp).
                   1113: .\" dO: go dOwn an argument vector and test each argument to see if
                   1114: .\" a macro name or punctuation. stash in respective place along
                   1115: .\" with its arguments.
                   1116: .nr oO 0
                   1117: .nr oP 0
                   1118: .nr aO 0
                   1119: .de dO
                   1120: .mN \\$1
                   1121: .ie \\n(mN \{\
                   1122: .       if \\n(oP  \{\
                   1123: .               if \\n(hP \{\
                   1124: .                       nr oZ 1
                   1125: .                       oZ
                   1126: .                       Oz
                   1127: .               \}
                   1128: .               if \\n(e1==1 \{\
                   1129: .\\*(e1 \\*(e2 \\*(e3 \\*(e4 \\*(e5 \\*(e6 \\*(e7 \\*(e8 \\*(e9
                   1130: .               \}
                   1131: .               uO
                   1132: .              if !(\\n(oO:\\n(aO) .as f1 \& \&
                   1133: .      \}
                   1134: .       ie "\\$1"Op" \{\
                   1135: .               as f1 \&\\*(lB
                   1136: .               nr aO \\n(aO+1
                   1137: .       \}
                   1138: .      el \{\
                   1139: .               nr eP \\n(eP+1
                   1140: .               ds e\\n(eP \\$1
                   1141: .               nr e\\n(eP 1
                   1142: .       \}
                   1143: .\}
                   1144: .el \{\
                   1145: .\" .tm dO: $1: \\$1: eP \\n(eP e[\\n(eP]: \\*(e\\n(ePEE
                   1146: .      rZ \\$1
                   1147: .      ie \\n(rZ \{\
                   1148: .\" .tm dO:rZ: $1: \\$1: eP \\n(eP e[\\n(eP]: \\*(e\\n(eP
                   1149: .              nr hP \\n(hP+1
                   1150: .              ds h\\n(hP \\$1
                   1151: .      \}
                   1152: .      el \{\
                   1153: .\" .tm dO:word $1: \\$1: eP \\n(eP e[\\n(eP]: \\*(e\\n(ePEE
                   1154: .              if \\n(eP==0:\\n(e\\n(eP==1 .nr eP \\n(eP+1
                   1155: .              if \\n(eZ .as e\\n(eP \& \&
                   1156: .              as e\\n(eP \&\\$1
                   1157: .\" .          ds e\\n(eP \&\\$1
                   1158: .              nr eZ \\n(eZ+1
                   1159: .      \}
                   1160: .\}
                   1161: .nr oP 1
                   1162: .ie \\n(.$>1 \{\
                   1163: .      dO \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                   1164: .\}
                   1165: .el \{\
                   1166: .     ie \\n(e1 \{\
                   1167: .\\*(e1 \\*(e2 \\*(e3 \\*(e4 \\*(e5 \\*(e6 \\*(e7 \\*(e8 \\*(e9
                   1168: .      \}
                   1169: .     el \{\
                   1170: .      as f1 \\*(e1
                   1171: .      \}
                   1172: .\}
                   1173: ..
                   1174: .\" handle old style arguments such as the arg -Idir
                   1175: .\" in adb, .Oo is a toggle.
                   1176: .de Oo
                   1177: .ie \\n(oO .nr oO 0
                   1178: .el .nr oO 1
                   1179: ..
                   1180: .\" stash punctuation
                   1181: .de oZ
                   1182: .if \\n(hP>=\\n(oZ \{\
                   1183: .      nr eP \\n(eP+1
                   1184: .      ds e\\n(eP \\*(h\\n(oZ
                   1185: .      nr oZ \\n(oZ+1
                   1186: .      oZ
                   1187: .\}
                   1188: ..
                   1189: .\" clean up punctuation vector
                   1190: .de Oz
                   1191: .if \\n(hP>0 \{\
                   1192: .      rm h\\n(hP
                   1193: .      nr hP \\n(hP-1
                   1194: .      Oz
                   1195: .\}
                   1196: ..
                   1197: .\" uO: go back up created vector cleaning it up along the way
                   1198: .de uO
                   1199: .if \\n(eP>0 \{\
                   1200: .      rm e\\n(eP
                   1201: .      rr e\\n(eP
                   1202: .      nr eP \\n(eP-1
                   1203: .      nr oP 0
                   1204: .      nr eZ 0
                   1205: .      uO
                   1206: .\}
                   1207: ..
                   1208: .\" option end
                   1209: .de oE
                   1210: .uO
                   1211: .ie \\n(hP \{\
                   1212: .       as f1 \\*(rB\\*(h1\\*(h2\\*(h3
                   1213: .      Oz
                   1214: .      nr oZ 0
                   1215: .\}
                   1216: .el \{\
                   1217: .      as f1 \\*(rB
                   1218: .\}
                   1219: .ie "\\*(iM"Op" \{\
                   1220: .      if \\n(aO .aO
                   1221: .if t \{\
                   1222: .      if (\\n(.lu-\\n(.ku-\\n(.ou-(2*\\n(fWu))<\w'\fC\\*(f1'u .br
                   1223: .\}
                   1224: .if n \{\
                   1225: .      nr aa \w'\\*(f1'u
                   1226: .\" .  nr qq \\n(.lu-\\n(.ku-\\n(.ou
                   1227: .\" \&aa == \\n(aa, f1==\\*(f1, qq==\\n(qq
                   1228: .      if (\\n(.lu-\\n(.ku-\\n(.ou-\\n(aau)<=(8*\\n(fWu) .br
                   1229: .\}
                   1230: \&\\*(f1
                   1231: .      ds iM
                   1232: .      ds f1
                   1233: .      hy
                   1234: .\}
                   1235: .el .nr oE \\n(oE-1
                   1236: ..
                   1237: .de aO
                   1238: .as f1 \\*(rB
                   1239: .nr aO \\n(aO-1
                   1240: .if \\n(aO >0 .aO
                   1241: ..
                   1242: .\"
                   1243: .de Xr
                   1244: .if \\n(.$<=1 \{\
                   1245: .      ie \\n(.$==1 \{\
                   1246: .              if !"\\*(iM"" .as f1 \&\\*(xR\\$1\fP
                   1247: .              if "\\*(iM"" \&\\*(xR\\$1\fP
                   1248: .      \}
                   1249: .      el .tm Xr Usage: .Xr manpage_name [section#] \\*(Pu
                   1250: .\}
                   1251: .if \\n(.$==2 \{\
                   1252: .      rZ \\$2
                   1253: .      ie "\\*(iM"" \{\
                   1254: .              ie \\n(rZ \&\\*(xR\\$1\fP\\$2
                   1255: .              el \&\\*(xR\\$1\fP(\\$2)
                   1256: .      \}
                   1257: .      el \{\
                   1258: .              ie \\n(rZ .as f1 \&\\*(xR\\$1\fP\\$2
                   1259: .              el .as f1 \&\\*(xR\\$1\fP(\\$2)
                   1260: .      \}
                   1261: .\}
                   1262: .if \\n(.$>=3 \{\
                   1263: .      rZ \\$2
                   1264: .      ie \\n(rZ \{\
                   1265: .              ie !"\\*(iM"" .as f1 \&\\*(xR\\$1\fP\\$2\\$3\\$4\\$5\\$6\\$7\\$8
                   1266: .              el \&\\*(xR\\$1\fP\\$2\\$3\\$4\\$5\\$6\\$7\\$8
                   1267: .      \}
                   1268: .      el \{\
                   1269: .              rZ \\$3
                   1270: .              ie \\n(rZ \{\
                   1271: .                      if !"\\*(iM"" \{\
                   1272: .                           as f1 \&\\*(xR\\$1\fP(\\$2)\\$3\\$4\\$5\\$6\\$7\\$8
                   1273: .                      \}
                   1274: .                      if "\\*(iM"" \{\
                   1275: \&\\*(xR\\$1\fP(\\$2)\\$3\\$4\\$5\\$6\\$7\\$8
                   1276: .                      \}
                   1277: .              \}
                   1278: .              el \{\
                   1279: .                      tm rZ = \\n(rZ  the arg is \\$3
                   1280: .                      tm Xr-XX Usage: .Xr manpage_name [section#] \\*(Pu
                   1281: .              \}
                   1282: .      \}
                   1283: .\}
                   1284: ..
                   1285: .\"
                   1286: .\"
                   1287: .de Ex
                   1288: .tm Ex defunct, Use .Dl: \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                   1289: ..
                   1290: .\" Display (one) Line of text.
                   1291: .de Dl
                   1292: .ie "\\*(iM"" \{\
                   1293: '      ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i
                   1294: .      in \\n(.iu+\\n(Dsu
                   1295: .      mN \\$1
                   1296: .      ie \\n(mN .\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                   1297: .      el \{\
                   1298: .              nr cF \\n(.f
                   1299: .\"     Literal font is none specified
                   1300: \&\\*(lI\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                   1301: .              ft \\n(cF
                   1302: .      \}
                   1303: .      in \\n(.iu-\\n(Dsu
                   1304: .\}
                   1305: .el \{\
                   1306: .      mN \\$1
                   1307: .      ie \\n(mN .\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
                   1308: .      el \{\
                   1309: .              nr cF \\n(.f
                   1310: .              ds f1 \&\\*(lI\\&\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
                   1311: .              as f1 \&\f\\n(cF
                   1312: .      \}
                   1313: .\}
                   1314: ..
                   1315: .\"
                   1316: .\"
                   1317: .\" user set Tagged Paragraph Width (used in both Dp and Tp)
                   1318: .de Tw
                   1319: .ie \\n(.$==0 \{\
                   1320: .      nr aa 0
                   1321: .\}
                   1322: .el \{\
                   1323: .      mN \\$1
                   1324: .      ie \\n(sW>2 \{\
                   1325: .              nr tW (\\n(sW+3)*\\n(fWu)
                   1326: .      \}
                   1327: .      el \{\
                   1328: .              ie \\n(mN .nr tW \\n(mN
                   1329: .              el .nr tW \\$1
                   1330: .      \}
                   1331: .      nr tF 1
                   1332: .\}
                   1333: ..
                   1334: .\"
                   1335: .de Dw
                   1336: .Tw \\$1
                   1337: ..
                   1338: .\"
                   1339: .de Di
                   1340: .ie \\n(.$==0 \{\
                   1341: .      nr tI \\n(Dsu
                   1342: .\}
                   1343: .el \{\
                   1344: .      sW \\$1
                   1345: .      if \\n(sW>=2 \{\
                   1346: .              nr tI \\$1u
                   1347: .      \}
                   1348: .      if \\n(sW<2 \{\
                   1349: .              if "\\$1"L" \{\
                   1350: .                      nr tI 0
                   1351: .              \}
                   1352: .      \}
                   1353: .\}
                   1354: ..
                   1355: .\" tagged paragraph
                   1356: .\" initialize baby stack variables
                   1357: .nr np 0
                   1358: .nr p1 0
                   1359: .ds s\n(np
                   1360: .\"
                   1361: .de Tp
                   1362: .ie "\\$1"" .pE p s np
                   1363: .el \{\
                   1364: .      ds iM Tp
                   1365: .      mN \\$1
                   1366: .      ie \\n(tF \{\
                   1367: .              ds tC Tw
                   1368: .              nr tC 1
                   1369: .              nr tF 0
                   1370: .      \}
                   1371: .      el \{\
                   1372: .              if !"Tw"\\*(s\\n(np" \{\
                   1373: .                      ie \\n(mN \{\
                   1374: .                              ds tC \\$1
                   1375: .                              nr tW \\n(mN
                   1376: .                      \}
                   1377: .                      el \{\
                   1378: .                              ds tC Tx
                   1379: .                              nr tW \\n(Tx
                   1380: .                      \}
                   1381: .                      if !"\\*(tC"\\*(s\\n(np" .nr tC 1
                   1382: .              \}
                   1383: .      \}
                   1384: .      sp \\n(vVu
                   1385: .      if !\\n(cR .ne 2
                   1386: .      if \\n(tC \{\
                   1387: .              nr np \\n(np+1
                   1388: .              nr p\\n(np \\n(tW
                   1389: .              ds s\\n(np \\*(tC
                   1390: .              nr tC 0
                   1391: .              ds tC
                   1392: .              in \\n(.iu+\\n(p\\n(npu
                   1393: .      \}
                   1394: .      ie \\n(mN \{\
                   1395: .              ds f1
                   1396: .              \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                   1397: .              if !"\\$1"Cx" .pT st p np
                   1398: .      \}
                   1399: .      el \{\
                   1400: .              br
                   1401: .              ev 1
                   1402: .              fi
                   1403: .              di Td
                   1404: \&\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                   1405: .              br
                   1406: .              di
                   1407: .              ev
                   1408: .              na
                   1409: .              ds tD \\*(Td\\
                   1410: .              pT di p np
                   1411: .      \}
                   1412: .\}
                   1413: ..
                   1414: .\"
                   1415: .\"
                   1416: .\" Complex Expression Macro
                   1417: .\"
                   1418: .\"     TODO: add length across line boundary check (like Li)
                   1419: .de Cx
                   1420: .hy 0
                   1421: .ie \\n(.$==0 \{\
                   1422: .      if "\\*(iM"Cx" \{\
                   1423: .              ds iM
                   1424: .              if \\n(oE .oE
                   1425: \&\\*(f1
                   1426: .              ds f1
                   1427: .      \}
                   1428: .      if "\\*(iM"Tp" .pT st p np
                   1429: .      if "\\*(iM"Dp" .pT st q mp
                   1430: .\}
                   1431: .el \{\
                   1432: .      if "\\*(iM"" \{\
                   1433: .              ds iM Cx
                   1434: .              ds f1 \&
                   1435: .      \}
                   1436: .      mN \\$1
                   1437: .\" Here are the args: `\\$1'  `\\$2'  `\\$3'  `\\$4'
                   1438: .      ie \\n(mN .\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                   1439: .      el \{\
                   1440: .              as f1 \&\\$1
                   1441: .              if \\n(.$>1 .Cx \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                   1442: .      \}
                   1443: .\}
                   1444: ..
                   1445: .\" Prefix string in default font to content specified string
                   1446: .de Pf
                   1447: .Cx \\$1
                   1448: .\\$2 \\$3 \\$4 \\$5
                   1449: .Cx
                   1450: ..
                   1451: .\" Suffix string in default font to content specified string
                   1452: .de Sf
                   1453: .Cx \\$1 \\$2
                   1454: .Cx \\$3
                   1455: .Cx
                   1456: ..
                   1457: .\" Simple Option Begin
                   1458: .de Ob
                   1459: .hy 0
                   1460: .ie "\\*(iM"" \{\
                   1461: .      ev 2
                   1462: .      fi
                   1463: .      di oB
                   1464: .\}
                   1465: .el \{\
                   1466: .tm shouldn't be here
                   1467: .      as f1 \&[
                   1468: .      mN \\$1
                   1469: .      ie \\n(mN .\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                   1470: .      el \{\
                   1471: .              as f1 \&\\$1
                   1472: .              if \\n(.$>1 .Oc \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                   1473: .      \}
                   1474: .\}
                   1475: ..
                   1476: .de Oc
                   1477: .as f1 \&\\$1
                   1478: .if \\n(.$>1 .Oc \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                   1479: ..
                   1480: .de Oe
                   1481: .hy 0
                   1482: .ie "\\*(iM"" \{\
                   1483: .      br
                   1484: .      di
                   1485: .      ev
                   1486: .      ds bO \\*(oB\\
                   1487: \&[\\*(bO\&]
                   1488: .\}
                   1489: .el \{\
                   1490: .      as f1 \&]
                   1491: .\}
                   1492: ..
                   1493: .\" White space for Cx
                   1494: .de Ws
                   1495: .Cx \&\ \&
                   1496: ..
                   1497: .\" tagged paragraph
                   1498: .\" initialize baby stack variables
                   1499: .nr mp 0
                   1500: .nr q1 0
                   1501: .ds r\n(np
                   1502: .\"
                   1503: .\" Complex Dp tag
                   1504: .de Dc
                   1505: .Dp Cx \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
                   1506: ..
                   1507: .\" Complex Tp tag
                   1508: .de Tc
                   1509: .Tp Cx \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
                   1510: ..
                   1511: .\" Tag with a flag and an argument with a space
                   1512: .de Ta
                   1513: .if "\\$2"" \{\
                   1514: .      Tp Fl \\$1
                   1515: .\}
                   1516: .el \{\
                   1517: .      Tp Fl \\$1
                   1518: .      Cx \&\ \&
                   1519: .      Ar \\$2 \\$3
                   1520: .      Cx
                   1521: .\}
                   1522: ..
                   1523: .de Da
                   1524: .Dp Cx Fl \\$1
                   1525: .Ws
                   1526: .Ar \\$2 \\$3
                   1527: .Cx
                   1528: ..
                   1529: .de To
                   1530: .Tp Cx Fl \\$1
                   1531: .Ar \\$2 \\$3
                   1532: .Cx
                   1533: ..
                   1534: .de Do
                   1535: .Dp Cx Fl \\$1
                   1536: .Ar \\$2 \\$3
                   1537: .Cx
                   1538: ..
                   1539: .\" Blended tag toggle
                   1540: .de Bt
                   1541: .ie \\n(tP==0 .nr tP 1
                   1542: .el .nr tP 0
                   1543: ..
                   1544: .\" Bullet paragraph
                   1545: .de Bu
                   1546: .Tp Sy \&\(bu
                   1547: ..
                   1548: .\" Display tagged paragraph
                   1549: .de Dp
                   1550: .ie "\\$1"" \{\
                   1551: .      pE q r mp
                   1552: .      sp \\n(vVu
                   1553: .\}
                   1554: .el \{\
                   1555: .       ds iM Dp
                   1556: .       mN \\$1
                   1557: .       ie \\n(tF \{\
                   1558: .               ds tC Tw
                   1559: .               nr tC 1
                   1560: .               nr tF 0
                   1561: .       \}
                   1562: .       el \{\
                   1563: .               if !"Tw"\\*(r\\n(mp" \{\
                   1564: .                       ie \\n(mN \{\
                   1565: .                               ds tC \\$1
                   1566: .                               nr tW \\n(mN
                   1567: .                       \}
                   1568: .                       el \{\
                   1569: .                               ds tC Tx
                   1570: .                               nr tW \\n(Tx
                   1571: .                       \}
                   1572: .                       if !"\\*(tC"\\*(r\\n(mp" .nr tC 1
                   1573: .               \}
                   1574: .       \}
                   1575: .       if !\\n(cR .ne 2
                   1576: .       if \\n(tC \{\
                   1577: .               nr mp \\n(mp+1
                   1578: .               nr q\\n(mp \\n(tW
                   1579: .               ds r\\n(mp \\*(tC
                   1580: .               nr tC 0
                   1581: .               ds tC
                   1582: .              ie \\n(tIu==\\n(Dsu .nr i\\n(mp \\n(Dsu
                   1583: .              el \{\
                   1584: .                      nr i\\n(mp \\n(tIu
                   1585: .                      nr tI \\n(Dsu
                   1586: .              \}
                   1587: .                      in \\n(.iu+\\n(i\\n(mpu
                   1588: .              sp \\n(vVu
                   1589: .              in \\n(.iu+\\n(\\q\\n(mpu
                   1590: .       \}
                   1591: .       ie \\n(mN \{\
                   1592: .               \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                   1593: .               if !"\\$1"Cx" .pT st q mp
                   1594: .       \}
                   1595: .       el \{\
                   1596: .               br
                   1597: .               ev 1
                   1598: .               fi
                   1599: .               di Td
                   1600: \&\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                   1601: .               br
                   1602: .               di
                   1603: .               ev
                   1604: .               na
                   1605: .               ds tD \\*(Td\\
                   1606: .               pT di q mp
                   1607: .       \}
                   1608: .\}
                   1609: ..
                   1610: .\"
                   1611: .\" .pE number_stack string_stack counter
                   1612: .de pE
                   1613: .ie "\\$3"mp" \{\
                   1614: .      in \\n(.iu-(\\n(\\$1\\n(\\$3u)-(\\n(i\\n(mpu)
                   1615: .      rr i\\n(mp
                   1616: .\}
                   1617: .el .in \\n(.iu-\\n(\\$1\\n(\\$3u
                   1618: .\" .in \\n(.iu-\\n(\\$1\\n(\\$3u
                   1619: .if \\n(\\$3<=0 .tm Extraneous call .Tp or .Dp
                   1620: .rr \\$1\\n(\\$3
                   1621: .rm \\$2\\n(\\$3
                   1622: .nr \\$3 \\n(\\$3-1
                   1623: .ds iM
                   1624: ..
                   1625: .\"
                   1626: .\" .pT [st or di] number_stack counter
                   1627: .de pT
                   1628: .ie "\\$1"st" \{\
                   1629: .      nr bb \\n(\\$2\\n(\\$3u
                   1630: .      ti -\\n(bbu
                   1631: .      ie (\\n(\\$2\\n(\\$3u-2n)<=\w'\\*(f1'u \{\&\\*(f1\\*(tP
                   1632: .              if \\n(tP==0 .br
                   1633: .      \}
                   1634: .      el \\*(f1\h'|\\n(\\$2\\n(\\$3u'\c
                   1635: .\}
                   1636: .el \{\
                   1637: .       ti -\\n(\\$2\\n(\\$3u
                   1638: .      ie (\\n(\\$2\\n(\\$3u-2n)<=\\n(dlu \{\&\\*(tD\\*(tP
                   1639: .             if !\\n(tP .br
                   1640: .      \}
                   1641: .      el \\*(tD\h'|\\n(\\$2\\n(\\$3u-'\c
                   1642: .      if t 'ad
                   1643: .\}
                   1644: .      ds iM
                   1645: .      ds f1
                   1646: 'fi
                   1647: ..
                   1648: .\"
                   1649: .\" The new SH
                   1650: .\"
                   1651: .de Sh
                   1652: .\" set Sh state off, check for list state before calling indent (.In)
                   1653: .nr nS 0
                   1654: .nr sE 0
                   1655: .ie "\\$1"NAME" \{\
                   1656: .\"    name state on, housekeep (headers & footers)
                   1657: .      hK
                   1658: '      in 0
                   1659: .\}
                   1660: .el \{\
                   1661: .      if "\\$1"SYNOPSIS" .nr nS 1
                   1662: .      in 0
                   1663: .\}
                   1664: .pL
                   1665: 'sp
                   1666: .ns
                   1667: .ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i
                   1668: .if !\\n(cR .ne 3
                   1669: 'fi
                   1670: \&\fB\\$1 \|\\$2 \|\\$3 \|\\$4 \|\\$5 \|\\$6 \|\\$7 \|\\$8 \|\\$9
                   1671: \&\fP\&
                   1672: .in \\n(.iu+\\n(Tiu
                   1673: .if "\\$1"SEE" .nr sE 1
                   1674: .ns
                   1675: ..
                   1676: .\"
                   1677: .\" Nd minus sign for an en dash used in .Sh Name
                   1678: .de Nd
                   1679: \&\-\& \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                   1680: ..
                   1681: .de Ss
                   1682: .sp
                   1683: .ti -.25i
                   1684: \&\fB\\$1 \|\\$2 \|\\$3 \|\\$4 \|\\$5 \|\\$6 \|\\$7 \|\\$8 \|\\$9
                   1685: \&\fP\&
                   1686: .ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i
                   1687: .if !\\n(cR .ne 2
                   1688: .br
                   1689: ..
                   1690: .\"    .if "\\$1"Ss" .in \\n(.iu+\\n(sIu
                   1691: .\"..
                   1692: .\"
                   1693: .\"
                   1694: .\" Column Macro
                   1695: .\"
                   1696: .hy 0
                   1697: .de Cw
                   1698: .ie \\n(.$==0 \{\
                   1699: .      br
                   1700: .      in \\n(.iu-\\n(eWu
                   1701: .      ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i
                   1702: .\}
                   1703: .el \{\
                   1704: .      Pp
                   1705: .      if \\n(.$==1 \{\
                   1706: .              ta \w'\\$1    'u
                   1707: .              nr eW \w'\\$1    'u
                   1708: '              in \\n(.iu+\\n(eWu
                   1709: .      \}
                   1710: .      if \\n(.$==2 \{\
                   1711: .              ta \w'\\$1    'u +\w'\\$2    'u
                   1712: .              nr eW \w'\\$1    'u+\w'\\$2    'u
                   1713: '              in \\n(.iu+\\n(eWu
                   1714: .      \}
                   1715: .      if \\n(.$==3 \{\
                   1716: .              ta \w'\\$1    'u +\w'\\$2    'u +\w'\\$3    'u
                   1717: .              nr eW \w'\\$1    'u+\w'\\$2    'u+\w'\\$3    'u
                   1718: '              in \\n(.iu+\\n(eWu
                   1719: .      \}
                   1720: .      if \\n(.$==4 \{\
                   1721: .      ta \w'\\$1    'u +\w'\\$2    'u +\w'\\$3    'u +\w'\\$4    'u
                   1722: .      nr eW \w'\\$1    'u+\w'\\$2    'u+\w'\\$3    'u +\w'\\$4    'u
                   1723: '      in \\n(.iu+\\n(eWu
                   1724: .      \}
                   1725: .      if \\n(.$==5 \{\
                   1726: .ta \w'\\$1    'u +\w'\\$2    'u +\w'\\$3    'u +\w'\\$4    'u +\w'\\$5    'u
                   1727: .nr eW \w'\\$1    'u +\w'\\$2    'u +\w'\\$3    'u +\w'\\$4    'u +\w'\\$5    'u
                   1728: '      in \\n(.iu+\\n(eWu
                   1729: .      \}
                   1730: .\}
                   1731: ..
                   1732: .de Cl
                   1733: .ti -\\n(eWu
                   1734: .mN \\$1
                   1735: .ie \\n(mN .\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                   1736: .el \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                   1737: ..
                   1738: .nr dQ 0
                   1739: .de Ds
                   1740: .ie !"\\$1"" \{\
                   1741: .      mN d\\$1
                   1742: .      if \\n(mN \{\
                   1743: .              nr dQ \\n(dQ+1
                   1744: .              d\\$1
                   1745: .      \}
                   1746: .\}
                   1747: .el .br
                   1748: .nf
                   1749: ..
                   1750: .de Df
                   1751: .ie !"\\$1"" \{\
                   1752: .       mN d\\$1
                   1753: .       if \\n(mN \{\
                   1754: .               nr dQ \\n(dQ+1
                   1755: .               d\\$1
                   1756: .       \}
                   1757: .\}
                   1758: .el .br
                   1759: ..
                   1760: .de Dn
                   1761: \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                   1762: .nf
                   1763: ..
                   1764: .de dI
                   1765: .nr d\\n(dQ \\n(dIu
                   1766: .in \\n(.iu+\\n(dIu
                   1767: ..
                   1768: .de dC
                   1769: .nr d\\n(dQ (\\n(.l-\\n(.i)/4u
                   1770: .in \\n(.iu+\\n(d\\n(dQu
                   1771: ..
                   1772: .de dR
                   1773: .nr d\\n(dQ (\\n(.l/3)u
                   1774: .in \\n(.iu+\\n(d\\n(dQu
                   1775: ..
                   1776: .de dL
                   1777: .nr aa 0
                   1778: ..
                   1779: .de De
                   1780: .br
                   1781: .if \\n(d\\n(dQ \{\
                   1782: .      in \\n(.iu-\\n(d\\n(dQu
                   1783: .      rr d\\n(dQ
                   1784: .      nr dQ \\n(dQ-1
                   1785: .\}
                   1786: .fi
                   1787: ..
                   1788: .\"
                   1789: .de Fn
                   1790: .ie \\n(.$==0 \{\
                   1791: .      tm Usage: .Fn function_name function_arg(s) ... \\*(Pu
                   1792: .\}
                   1793: .el \{\
                   1794: .      nr cF \\n(.f
                   1795: .      ie \\n(.$==1 .ds f1 \&\\*(nM\\$1\fP\\*(lP\fP\\*(rP\fP
                   1796: .      el \{\
                   1797: .              ds f1 \\*(nM\\$1\fP\\*(lP
                   1798: .              nr aa 0
                   1799: .              rC \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
                   1800: .      \}
                   1801: .      if "\\*(iM"" \{\\&\\*(f1
                   1802: .              ds f1
                   1803: .      \}
                   1804: .\}
                   1805: ..
                   1806: .\"
                   1807: .de rC
                   1808: .rZ \\$1
                   1809: .ie \\n(rZ \{\
                   1810: .      as f1 \f\\n(cF\\*(rP\f\\n(cF\\$1\\$2\\$3\\$4\\$5\\$6\\$7
                   1811: .\}
                   1812: .el \{\
                   1813: .      ie \\n(aa .as f1 \fP, \\*(aR\\$1
                   1814: .      el .as f1 \\*(aR\\$1
                   1815: .      nr aa 1
                   1816: .      ie \\n(.$>1 .rC \\$2 \\$3 \\$4 \\$5 \\$6 \\$7
                   1817: .      el .as f1 \fP\\*(rP\fP
                   1818: .\}
                   1819: ..

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.