Annotation of 43BSDReno/share/tmac/tmac.doc, revision 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.