2 .\" Copyright (c) 1990 The Regents of the University of California.
3 .\" All rights reserved.
5 .\" Redistribution and use in source and binary forms, with or without
6 .\" modification, are permitted provided that the following conditions
8 .\" 1. Redistributions of source code must retain the above copyright
9 .\" notice, this list of conditions and the following disclaimer.
10 .\" 2. Redistributions in binary form must reproduce the above copyright
11 .\" notice, this list of conditions and the following disclaimer in the
12 .\" documentation and/or other materials provided with the distribution.
14 .\" ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change]
15 .\" 4. Neither the name of the University nor the names of its contributors
16 .\" may be used to endorse or promote products derived from this software
17 .\" without specific prior written permission.
19 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
20 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22 .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
23 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 .\" @(#)doc-old.tmac 5.2 (Berkeley) 3/13/91
32 .\" Slightly modified by jjc@jclark.com to work with groff as well.
34 .\" Assume nroff on crt's only if cR==1
41 .\" Argument Reference Style
43 .\" Interactive Command Modifier (flag)
45 .\" Emphasis (in the English sense - usually italics)
49 .\" Environment Variable Style
51 .\" Command Line Flag Style
53 .\" Header String Style
55 .\" Interactive Command Style
59 .\" Left Parenthesis Style
61 .\" Right Parenthesis Style
63 .\" Options Open Bracket Style
65 .\" Options Open Bracket Style
67 .\" Name (subject of manpage) Style
71 .\" Accepted punctuation string for -mdoc syntax
72 .ds Pu \fR[.,:;(\^)[\^]\fR]
73 .\" Section Header Style
76 .\" Symbolic Emphasis (boldface)
78 .\" Generic Variable Style
80 .\" Volume Title Style
82 .\" Cross Reference STyle (man page only)
91 .\" Argument Reference Style
93 .\" Interactive Command Modifier (flag)
95 .\" Emphasis (in the English sense - usually italics)
99 .\" Environment Variable Style
101 .\" Command Line Flag Style
103 .\" Header String Style
105 .\" Interactive Command Style
109 .\" Left Parenthesis Style
111 .\" Right Parenthesis Style
113 .\" Options Open Bracket Style
115 .\" Options Open Bracket Style
117 .\" Name (subject of manpage) Style
121 .\" Accepted punctuation string for -mdoc syntax
123 .\" Section Header Style
127 .\" Symbol, Mode or Mask Style
129 .\" Generic Variable Style
131 .\" Volume Title Style
133 .\" Cross Reference Style (man page only)
136 .\" INDENTS - Subheaders(sI), Text(Ti) between Section Headers and Subsects
145 .\" Flags for macros names which are used only for .Ds
150 .\" INDENT WIDTHS (for Lists)
151 .\" Width Needed for Address Tag (indented amount)
153 .\" Angle Quote Width
155 .\" Width Needed for Argument
157 .\" Width Needed for Column offset
159 .\" Width neeeded for Interactive Command Modifier
161 .\" Width Needed for Complex Expressions
163 .\" Indent Width Needed for Display (right and left margins)
165 .\" Double Quote Width
167 .\" tI is dependent on Ds and used by .Dp
169 .\" Width Needed for Display
171 .\" Width Needed for Errno Types
173 .\" Width Needed for Environment Variables
175 .\" Width Needed for Example Indent
177 .\" Width Needed for Flag
179 .\" Width Needed for Function
181 .\" Width neeeded for Interactive Command Name
183 .\" Width Needed for Constant
185 .\" Width Needed for Math Symbol ? not sure if needed
187 .\" Width Needed for Name
189 .\" Width Needed for Option Begin
191 .\" Width Needed for Option End
193 .\" Width Needed for Option (one line)
195 .\" Width Needed for Pathname
197 .\" Parenthesis Quote Width
199 .\" Single Quote Width
201 .\" Width Needed for Symbols, Modes or Masks
203 .\" Width needed for default or unknown text width
205 .\" Width Needed for Generic Variable
207 .\" Width Needed for Cross Reference, should the cross ref be annotated.
217 .\" .Li Tagged Paragraph Style - zero if break on oversized tag
218 .\" one if add em space and continue filling line.
220 .\" Page Layout Macro
240 .\" Vertical space distance (from Section headers/Lists/Subsections)
257 .\" Vertical space distance (from Section headers/Lists/Subsections)
274 .\" PREDEFINED STRINGS
297 .\" Note: The distances from the bottom or top of the page are set
298 .\" in headers (macro .hK): to -1.25 for troff, and -1.167 for nroff
299 .\" bottoms, and top is 0.
301 .\" .Dt Document/manpage_title section/chapter volume
302 .\" The \{ and \} is necessary as roff doesn't nest if-elses
303 .\" properly, especially with .ds.
304 .\" TODO: separate Dt into Dt, Ch and Vt for supp docs.
309 .\" Volume and Section Number or Chapter Number
310 .if !"\\$1"" .ds dT \\$1
314 . \" Volume Title if none given
315 . if \\$2>=1 .if \\$2<=8 \{\
316 . ds vT UNIX Reference Manual
317 . if \\$2>1 .if \\$2<6 .ds vT UNIX Programmer's Manual
318 . if "\\$2"8" .ds vT UNIX System Manager's Manual
320 . if "\\$2"unass" .ds vT DRAFT
321 . if "\\$2"draft" .ds vT DRAFT
322 . if "\\$2"paper" .ds vT Null
326 . \" Volume Title if given
327 . if "\\$3"USD" .ds vT UNIX User's Supplementary Documents
328 . if "\\$3"PS1" .ds vT UNIX Programmers's Supplementary Documents
329 . if "\\$3"AMD" .ds vT UNIX Ancestral Manual Documents
330 . if "\\$3"SMM" .ds vT UNIX System Manager's Manual
331 . if "\\$3"URM" .ds vT UNIX Reference Manual
332 . if "\\$3"PRM" .ds vT UNIX Programmers's Manual
333 . if "\\$3"IND" .ds vT UNIX Manual Master Index
334 . if "\\$3"CON" .ds vT UNIX Contributed Software Manual
335 . if "\\$3"IMP" .ds vT UNIX Implementation Notes
336 . if "\\$3"HOW" .ds vT UNIX How Pocket Manual
337 . if "\\$3"LOCAL" .ds vT UNIX Local Manual
338 . if "\\*(vT"Local" .ds vT \\$3
342 .\" .Os Operating System/Standard and Release or Version Number
347 . ds oS \fIBSD Experimental\fP
348 .\" . ds oS (\fIBag o' Bits\fP)
355 . if "\\$2"" .as oS \0UNIX
356 . if "\\$2"7th" .as oS \07th Edition
357 . if "\\$2"7" .as oS \07th Edition
358 . if "\\$2"III" .as oS \0System III
359 . if "\\$2"3" .as oS \0System III
360 . if "\\$2"V" .as oS \0System V
361 . if "\\$2"V.2" .as oS \0System V Release 2
362 . if "\\$2"V.3" .as oS \0System V Release 3
363 . if "\\$2"V.4" .as oS \0System V Release 4
366 . if "\\$2"3" .ds oS 3rd Berkeley Distribution
367 . if "\\$2"4" .ds oS 4th Berkeley Distribution
368 . if "\\$2"4.1" .ds oS 4.1 Berkeley Distribution
369 . if "\\$2"4.2" .ds oS 4.2 Berkeley Distribution
370 . if "\\$2"4.3" .ds oS 4.3 Berkeley Distribution
371 . if "\\$2"4.3+" .ds oS 4.3+tahoe Berkeley Distribution
373 .if "\\*(oS"Null" .ds oS \\$1
374 .if "\\*(o1"Non-Null" .as oS \0\\$2
382 .\" .if "\\$1"POSIX" \{\
383 .\" . ds sT IEEE Standard POSIX
384 .\" . if \\$2 .as sT \0\\$2
386 .\" .if "\\$1"ANSI" \{\
387 .\" . ds sT ANSI Standard
388 .\" . if \\$2 .as sT \0\\$2
390 .\" .if "\\$1"ISO" \{\
391 .\" . ds sT ISO Standard
392 .\" . if \\$2 .as sT \0\\$2
394 .\" .if "\\*(sT"Null" .ds sR \\$3
398 .\" .ie !"\\$1"" .ds gP \&\\$1 \\$2 \\$3 \\$4 \\$5
407 . ds dD \\$1 \\$2 \\$3
409 . el .tm Usage: .Dd Month Day, Year (e.g July 4, 1977).
416 .\" House Keeping Macro - Make sense of dT, cH, vT, sT, gP and dS
417 .\" TODO: Try to get else's for efficiency
418 .\" TODO: GET RID OF .wh -1.167i (its in v7)
424 .if !"\\*(cH"Null" \{\
425 . ie !"\\*(gP"Null" .as hT \|(\|\\*(cH\\*(gP\|)
426 . el .as hT \\|(\\|\\*(cH\\|)
428 .if "\\*(cH"Null" .if !"\\*(gP"Null" .as hT \&\|(\|\\*(gP\|)
444 . if \\n(nl==0:\\n(nl==-1 'bp
454 .if !\\n(cR 'sp \\n(Hmu
455 .tl @\\*(Hs\\*(hT\fP@\\*(Vs\\*(vT\fP@\\*(Hs\\*(hT\fP@
465 . tl @\\*(Hs\\*(oS\fP@\\*(Vs\\*(dD\fP@%@
469 .\" . tl @\\*(Hs\\*(oS\fP@\\*(Vs\\*(dD\fP@%@
490 .tm Not a \-mdoc command: .LP
493 .tm Not a \-mdoc command: .PP
496 .tm Not a \-mdoc command: .pp
499 .tm Not a \-mdoc command: .Co
509 .\" This is disgusting, troff not parse if stmt properly
524 . tm Usage: .Ad address [...] \\*(Pu
529 . ie "\\*(iM"" .ds f1 \&\\*(sV
531 . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
536 .\" Command Line Argument Macro
540 . ie !"\\*(iM"" .as f1 \&[\|\\*(aRfile\ ...\fP\|]
541 . el \&[\|\\*(aRfile\ ...\fP\|]
546 . ie "\\*(iM"" .ds f1 \&\\*(sV
548 . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
555 . tm Usage: .Em text ... \\*(Pu
560 . ie "\\*(iM"" .ds f1 \&\\*(sV
562 . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
569 . tm Usage: .Er ERRNOTYPE ... \\*(Pu
574 . ie "\\*(iM"" .ds f1 \&\\*(sV
576 . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
583 . tm Usage: .Ev ENVIRONMENT_VARIABLE(s) ... \\*(Pu
588 . ie "\\*(iM"" .ds f1 \&\\*(sV
590 . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
599 . ie !"\\*(iM"" .as f1 \&\\*(fL\-\fP
605 . if (\\n(sW==1&\\n(.$==1) .rZ \\$1
609 . ie "\\*(iM"" .ds f1 \&\\*(sV\-\f\\n(cF\\$1
610 . el \&\\*(sV\-\f\\n(cF\\$1
613 . ie "\\*(iM"" .ds f1 \&\\*(sV
615 . fB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
620 .\" Interactive Commands Macro
624 . tm Usage: .Ic Interactive Commands(s) ... \\*(Pu
629 . ie "\\*(iM"" .ds f1 \&\\*(sV
631 . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
636 .\" Interactive Command Modifiers (flags)
640 . tm Usage: .Cm Interactive Command Modifier(s) ... \\*(Pu
645 . ie "\\*(iM"" .ds f1 \&\\*(sV
647 . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
654 . tm Usage: .Li literal ... \\*(Pu
659 . ie "\\*(iM"" .ds f1 \&\\*(sV
661 . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
665 .\" If in nroff or any other case where the default font
666 .\" is constant width, and literal means zilch, single quote instead.
670 . tm Usage: .Ql literal ... \\*(Pu
673 . Sq \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
680 . tm Usage: .Ql literal ... \\*(Pu
683 . Li \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
690 . if "\\*(n1"" .tm Usage: .Nm Name(s) ... \\*(Pu
691 . ie !"\\*(iM"" .as f1 \&\\*(nM\\*(n1\\$1\fP
692 . el \&\\*(nM\\*(n1\\$1\fP
703 . nr iS ((\\n(sW+1)*\\n(fW)u
709 . if "\\*(n1"" .ds n1 \\$1
710 . ie "\\*(iM"" .ds f1 \&\\*(sV
712 . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
724 . ie "\\*(iM"" .ds f1 \&\\*(sV
726 . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
733 . tm Usage: .Sy Symbolic Text ... \\*(Pu
738 . ie "\\*(iM"" .ds f1 \&\\*(sV
740 . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
747 . tm Usage: .Ms Math Symbol ... \\*(Pu
752 . ie "\\*(iM"" .ds f1 \&\\*(sV
754 . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
761 . tm Usage: .Va variable_name(s) ... \\*(Pu
766 . ie "\\*(iM"" .ds f1 \&\\*(sV
768 . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
775 .if \\n(.$==0 .tm Usage error: called with empty arguments (empty quotes)?
778 . ie \\n(rZ .as f1 \&\f\\n(cF\\$1\fP
784 . if "\\*(iM"Tp" .as f1 \&\ \&
785 . if "\\*(iM"Dp" .as f1 \&\ \&
786 . if "\\*(iM"Op" .as f1 \&\ \&
787 . if "\\*(iM"Cx" .as f1 \&\ \&
788 . if "\\*(iM"Dq" .as f1 \& \&
789 . if "\\*(iM"Sq" .as f1 \& \&
790 . if "\\*(iM"Pq" .as f1 \& \&
791 . if "\\*(iM"Aq" .as f1 \& \&
795 . nB \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
799 . ie \\n(rZ .as f1 \&\f\\n(cF\\$1
800 . el .as f1 \&\\$1\f\\n(cF
801 . if "\\*(iM"" \{\&\\*(f1
809 .if \\n(.$==0 .tm Usage error: called with empty arguments (empty quotes)?
812 . ie \\n(rZ .as f1 \&\f\\n(cF\\$1\fP
814 . ie "\\$1"-" .as f1 \&\-\-
821 . if "\\*(iM"Tp" .as f1 \&\ \&
822 . if "\\*(iM"Dp" .as f1 \&\ \&
823 . if "\\*(iM"Op" .as f1 \&\ \&
824 . if "\\*(iM"Cx" .as f1 \&\ \&
825 . if "\\*(iM"Dq" .as f1 \& \&
826 . if "\\*(iM"Sq" .as f1 \& \&
827 . if "\\*(iM"Pq" .as f1 \& \&
828 . if "\\*(iM"Aq" .as f1 \& \&
832 . fB \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
836 . ie \\n(rZ .as f1 \&\f\\n(cF\\$1
838 . ie "\\$1"-" .as f1 \&\-\-\f\\n(cF
839 . el .as f1 \&\-\\$1\f\\n(cF
841 . if "\\*(iM"" \{\&\\*(f1
848 .\" Single quoted Items
849 .\" eF, sB g[0-9] and f2
853 . ie "\\*(iM"" \&\\*(sL\&\\*sR
854 . el .as f1 \&\\*(sL\&\\*(sR
862 . sB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
863 . ie \\n(eF>0 .\\*(g1 \\*(g2 \\*(g3 \\*(g4 \\*(g5 \\*(g6 \\*(g7 \\*(g8
866 . if !"\\*(f2"" .as f1 \\*(f2
873 . rm g0 g1 g2 g3 g4 g5 g6 g7 g8 g9
878 .\" Double quoted Items
882 . ie "\\*(iM"" \&\\*(Lq\&\\*(Rq
883 . el .as f1 \&\\*(Lq\&\\*(Rq
891 . Sb \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
892 . ie \\n(Ef>0 .\\*(k1 \\*(k2 \\*(k3 \\*(k4 \\*(k5 \\*(k6 \\*(k7 \\*(k8
895 . if !"\\*(f4"" .as f1 \\*(f4
902 . rm k0 k1 k2 k3 k4 k5 k6 k7 k8 k9
907 .\" Parenthesis quoted Items
911 . ie "\\*(iM"" \&(\&)
920 . pB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
921 . ie \\n(pQ>0 .\\*(y1 \\*(y2 \\*(y3 \\*(y4 \\*(y5 \\*(y6 \\*(y7 \\*(y8
924 . if !"\\*(f3"" .as f1 \\*(f3
931 . rm y0 y1 y2 y3 y4 y5 y6 y7 y8 y9
935 .\" eF, sB g[0-9] and f2
938 .ie \\n(.$==0 .tm Sick Logic: macro sB
940 . ie \\n(eF>=1 .nr eF \\n(eF+1
943 . if \\n(mN .nr eF \\n(eF+1
946 . ie \\n(rZ .as f2 \\$1
948 . ie \\n(eF<1 .as g\\n(eF \\$1
949 . el .as g\\n(eF \\$1
958 . sB \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
964 .ie \\n(.$==0 .tm Sick Logic: macro Sb
966 . ie \\n(Ef>=1 .nr Ef \\n(Ef+1
969 . if \\n(mN .nr Ef \\n(Ef+1
972 . ie \\n(rZ .as f4 \\$1
974 . ie \\n(Ef<1 .as k\\n(Ef \\$1
975 . el .as k\\n(Ef \\$1
984 . Sb \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
990 .ie \\n(.$==0 .tm Sick Logic: macro pB
992 . ie \\n(pQ>=1 .nr pQ \\n(pQ+1
995 . if \\n(mN .nr pQ \\n(pQ+1
998 . ie \\n(rZ .as f3 \\$1
1000 . ie \\n(pQ<1 .as y\\n(pQ \\$1
1001 . el .as y\\n(pQ \\$1
1010 . pB \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1016 .ie \\n(.$==0 .tm Bad Syntax: .Aq
1018 . ie \\n(aQ>=1 .nr aQ \\n(aQ+1
1021 . if \\n(mN .nr aQ \\n(aQ+1
1024 . ie \\n(rZ .as aZ \\$1
1026 . ie \\n(aQ<1 .as a\\n(aQ \\$1
1027 . el .as a\\n(aQ \\$1
1036 . aQ \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1040 .\" Angle Bracket Quoted Items
1044 . ie "\\*(iM"" \&<\&>
1053 . aQ \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
1054 . ie \\n(aQ>0 .\\*(a1 \\*(a2 \\*(a3 \\*(a4 \\*(a5 \\*(a6 \\*(a7 \\*(a8
1057 . if !"\\*(aZ"" .as f1 \\*(aZ
1058 . if "\\*(iM"Aq" \{\
1064 . rm a0 a1 a2 a3 a4 a5 a6 a7 a8
1068 .\" macro Name test, return macro register value if true
1074 . if \\n(\\$1 .nr mN \\n(\\$1
1083 . if \\n(\\$1 .nr mN \\n(\\$1
1087 .\" Punctuation test (using z registers), return 1 if true
1093 . if \\n(z\\$1==1 \{\
1104 . if \\n(z\\$1==1 \{\
1111 .\" sW returns number of characters in a string
1122 .ie \\n(sW>=\\n(fW \{\
1123 . ie \\n(sW%\\n(fW .nr sW (\\n(sW/\\n(fW)+1
1124 . el .nr sW \\n(sW/\\n(fW
1128 .\" Option Expression -
1129 .\" TODO - add line overflow check (right!)
1143 .\" .tm Op: \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1144 .dO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1149 .\" just for mike, with every bite of garlic in mind (oops, i mean burp).
1150 .\" dO: go dOwn an argument vector and test each argument to see if
1151 .\" a macro name or punctuation. stash in respective place along
1152 .\" with its arguments.
1166 .\\*(e1 \\*(e2 \\*(e3 \\*(e4 \\*(e5 \\*(e6 \\*(e7 \\*(e8 \\*(e9
1169 . if !(\\n(oO:\\n(aO) .as f1 \& \&
1182 .\" .tm dO: $1: \\$1: eP \\n(eP e[\\n(eP]: \\*(e\\n(ePEE
1185 .\" .tm dO:rZ: $1: \\$1: eP \\n(eP e[\\n(eP]: \\*(e\\n(eP
1190 .\" .tm dO:word $1: \\$1: eP \\n(eP e[\\n(eP]: \\*(e\\n(ePEE
1191 . if \\n(eP==0:\\n(e\\n(eP==1 .nr eP \\n(eP+1
1192 . if \\n(eZ .as e\\n(eP \& \&
1193 . as e\\n(eP " \&\\$1
1194 .\" . ds e\\n(eP \&\\$1
1200 . dO \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1204 .\\*(e1 \\*(e2 \\*(e3 \\*(e4 \\*(e5 \\*(e6 \\*(e7 \\*(e8 \\*(e9
1211 .\" handle old style arguments such as the arg -Idir
1212 .\" in adb, .Oo is a toggle.
1217 .\" stash punctuation
1219 .if \\n(hP>=\\n(oZ \{\
1221 . ds e\\n(eP \\*(h\\n(oZ
1226 .\" clean up punctuation vector
1234 .\" uO: go back up created vector cleaning it up along the way
1249 . as f1 \\*(rB\\*(h1\\*(h2\\*(h3
1259 . if (\\n(.lu-\\n(.ku-\\n(.ou-(2*\\n(fWu))<\w'\fC\\*(f1'u .br
1263 .\" . nr qq \\n(.lu-\\n(.ku-\\n(.ou
1264 .\" \&aa == \\n(aa, f1==\\*(f1, qq==\\n(qq
1265 . if (\\n(.lu-\\n(.ku-\\n(.ou-\\n(aau)<=(8*\\n(fWu) .br
1283 . if !"\\*(iM"" .as f1 \&\\*(xR\\$1\fP
1284 . if "\\*(iM"" \&\\*(xR\\$1\fP
1286 . el .tm Xr Usage: .Xr manpage_name [section#] \\*(Pu
1291 . ie \\n(rZ \&\\*(xR\\$1\fP\\$2
1292 . el \&\\*(xR\\$1\fP(\\$2)
1295 . ie \\n(rZ .as f1 \&\\*(xR\\$1\fP\\$2
1296 . el .as f1 \&\\*(xR\\$1\fP(\\$2)
1302 . ie !"\\*(iM"" .as f1 \&\\*(xR\\$1\fP\\$2\\$3\\$4\\$5\\$6\\$7\\$8
1303 . el \&\\*(xR\\$1\fP\\$2\\$3\\$4\\$5\\$6\\$7\\$8
1309 . as f1 \&\\*(xR\\$1\fP(\\$2)\\$3\\$4\\$5\\$6\\$7\\$8
1312 \&\\*(xR\\$1\fP(\\$2)\\$3\\$4\\$5\\$6\\$7\\$8
1316 . tm rZ = \\n(rZ the arg is \\$3
1317 . tm Xr-XX Usage: .Xr manpage_name [section#] \\*(Pu
1325 .tm Ex defunct, Use .Dl: \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1327 .\" Display (one) Line of text.
1330 ' ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i
1331 . in \\n(.iu+\\n(Dsu
1333 . ie \\n(mN .\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1336 .\" Literal font is none specified
1337 \&\\*(lI\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1340 . in \\n(.iu-\\n(Dsu
1344 . ie \\n(mN .\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
1347 . ds f1 \&\\*(lI\\&\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
1354 .\" user set Tagged Paragraph Width (used in both Dp and Tp)
1362 . nr tW (\\n(sW+3)*\\n(fWu)
1365 . ie \\n(mN .nr tW \\n(mN
1392 .\" tagged paragraph
1393 .\" initialize baby stack variables
1399 .ie "\\$1"" .pE p s np
1409 . if !"Tw"\\*(s\\n(np" \{\
1418 . if !"\\*(tC"\\*(s\\n(np" .nr tC 1
1429 . in \\n(.iu+\\n(p\\n(npu
1433 . \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1434 . if !"\\$1"Cx" .pT st p np
1441 \&\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1453 .\" Complex Expression Macro
1455 .\" TODO: add length across line boundary check (like Li)
1459 . if "\\*(iM"Cx" \{\
1465 . if "\\*(iM"Tp" .pT st p np
1466 . if "\\*(iM"Dp" .pT st q mp
1474 .\" Here are the args: `\\$1' `\\$2' `\\$3' `\\$4'
1475 . ie \\n(mN .\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1478 . if \\n(.$>1 .Cx \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1482 .\" Prefix string in default font to content specified string
1485 .\\$2 \\$3 \\$4 \\$5
1488 .\" Suffix string in default font to content specified string
1494 .\" Simple Option Begin
1503 .tm shouldn't be here
1506 . ie \\n(mN .\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1509 . if \\n(.$>1 .Oc \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1515 .if \\n(.$>1 .Oc \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1530 .\" White space for Cx
1534 .\" tagged paragraph
1535 .\" initialize baby stack variables
1542 .Dp Cx \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
1546 .Tp Cx \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
1548 .\" Tag with a flag and an argument with a space
1576 .\" Blended tag toggle
1578 .ie \\n(tP==0 .nr tP 1
1581 .\" Bullet paragraph
1585 .\" Display tagged paragraph
1600 . if !"Tw"\\*(r\\n(mp" \{\
1609 . if !"\\*(tC"\\*(r\\n(mp" .nr tC 1
1619 . ie \\n(tIu==\\n(Dsu .nr i\\n(mp \\n(Dsu
1621 . nr i\\n(mp \\n(tIu
1624 . in \\n(.iu+\\n(i\\n(mpu
1626 . in \\n(.iu+\\n(\\q\\n(mpu
1629 . \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1630 . if !"\\$1"Cx" .pT st q mp
1637 \&\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1648 .\" .pE number_stack string_stack counter
1651 . in \\n(.iu-(\\n(\\$1\\n(\\$3u)-(\\n(i\\n(mpu)
1654 .el .in \\n(.iu-\\n(\\$1\\n(\\$3u
1655 .\" .in \\n(.iu-\\n(\\$1\\n(\\$3u
1656 .if \\n(\\$3<=0 .tm Extraneous call .Tp or .Dp
1663 .\" .pT [st or di] number_stack counter
1666 . nr bb \\n(\\$2\\n(\\$3u
1668 . ie (\\n(\\$2\\n(\\$3u-2n)<=\w'\\*(f1'u \{\&\\*(f1\\*(tP
1671 . el \\*(f1\h'|\\n(\\$2\\n(\\$3u'\c
1674 . ti -\\n(\\$2\\n(\\$3u
1675 . ie (\\n(\\$2\\n(\\$3u-2n)<=\\n(dlu \{\&\\*(tD\\*(tP
1678 . el \\*(tD\h'|\\n(\\$2\\n(\\$3u'\c
1689 .\" set Sh state off, check for list state before calling indent (.In)
1693 .\" name state on, housekeep (headers & footers)
1698 . if "\\$1"SYNOPSIS" .nr nS 1
1704 .ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i
1707 \&\fB\\$1 \|\\$2 \|\\$3 \|\\$4 \|\\$5 \|\\$6 \|\\$7 \|\\$8 \|\\$9
1710 .if "\\$1"SEE" .nr sE 1
1714 .\" Nd minus sign for an en dash used in .Sh Name
1716 \&\-\& \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1721 \&\fB\\$1 \|\\$2 \|\\$3 \|\\$4 \|\\$5 \|\\$6 \|\\$7 \|\\$8 \|\\$9
1723 .ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i
1727 .\" .if "\\$1"Ss" .in \\n(.iu+\\n(sIu
1737 . in \\n(.iu-\\n(eWu
1738 . ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i
1745 ' in \\n(.iu+\\n(eWu
1748 . ta \w'\\$1 'u +\w'\\$2 'u
1749 . nr eW \w'\\$1 'u+\w'\\$2 'u
1750 ' in \\n(.iu+\\n(eWu
1753 . ta \w'\\$1 'u +\w'\\$2 'u +\w'\\$3 'u
1754 . nr eW \w'\\$1 'u+\w'\\$2 'u+\w'\\$3 'u
1755 ' in \\n(.iu+\\n(eWu
1758 . ta \w'\\$1 'u +\w'\\$2 'u +\w'\\$3 'u +\w'\\$4 'u
1759 . nr eW \w'\\$1 'u+\w'\\$2 'u+\w'\\$3 'u +\w'\\$4 'u
1760 ' in \\n(.iu+\\n(eWu
1763 .ta \w'\\$1 'u +\w'\\$2 'u +\w'\\$3 'u +\w'\\$4 'u +\w'\\$5 'u
1764 .nr eW \w'\\$1 'u +\w'\\$2 'u +\w'\\$3 'u +\w'\\$4 'u +\w'\\$5 'u
1765 ' in \\n(.iu+\\n(eWu
1772 .ie \\n(mN .\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1773 .el \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1798 \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1806 .nr d\\n(dQ (\\n(.l-\\n(.i)/4u
1807 .in \\n(.iu+\\n(d\\n(dQu
1810 .nr d\\n(dQ (\\n(.l/3)u
1811 .in \\n(.iu+\\n(d\\n(dQu
1819 . in \\n(.iu-\\n(d\\n(dQu
1828 . tm Usage: .Fn function_name function_arg(s) ... \\*(Pu
1832 . ie \\n(.$==1 .ds f1 \&\\*(nM\\$1\fP\\*(lP\fP\\*(rP\fP
1834 . ds f1 \\*(nM\\$1\fP\\*(lP
1836 . rC \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1838 . if "\\*(iM"" \{\\&\\*(f1
1847 . as f1 \f\\n(cF\\*(rP\f\\n(cF\\$1\\$2\\$3\\$4\\$5\\$6\\$7
1850 . ie \\n(aa .as f1 \fP, \\*(aR\\$1
1851 . el .as f1 \\*(aR\\$1
1853 . ie \\n(.$>1 .rC \\$2 \\$3 \\$4 \\$5 \\$6 \\$7
1854 . el .as f1 \fP\\*(rP\fP