3 .\" Copyright (c) 1990 The Regents of the University of California.
4 .\" All rights reserved.
6 .\" Redistribution and use in source and binary forms, with or without
7 .\" modification, are permitted provided that the following conditions
9 .\" 1. Redistributions of source code must retain the above copyright
10 .\" notice, this list of conditions and the following disclaimer.
11 .\" 2. Redistributions in binary form must reproduce the above copyright
12 .\" notice, this list of conditions and the following disclaimer in the
13 .\" documentation and/or other materials provided with the distribution.
15 .\" ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change]
16 .\" 4. Neither the name of the University nor the names of its contributors
17 .\" may be used to endorse or promote products derived from this software
18 .\" without specific prior written permission.
20 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23 .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32 .\" @(#)doc-old.tmac 5.2 (Berkeley) 3/13/91
33 .\" Slightly modified by jjc@jclark.com to work with groff as well.
35 .\" Assume nroff on crt's only if cR==1
42 .\" Argument Reference Style
44 .\" Interactive Command Modifier (flag)
46 .\" Emphasis (in the English sense - usually italics)
50 .\" Environment Variable Style
52 .\" Command Line Flag Style
54 .\" Header String Style
56 .\" Interactive Command Style
60 .\" Left Parenthesis Style
62 .\" Right Parenthesis Style
64 .\" Options Open Bracket Style
66 .\" Options Open Bracket Style
68 .\" Name (subject of manpage) Style
72 .\" Accepted punctuation string for -mdoc syntax
73 .ds Pu \fR[.,:;(\^)[\^]\fR]
74 .\" Section Header Style
77 .\" Symbolic Emphasis (boldface)
79 .\" Generic Variable Style
81 .\" Volume Title Style
83 .\" Cross Reference STyle (man page only)
92 .\" Argument Reference Style
94 .\" Interactive Command Modifier (flag)
96 .\" Emphasis (in the English sense - usually italics)
100 .\" Environment Variable Style
102 .\" Command Line Flag Style
104 .\" Header String Style
106 .\" Interactive Command Style
110 .\" Left Parenthesis Style
112 .\" Right Parenthesis Style
114 .\" Options Open Bracket Style
116 .\" Options Open Bracket Style
118 .\" Name (subject of manpage) Style
122 .\" Accepted punctuation string for -mdoc syntax
124 .\" Section Header Style
128 .\" Symbol, Mode or Mask Style
130 .\" Generic Variable Style
132 .\" Volume Title Style
134 .\" Cross Reference Style (man page only)
137 .\" INDENTS - Subheaders(sI), Text(Ti) between Section Headers and Subsects
146 .\" Flags for macros names which are used only for .Ds
151 .\" INDENT WIDTHS (for Lists)
152 .\" Width Needed for Address Tag (indented amount)
154 .\" Angle Quote Width
156 .\" Width Needed for Argument
158 .\" Width Needed for Column offset
160 .\" Width neeeded for Interactive Command Modifier
162 .\" Width Needed for Complex Expressions
164 .\" Indent Width Needed for Display (right and left margins)
166 .\" Double Quote Width
168 .\" tI is dependent on Ds and used by .Dp
170 .\" Width Needed for Display
172 .\" Width Needed for Errno Types
174 .\" Width Needed for Environment Variables
176 .\" Width Needed for Example Indent
178 .\" Width Needed for Flag
180 .\" Width Needed for Function
182 .\" Width neeeded for Interactive Command Name
184 .\" Width Needed for Constant
186 .\" Width Needed for Math Symbol ? not sure if needed
188 .\" Width Needed for Name
190 .\" Width Needed for Option Begin
192 .\" Width Needed for Option End
194 .\" Width Needed for Option (one line)
196 .\" Width Needed for Pathname
198 .\" Parenthesis Quote Width
200 .\" Single Quote Width
202 .\" Width Needed for Symbols, Modes or Masks
204 .\" Width needed for default or unknown text width
206 .\" Width Needed for Generic Variable
208 .\" Width Needed for Cross Reference, should the cross ref be annotated.
218 .\" .Li Tagged Paragraph Style - zero if break on oversized tag
219 .\" one if add em space and continue filling line.
221 .\" Page Layout Macro
241 .\" Vertical space distance (from Section headers/Lists/Subsections)
258 .\" Vertical space distance (from Section headers/Lists/Subsections)
275 .\" PREDEFINED STRINGS
298 .\" Note: The distances from the bottom or top of the page are set
299 .\" in headers (macro .hK): to -1.25 for troff, and -1.167 for nroff
300 .\" bottoms, and top is 0.
302 .\" .Dt Document/manpage_title section/chapter volume
303 .\" The \{ and \} is necessary as roff doesn't nest if-elses
304 .\" properly, especially with .ds.
305 .\" TODO: separate Dt into Dt, Ch and Vt for supp docs.
310 .\" Volume and Section Number or Chapter Number
311 .if !"\\$1"" .ds dT \\$1
315 . \" Volume Title if none given
316 . if \\$2>=1 .if \\$2<=8 \{\
317 . ds vT UNIX Reference Manual
318 . if \\$2>1 .if \\$2<6 .ds vT UNIX Programmer's Manual
319 . if "\\$2"8" .ds vT UNIX System Manager's Manual
321 . if "\\$2"unass" .ds vT DRAFT
322 . if "\\$2"draft" .ds vT DRAFT
323 . if "\\$2"paper" .ds vT Null
327 . \" Volume Title if given
328 . if "\\$3"USD" .ds vT UNIX User's Supplementary Documents
329 . if "\\$3"PS1" .ds vT UNIX Programmers's Supplementary Documents
330 . if "\\$3"AMD" .ds vT UNIX Ancestral Manual Documents
331 . if "\\$3"SMM" .ds vT UNIX System Manager's Manual
332 . if "\\$3"URM" .ds vT UNIX Reference Manual
333 . if "\\$3"PRM" .ds vT UNIX Programmers's Manual
334 . if "\\$3"IND" .ds vT UNIX Manual Master Index
335 . if "\\$3"CON" .ds vT UNIX Contributed Software Manual
336 . if "\\$3"IMP" .ds vT UNIX Implementation Notes
337 . if "\\$3"HOW" .ds vT UNIX How Pocket Manual
338 . if "\\$3"LOCAL" .ds vT UNIX Local Manual
339 . if "\\*(vT"Local" .ds vT \\$3
343 .\" .Os Operating System/Standard and Release or Version Number
348 . ds oS \fIBSD Experimental\fP
349 .\" . ds oS (\fIBag o' Bits\fP)
356 . if "\\$2"" .as oS \0UNIX
357 . if "\\$2"7th" .as oS \07th Edition
358 . if "\\$2"7" .as oS \07th Edition
359 . if "\\$2"III" .as oS \0System III
360 . if "\\$2"3" .as oS \0System III
361 . if "\\$2"V" .as oS \0System V
362 . if "\\$2"V.2" .as oS \0System V Release 2
363 . if "\\$2"V.3" .as oS \0System V Release 3
364 . if "\\$2"V.4" .as oS \0System V Release 4
367 . if "\\$2"3" .ds oS 3rd Berkeley Distribution
368 . if "\\$2"4" .ds oS 4th Berkeley Distribution
369 . if "\\$2"4.1" .ds oS 4.1 Berkeley Distribution
370 . if "\\$2"4.2" .ds oS 4.2 Berkeley Distribution
371 . if "\\$2"4.3" .ds oS 4.3 Berkeley Distribution
372 . if "\\$2"4.3+" .ds oS 4.3+tahoe Berkeley Distribution
374 .if "\\*(oS"Null" .ds oS \\$1
375 .if "\\*(o1"Non-Null" .as oS \0\\$2
383 .\" .if "\\$1"POSIX" \{\
384 .\" . ds sT IEEE Standard POSIX
385 .\" . if \\$2 .as sT \0\\$2
387 .\" .if "\\$1"ANSI" \{\
388 .\" . ds sT ANSI Standard
389 .\" . if \\$2 .as sT \0\\$2
391 .\" .if "\\$1"ISO" \{\
392 .\" . ds sT ISO Standard
393 .\" . if \\$2 .as sT \0\\$2
395 .\" .if "\\*(sT"Null" .ds sR \\$3
399 .\" .ie !"\\$1"" .ds gP \&\\$1 \\$2 \\$3 \\$4 \\$5
408 . ds dD \\$1 \\$2 \\$3
410 . el .tm Usage: .Dd Month Day, Year (e.g July 4, 1977).
417 .\" House Keeping Macro - Make sense of dT, cH, vT, sT, gP and dS
418 .\" TODO: Try to get else's for efficiency
419 .\" TODO: GET RID OF .wh -1.167i (its in v7)
425 .if !"\\*(cH"Null" \{\
426 . ie !"\\*(gP"Null" .as hT \|(\|\\*(cH\\*(gP\|)
427 . el .as hT \\|(\\|\\*(cH\\|)
429 .if "\\*(cH"Null" .if !"\\*(gP"Null" .as hT \&\|(\|\\*(gP\|)
445 . if \\n(nl==0:\\n(nl==-1 'bp
455 .if !\\n(cR 'sp \\n(Hmu
456 .tl @\\*(Hs\\*(hT\fP@\\*(Vs\\*(vT\fP@\\*(Hs\\*(hT\fP@
466 . tl @\\*(Hs\\*(oS\fP@\\*(Vs\\*(dD\fP@%@
470 .\" . tl @\\*(Hs\\*(oS\fP@\\*(Vs\\*(dD\fP@%@
491 .tm Not a \-mdoc command: .LP
494 .tm Not a \-mdoc command: .PP
497 .tm Not a \-mdoc command: .pp
500 .tm Not a \-mdoc command: .Co
510 .\" This is disgusting, troff not parse if stmt properly
525 . tm Usage: .Ad address [...] \\*(Pu
530 . ie "\\*(iM"" .ds f1 \&\\*(sV
532 . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
537 .\" Command Line Argument Macro
541 . ie !"\\*(iM"" .as f1 \&[\|\\*(aRfile\ ...\fP\|]
542 . el \&[\|\\*(aRfile\ ...\fP\|]
547 . ie "\\*(iM"" .ds f1 \&\\*(sV
549 . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
556 . tm Usage: .Em text ... \\*(Pu
561 . ie "\\*(iM"" .ds f1 \&\\*(sV
563 . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
570 . tm Usage: .Er ERRNOTYPE ... \\*(Pu
575 . ie "\\*(iM"" .ds f1 \&\\*(sV
577 . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
584 . tm Usage: .Ev ENVIRONMENT_VARIABLE(s) ... \\*(Pu
589 . ie "\\*(iM"" .ds f1 \&\\*(sV
591 . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
600 . ie !"\\*(iM"" .as f1 \&\\*(fL\-\fP
606 . if (\\n(sW==1&\\n(.$==1) .rZ \\$1
610 . ie "\\*(iM"" .ds f1 \&\\*(sV\-\f\\n(cF\\$1
611 . el \&\\*(sV\-\f\\n(cF\\$1
614 . ie "\\*(iM"" .ds f1 \&\\*(sV
616 . fB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
621 .\" Interactive Commands Macro
625 . tm Usage: .Ic Interactive Commands(s) ... \\*(Pu
630 . ie "\\*(iM"" .ds f1 \&\\*(sV
632 . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
637 .\" Interactive Command Modifiers (flags)
641 . tm Usage: .Cm Interactive Command Modifier(s) ... \\*(Pu
646 . ie "\\*(iM"" .ds f1 \&\\*(sV
648 . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
655 . tm Usage: .Li literal ... \\*(Pu
660 . ie "\\*(iM"" .ds f1 \&\\*(sV
662 . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
666 .\" If in nroff or any other case where the default font
667 .\" is constant width, and literal means zilch, single quote instead.
671 . tm Usage: .Ql literal ... \\*(Pu
674 . Sq \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
681 . tm Usage: .Ql literal ... \\*(Pu
684 . Li \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
691 . if "\\*(n1"" .tm Usage: .Nm Name(s) ... \\*(Pu
692 . ie !"\\*(iM"" .as f1 \&\\*(nM\\*(n1\\$1\fP
693 . el \&\\*(nM\\*(n1\\$1\fP
704 . nr iS ((\\n(sW+1)*\\n(fW)u
710 . if "\\*(n1"" .ds n1 \\$1
711 . ie "\\*(iM"" .ds f1 \&\\*(sV
713 . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
725 . ie "\\*(iM"" .ds f1 \&\\*(sV
727 . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
734 . tm Usage: .Sy Symbolic Text ... \\*(Pu
739 . ie "\\*(iM"" .ds f1 \&\\*(sV
741 . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
748 . tm Usage: .Ms Math Symbol ... \\*(Pu
753 . ie "\\*(iM"" .ds f1 \&\\*(sV
755 . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
762 . tm Usage: .Va variable_name(s) ... \\*(Pu
767 . ie "\\*(iM"" .ds f1 \&\\*(sV
769 . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
776 .if \\n(.$==0 .tm Usage error: called with empty arguments (empty quotes)?
779 . ie \\n(rZ .as f1 \&\f\\n(cF\\$1\fP
785 . if "\\*(iM"Tp" .as f1 \&\ \&
786 . if "\\*(iM"Dp" .as f1 \&\ \&
787 . if "\\*(iM"Op" .as f1 \&\ \&
788 . if "\\*(iM"Cx" .as f1 \&\ \&
789 . if "\\*(iM"Dq" .as f1 \& \&
790 . if "\\*(iM"Sq" .as f1 \& \&
791 . if "\\*(iM"Pq" .as f1 \& \&
792 . if "\\*(iM"Aq" .as f1 \& \&
796 . nB \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
800 . ie \\n(rZ .as f1 \&\f\\n(cF\\$1
801 . el .as f1 \&\\$1\f\\n(cF
802 . if "\\*(iM"" \{\&\\*(f1
810 .if \\n(.$==0 .tm Usage error: called with empty arguments (empty quotes)?
813 . ie \\n(rZ .as f1 \&\f\\n(cF\\$1\fP
815 . ie "\\$1"-" .as f1 \&\-\-
822 . if "\\*(iM"Tp" .as f1 \&\ \&
823 . if "\\*(iM"Dp" .as f1 \&\ \&
824 . if "\\*(iM"Op" .as f1 \&\ \&
825 . if "\\*(iM"Cx" .as f1 \&\ \&
826 . if "\\*(iM"Dq" .as f1 \& \&
827 . if "\\*(iM"Sq" .as f1 \& \&
828 . if "\\*(iM"Pq" .as f1 \& \&
829 . if "\\*(iM"Aq" .as f1 \& \&
833 . fB \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
837 . ie \\n(rZ .as f1 \&\f\\n(cF\\$1
839 . ie "\\$1"-" .as f1 \&\-\-\f\\n(cF
840 . el .as f1 \&\-\\$1\f\\n(cF
842 . if "\\*(iM"" \{\&\\*(f1
849 .\" Single quoted Items
850 .\" eF, sB g[0-9] and f2
854 . ie "\\*(iM"" \&\\*(sL\&\\*sR
855 . el .as f1 \&\\*(sL\&\\*(sR
863 . sB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
864 . ie \\n(eF>0 .\\*(g1 \\*(g2 \\*(g3 \\*(g4 \\*(g5 \\*(g6 \\*(g7 \\*(g8
867 . if !"\\*(f2"" .as f1 \\*(f2
874 . rm g0 g1 g2 g3 g4 g5 g6 g7 g8 g9
879 .\" Double quoted Items
883 . ie "\\*(iM"" \&\\*(Lq\&\\*(Rq
884 . el .as f1 \&\\*(Lq\&\\*(Rq
892 . Sb \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
893 . ie \\n(Ef>0 .\\*(k1 \\*(k2 \\*(k3 \\*(k4 \\*(k5 \\*(k6 \\*(k7 \\*(k8
896 . if !"\\*(f4"" .as f1 \\*(f4
903 . rm k0 k1 k2 k3 k4 k5 k6 k7 k8 k9
908 .\" Parenthesis quoted Items
912 . ie "\\*(iM"" \&(\&)
921 . pB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
922 . ie \\n(pQ>0 .\\*(y1 \\*(y2 \\*(y3 \\*(y4 \\*(y5 \\*(y6 \\*(y7 \\*(y8
925 . if !"\\*(f3"" .as f1 \\*(f3
932 . rm y0 y1 y2 y3 y4 y5 y6 y7 y8 y9
936 .\" eF, sB g[0-9] and f2
939 .ie \\n(.$==0 .tm Sick Logic: macro sB
941 . ie \\n(eF>=1 .nr eF \\n(eF+1
944 . if \\n(mN .nr eF \\n(eF+1
947 . ie \\n(rZ .as f2 \\$1
949 . ie \\n(eF<1 .as g\\n(eF \\$1
950 . el .as g\\n(eF \\$1
959 . sB \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
965 .ie \\n(.$==0 .tm Sick Logic: macro Sb
967 . ie \\n(Ef>=1 .nr Ef \\n(Ef+1
970 . if \\n(mN .nr Ef \\n(Ef+1
973 . ie \\n(rZ .as f4 \\$1
975 . ie \\n(Ef<1 .as k\\n(Ef \\$1
976 . el .as k\\n(Ef \\$1
985 . Sb \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
991 .ie \\n(.$==0 .tm Sick Logic: macro pB
993 . ie \\n(pQ>=1 .nr pQ \\n(pQ+1
996 . if \\n(mN .nr pQ \\n(pQ+1
999 . ie \\n(rZ .as f3 \\$1
1001 . ie \\n(pQ<1 .as y\\n(pQ \\$1
1002 . el .as y\\n(pQ \\$1
1011 . pB \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1017 .ie \\n(.$==0 .tm Bad Syntax: .Aq
1019 . ie \\n(aQ>=1 .nr aQ \\n(aQ+1
1022 . if \\n(mN .nr aQ \\n(aQ+1
1025 . ie \\n(rZ .as aZ \\$1
1027 . ie \\n(aQ<1 .as a\\n(aQ \\$1
1028 . el .as a\\n(aQ \\$1
1037 . aQ \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1041 .\" Angle Bracket Quoted Items
1045 . ie "\\*(iM"" \&<\&>
1054 . aQ \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
1055 . ie \\n(aQ>0 .\\*(a1 \\*(a2 \\*(a3 \\*(a4 \\*(a5 \\*(a6 \\*(a7 \\*(a8
1058 . if !"\\*(aZ"" .as f1 \\*(aZ
1059 . if "\\*(iM"Aq" \{\
1065 . rm a0 a1 a2 a3 a4 a5 a6 a7 a8
1069 .\" macro Name test, return macro register value if true
1075 . if \\n(\\$1 .nr mN \\n(\\$1
1084 . if \\n(\\$1 .nr mN \\n(\\$1
1088 .\" Punctuation test (using z registers), return 1 if true
1094 . if \\n(z\\$1==1 \{\
1105 . if \\n(z\\$1==1 \{\
1112 .\" sW returns number of characters in a string
1123 .ie \\n(sW>=\\n(fW \{\
1124 . ie \\n(sW%\\n(fW .nr sW (\\n(sW/\\n(fW)+1
1125 . el .nr sW \\n(sW/\\n(fW
1129 .\" Option Expression -
1130 .\" TODO - add line overflow check (right!)
1144 .\" .tm Op: \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1145 .dO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1150 .\" just for mike, with every bite of garlic in mind (oops, i mean burp).
1151 .\" dO: go dOwn an argument vector and test each argument to see if
1152 .\" a macro name or punctuation. stash in respective place along
1153 .\" with its arguments.
1167 .\\*(e1 \\*(e2 \\*(e3 \\*(e4 \\*(e5 \\*(e6 \\*(e7 \\*(e8 \\*(e9
1170 . if !(\\n(oO:\\n(aO) .as f1 \& \&
1183 .\" .tm dO: $1: \\$1: eP \\n(eP e[\\n(eP]: \\*(e\\n(ePEE
1186 .\" .tm dO:rZ: $1: \\$1: eP \\n(eP e[\\n(eP]: \\*(e\\n(eP
1191 .\" .tm dO:word $1: \\$1: eP \\n(eP e[\\n(eP]: \\*(e\\n(ePEE
1192 . if \\n(eP==0:\\n(e\\n(eP==1 .nr eP \\n(eP+1
1193 . if \\n(eZ .as e\\n(eP \& \&
1194 . as e\\n(eP " \&\\$1
1195 .\" . ds e\\n(eP \&\\$1
1201 . dO \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1205 .\\*(e1 \\*(e2 \\*(e3 \\*(e4 \\*(e5 \\*(e6 \\*(e7 \\*(e8 \\*(e9
1212 .\" handle old style arguments such as the arg -Idir
1213 .\" in adb, .Oo is a toggle.
1218 .\" stash punctuation
1220 .if \\n(hP>=\\n(oZ \{\
1222 . ds e\\n(eP \\*(h\\n(oZ
1227 .\" clean up punctuation vector
1235 .\" uO: go back up created vector cleaning it up along the way
1250 . as f1 \\*(rB\\*(h1\\*(h2\\*(h3
1260 . if (\\n(.lu-\\n(.ku-\\n(.ou-(2*\\n(fWu))<\w'\fC\\*(f1'u .br
1264 .\" . nr qq \\n(.lu-\\n(.ku-\\n(.ou
1265 .\" \&aa == \\n(aa, f1==\\*(f1, qq==\\n(qq
1266 . if (\\n(.lu-\\n(.ku-\\n(.ou-\\n(aau)<=(8*\\n(fWu) .br
1284 . if !"\\*(iM"" .as f1 \&\\*(xR\\$1\fP
1285 . if "\\*(iM"" \&\\*(xR\\$1\fP
1287 . el .tm Xr Usage: .Xr manpage_name [section#] \\*(Pu
1292 . ie \\n(rZ \&\\*(xR\\$1\fP\\$2
1293 . el \&\\*(xR\\$1\fP(\\$2)
1296 . ie \\n(rZ .as f1 \&\\*(xR\\$1\fP\\$2
1297 . el .as f1 \&\\*(xR\\$1\fP(\\$2)
1303 . ie !"\\*(iM"" .as f1 \&\\*(xR\\$1\fP\\$2\\$3\\$4\\$5\\$6\\$7\\$8
1304 . el \&\\*(xR\\$1\fP\\$2\\$3\\$4\\$5\\$6\\$7\\$8
1310 . as f1 \&\\*(xR\\$1\fP(\\$2)\\$3\\$4\\$5\\$6\\$7\\$8
1313 \&\\*(xR\\$1\fP(\\$2)\\$3\\$4\\$5\\$6\\$7\\$8
1317 . tm rZ = \\n(rZ the arg is \\$3
1318 . tm Xr-XX Usage: .Xr manpage_name [section#] \\*(Pu
1326 .tm Ex defunct, Use .Dl: \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1328 .\" Display (one) Line of text.
1331 ' ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i
1332 . in \\n(.iu+\\n(Dsu
1334 . ie \\n(mN .\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1337 .\" Literal font is none specified
1338 \&\\*(lI\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1341 . in \\n(.iu-\\n(Dsu
1345 . ie \\n(mN .\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
1348 . ds f1 \&\\*(lI\\&\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
1355 .\" user set Tagged Paragraph Width (used in both Dp and Tp)
1363 . nr tW (\\n(sW+3)*\\n(fWu)
1366 . ie \\n(mN .nr tW \\n(mN
1393 .\" tagged paragraph
1394 .\" initialize baby stack variables
1400 .ie "\\$1"" .pE p s np
1410 . if !"Tw"\\*(s\\n(np" \{\
1419 . if !"\\*(tC"\\*(s\\n(np" .nr tC 1
1430 . in \\n(.iu+\\n(p\\n(npu
1434 . \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1435 . if !"\\$1"Cx" .pT st p np
1442 \&\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1454 .\" Complex Expression Macro
1456 .\" TODO: add length across line boundary check (like Li)
1460 . if "\\*(iM"Cx" \{\
1466 . if "\\*(iM"Tp" .pT st p np
1467 . if "\\*(iM"Dp" .pT st q mp
1475 .\" Here are the args: `\\$1' `\\$2' `\\$3' `\\$4'
1476 . ie \\n(mN .\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1479 . if \\n(.$>1 .Cx \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1483 .\" Prefix string in default font to content specified string
1486 .\\$2 \\$3 \\$4 \\$5
1489 .\" Suffix string in default font to content specified string
1495 .\" Simple Option Begin
1504 .tm shouldn't be here
1507 . ie \\n(mN .\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1510 . if \\n(.$>1 .Oc \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1516 .if \\n(.$>1 .Oc \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1531 .\" White space for Cx
1535 .\" tagged paragraph
1536 .\" initialize baby stack variables
1543 .Dp Cx \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
1547 .Tp Cx \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
1549 .\" Tag with a flag and an argument with a space
1577 .\" Blended tag toggle
1579 .ie \\n(tP==0 .nr tP 1
1582 .\" Bullet paragraph
1586 .\" Display tagged paragraph
1601 . if !"Tw"\\*(r\\n(mp" \{\
1610 . if !"\\*(tC"\\*(r\\n(mp" .nr tC 1
1620 . ie \\n(tIu==\\n(Dsu .nr i\\n(mp \\n(Dsu
1622 . nr i\\n(mp \\n(tIu
1625 . in \\n(.iu+\\n(i\\n(mpu
1627 . in \\n(.iu+\\n(\\q\\n(mpu
1630 . \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1631 . if !"\\$1"Cx" .pT st q mp
1638 \&\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1649 .\" .pE number_stack string_stack counter
1652 . in \\n(.iu-(\\n(\\$1\\n(\\$3u)-(\\n(i\\n(mpu)
1655 .el .in \\n(.iu-\\n(\\$1\\n(\\$3u
1656 .\" .in \\n(.iu-\\n(\\$1\\n(\\$3u
1657 .if \\n(\\$3<=0 .tm Extraneous call .Tp or .Dp
1664 .\" .pT [st or di] number_stack counter
1667 . nr bb \\n(\\$2\\n(\\$3u
1669 . ie (\\n(\\$2\\n(\\$3u-2n)<=\w'\\*(f1'u \{\&\\*(f1\\*(tP
1672 . el \\*(f1\h'|\\n(\\$2\\n(\\$3u'\c
1675 . ti -\\n(\\$2\\n(\\$3u
1676 . ie (\\n(\\$2\\n(\\$3u-2n)<=\\n(dlu \{\&\\*(tD\\*(tP
1679 . el \\*(tD\h'|\\n(\\$2\\n(\\$3u'\c
1690 .\" set Sh state off, check for list state before calling indent (.In)
1694 .\" name state on, housekeep (headers & footers)
1699 . if "\\$1"SYNOPSIS" .nr nS 1
1705 .ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i
1708 \&\fB\\$1 \|\\$2 \|\\$3 \|\\$4 \|\\$5 \|\\$6 \|\\$7 \|\\$8 \|\\$9
1711 .if "\\$1"SEE" .nr sE 1
1715 .\" Nd minus sign for an en dash used in .Sh Name
1717 \&\-\& \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1722 \&\fB\\$1 \|\\$2 \|\\$3 \|\\$4 \|\\$5 \|\\$6 \|\\$7 \|\\$8 \|\\$9
1724 .ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i
1728 .\" .if "\\$1"Ss" .in \\n(.iu+\\n(sIu
1738 . in \\n(.iu-\\n(eWu
1739 . ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i
1746 ' in \\n(.iu+\\n(eWu
1749 . ta \w'\\$1 'u +\w'\\$2 'u
1750 . nr eW \w'\\$1 'u+\w'\\$2 'u
1751 ' in \\n(.iu+\\n(eWu
1754 . ta \w'\\$1 'u +\w'\\$2 'u +\w'\\$3 'u
1755 . nr eW \w'\\$1 'u+\w'\\$2 'u+\w'\\$3 'u
1756 ' in \\n(.iu+\\n(eWu
1759 . ta \w'\\$1 'u +\w'\\$2 'u +\w'\\$3 'u +\w'\\$4 'u
1760 . nr eW \w'\\$1 'u+\w'\\$2 'u+\w'\\$3 'u +\w'\\$4 'u
1761 ' in \\n(.iu+\\n(eWu
1764 .ta \w'\\$1 'u +\w'\\$2 'u +\w'\\$3 'u +\w'\\$4 'u +\w'\\$5 'u
1765 .nr eW \w'\\$1 'u +\w'\\$2 'u +\w'\\$3 'u +\w'\\$4 'u +\w'\\$5 'u
1766 ' in \\n(.iu+\\n(eWu
1773 .ie \\n(mN .\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1774 .el \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1799 \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1807 .nr d\\n(dQ (\\n(.l-\\n(.i)/4u
1808 .in \\n(.iu+\\n(d\\n(dQu
1811 .nr d\\n(dQ (\\n(.l/3)u
1812 .in \\n(.iu+\\n(d\\n(dQu
1820 . in \\n(.iu-\\n(d\\n(dQu
1829 . tm Usage: .Fn function_name function_arg(s) ... \\*(Pu
1833 . ie \\n(.$==1 .ds f1 \&\\*(nM\\$1\fP\\*(lP\fP\\*(rP\fP
1835 . ds f1 \\*(nM\\$1\fP\\*(lP
1837 . rC \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1839 . if "\\*(iM"" \{\\&\\*(f1
1848 . as f1 \f\\n(cF\\*(rP\f\\n(cF\\$1\\$2\\$3\\$4\\$5\\$6\\$7
1851 . ie \\n(aa .as f1 \fP, \\*(aR\\$1
1852 . el .as f1 \\*(aR\\$1
1854 . ie \\n(.$>1 .rC \\$2 \\$3 \\$4 \\$5 \\$6 \\$7
1855 . el .as f1 \fP\\*(rP\fP