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.
13 .\" 3. All advertising materials mentioning features or use of this software
14 .\" must display the following acknowledgement:
15 .\" This product includes software developed by the University of
16 .\" California, Berkeley and its contributors.
17 .\" 4. Neither the name of the University nor the names of its contributors
18 .\" may be used to endorse or promote products derived from this software
19 .\" without specific prior written permission.
21 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33 .\" @(#)doc-old.tmac 5.2 (Berkeley) 3/13/91
34 .\" Slightly modified by jjc@jclark.com to work with groff as well.
36 .\" Assume nroff on crt's only if cR==1
43 .\" Argument Reference Style
45 .\" Interactive Comand Modifier (flag)
47 .\" Emphasis (in the English sense - usually italics)
51 .\" Environment Variable Style
53 .\" Command Line Flag Style
55 .\" Header String Style
57 .\" Interactive Command Style
61 .\" Left Parenthesis Style
63 .\" Right Parenthesis Style
65 .\" Options Open Bracket Style
67 .\" Options Open Bracket Style
69 .\" Name (subject of manpage) Style
73 .\" Accepted punctuation string for -mdoc syntax
74 .ds Pu \fR[.,:;(\^)[\^]\fR]
75 .\" Section Header Style
78 .\" Symbolic Emphasis (boldface)
80 .\" Generic Variable Style
82 .\" Volume Title Style
84 .\" Cross Reference STyle (man page only)
93 .\" Argument Reference Style
95 .\" Interactive Command Modifier (flag)
97 .\" Emphasis (in the English sense - usually italics)
101 .\" Environment Variable Style
103 .\" Command Line Flag Style
105 .\" Header String Style
107 .\" Interactive Command Style
111 .\" Left Parenthesis Style
113 .\" Right Parenthesis Style
115 .\" Options Open Bracket Style
117 .\" Options Open Bracket Style
119 .\" Name (subject of manpage) Style
123 .\" Accepted punctuation string for -mdoc syntax
125 .\" Section Header Style
129 .\" Symbol, Mode or Mask Style
131 .\" Generic Variable Style
133 .\" Volume Title Style
135 .\" Cross Reference Style (man page only)
138 .\" INDENTS - Subheaders(sI), Text(Ti) between Section Headers and Subsects
147 .\" Flags for macros names which are used only for .Ds
152 .\" INDENT WIDTHS (for Lists)
153 .\" Width Needed for Address Tag (indented amount)
155 .\" Angle Quote Width
157 .\" Width Needed for Argument
159 .\" Width Needed for Column offset
161 .\" Width neeeded for Interactive Command Modifier
163 .\" Width Needed for Complex Expressions
165 .\" Indent Width Needed for Display (right and left margins)
167 .\" Double Quote Width
169 .\" tI is dependent on Ds and used by .Dp
171 .\" Width Needed for Display
173 .\" Width Needed for Errno Types
175 .\" Width Needed for Environment Variables
177 .\" Width Needed for Example Indent
179 .\" Width Needed for Flag
181 .\" Width Needed for Function
183 .\" Width neeeded for Interactive Command Name
185 .\" Width Needed for Constant
187 .\" Width Needed for Math Symbol ? not sure if needed
189 .\" Width Needed for Name
191 .\" Width Needed for Option Begin
193 .\" Width Needed for Option End
195 .\" Width Needed for Option (one line)
197 .\" Width Needed for Pathname
199 .\" Parenthesis Quote Width
201 .\" Single Quote Width
203 .\" Width Needed for Symbols, Modes or Masks
205 .\" Width needed for default or unknown text width
207 .\" Width Needed for Generic Variable
209 .\" Width Needed for Cross Reference, should the cross ref be annotated.
219 .\" .Li Tagged Paragraph Style - zero if break on oversized tag
220 .\" one if add em space and continue filling line.
222 .\" Page Layout Macro
242 .\" Vertical space distance (from Section headers/Lists/Subsections)
259 .\" Vertical space distance (from Section headers/Lists/Subsections)
276 .\" PREDEFINED STRINGS
299 .\" Note: The distances from the bottom or top of the page are set
300 .\" in headers (macro .hK): to -1.25 for troff, and -1.167 for nroff
301 .\" bottoms, and top is 0.
303 .\" .Dt Document/manpage_title section/chapter volume
304 .\" The \{ and \} is necessary as roff doesn't nest if-elses
305 .\" properly, especially with .ds.
306 .\" TODO: separate Dt into Dt, Ch and Vt for supp docs.
311 .\" Volume and Section Number or Chapter Number
312 .if !"\\$1"" .ds dT \\$1
316 . \" Volume Title if none given
317 . if \\$2>=1 .if \\$2<=8 \{\
318 . ds vT UNIX Reference Manual
319 . if \\$2>1 .if \\$2<6 .ds vT UNIX Programmer's Manual
320 . if "\\$2"8" .ds vT UNIX System Manager's Manual
322 . if "\\$2"unass" .ds vT DRAFT
323 . if "\\$2"draft" .ds vT DRAFT
324 . if "\\$2"paper" .ds vT Null
328 . \" Volume Title if given
329 . if "\\$3"USD" .ds vT UNIX User's Supplementary Documents
330 . if "\\$3"PS1" .ds vT UNIX Programmers's Supplementary Documents
331 . if "\\$3"AMD" .ds vT UNIX Ancestral Manual Documents
332 . if "\\$3"SMM" .ds vT UNIX System Manager's Manual
333 . if "\\$3"URM" .ds vT UNIX Reference Manual
334 . if "\\$3"PRM" .ds vT UNIX Programmers's Manual
335 . if "\\$3"IND" .ds vT UNIX Manual Master Index
336 . if "\\$3"CON" .ds vT UNIX Contributed Software Manual
337 . if "\\$3"IMP" .ds vT UNIX Implementation Notes
338 . if "\\$3"HOW" .ds vT UNIX How Pocket Manual
339 . if "\\$3"LOCAL" .ds vT UNIX Local Manual
340 . if "\\*(vT"Local" .ds vT \\$3
344 .\" .Os Operating System/Standard and Release or Version Number
349 . ds oS \fIBSD Experimental\fP
350 .\" . ds oS (\fIBag o' Bits\fP)
357 . if "\\$2"" .as oS \0UNIX
358 . if "\\$2"7th" .as oS \07th Edition
359 . if "\\$2"7" .as oS \07th Edition
360 . if "\\$2"III" .as oS \0System III
361 . if "\\$2"3" .as oS \0System III
362 . if "\\$2"V" .as oS \0System V
363 . if "\\$2"V.2" .as oS \0System V Release 2
364 . if "\\$2"V.3" .as oS \0System V Release 3
365 . if "\\$2"V.4" .as oS \0System V Release 4
368 . if "\\$2"3" .ds oS 3rd Berkeley Distribution
369 . if "\\$2"4" .ds oS 4th Berkeley Distribution
370 . if "\\$2"4.1" .ds oS 4.1 Berkeley Distribution
371 . if "\\$2"4.2" .ds oS 4.2 Berkeley Distribution
372 . if "\\$2"4.3" .ds oS 4.3 Berkeley Distribution
373 . if "\\$2"4.3+" .ds oS 4.3+tahoe Berkeley Distribution
375 .if "\\*(oS"Null" .ds oS \\$1
376 .if "\\*(o1"Non-Null" .as oS \0\\$2
384 .\" .if "\\$1"POSIX" \{\
385 .\" . ds sT IEEE Standard POSIX
386 .\" . if \\$2 .as sT \0\\$2
388 .\" .if "\\$1"ANSI" \{\
389 .\" . ds sT ANSI Standard
390 .\" . if \\$2 .as sT \0\\$2
392 .\" .if "\\$1"ISO" \{\
393 .\" . ds sT ISO Standard
394 .\" . if \\$2 .as sT \0\\$2
396 .\" .if "\\*(sT"Null" .ds sR \\$3
400 .\" .ie !"\\$1"" .ds gP \&\\$1 \\$2 \\$3 \\$4 \\$5
409 . ds dD \\$1 \\$2 \\$3
411 . el .tm Usage: .Dd Month Day, Year (e.g July 4, 1977).
418 .\" House Keeping Macro - Make sense of dT, cH, vT, sT, gP and dS
419 .\" TODO: Try to get else's for efficiency
420 .\" TODO: GET RID OF .wh -1.167i (its in v7)
426 .if !"\\*(cH"Null" \{\
427 . ie !"\\*(gP"Null" .as hT \|(\|\\*(cH\\*(gP\|)
428 . el .as hT \\|(\\|\\*(cH\\|)
430 .if "\\*(cH"Null" .if !"\\*(gP"Null" .as hT \&\|(\|\\*(gP\|)
446 . if \\n(nl==0:\\n(nl==-1 'bp
456 .if !\\n(cR 'sp \\n(Hmu
457 .tl @\\*(Hs\\*(hT\fP@\\*(Vs\\*(vT\fP@\\*(Hs\\*(hT\fP@
467 . tl @\\*(Hs\\*(oS\fP@\\*(Vs\\*(dD\fP@%@
471 .\" . tl @\\*(Hs\\*(oS\fP@\\*(Vs\\*(dD\fP@%@
492 .tm Not a \-mdoc command: .LP
495 .tm Not a \-mdoc command: .PP
498 .tm Not a \-mdoc command: .pp
501 .tm Not a \-mdoc command: .Co
511 .\" This is disgusting, troff not parse if stmt properly
526 . tm Usage: .Ad address [...] \\*(Pu
531 . ie "\\*(iM"" .ds f1 \&\\*(sV
533 . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
538 .\" Command Line Argument Macro
542 . ie !"\\*(iM"" .as f1 \&[\|\\*(aRfile\ ...\fP\|]
543 . el \&[\|\\*(aRfile\ ...\fP\|]
548 . ie "\\*(iM"" .ds f1 \&\\*(sV
550 . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
557 . tm Usage: .Em text ... \\*(Pu
562 . ie "\\*(iM"" .ds f1 \&\\*(sV
564 . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
571 . tm Usage: .Er ERRNOTYPE ... \\*(Pu
576 . ie "\\*(iM"" .ds f1 \&\\*(sV
578 . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
585 . tm Usage: .Ev ENVIRONMENT_VARIABLE(s) ... \\*(Pu
590 . ie "\\*(iM"" .ds f1 \&\\*(sV
592 . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
601 . ie !"\\*(iM"" .as f1 \&\\*(fL\-\fP
607 . if (\\n(sW==1&\\n(.$==1) .rZ \\$1
611 . ie "\\*(iM"" .ds f1 \&\\*(sV\-\f\\n(cF\\$1
612 . el \&\\*(sV\-\f\\n(cF\\$1
615 . ie "\\*(iM"" .ds f1 \&\\*(sV
617 . fB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
622 .\" Interactive Commands Macro
626 . tm Usage: .Ic Interactive Commands(s) ... \\*(Pu
631 . ie "\\*(iM"" .ds f1 \&\\*(sV
633 . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
638 .\" Interactive Command Modifiers (flags)
642 . tm Usage: .Cm Interactive Command Modifier(s) ... \\*(Pu
647 . ie "\\*(iM"" .ds f1 \&\\*(sV
649 . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
656 . tm Usage: .Li literal ... \\*(Pu
661 . ie "\\*(iM"" .ds f1 \&\\*(sV
663 . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
667 .\" If in nroff or any other case where the default font
668 .\" is constant width, and literal means zilch, single quote instead.
672 . tm Usage: .Ql literal ... \\*(Pu
675 . Sq \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
682 . tm Usage: .Ql literal ... \\*(Pu
685 . Li \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
692 . if "\\*(n1"" .tm Usage: .Nm Name(s) ... \\*(Pu
693 . ie !"\\*(iM"" .as f1 \&\\*(nM\\*(n1\\$1\fP
694 . el \&\\*(nM\\*(n1\\$1\fP
705 . nr iS ((\\n(sW+1)*\\n(fW)u
711 . if "\\*(n1"" .ds n1 \\$1
712 . ie "\\*(iM"" .ds f1 \&\\*(sV
714 . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
726 . ie "\\*(iM"" .ds f1 \&\\*(sV
728 . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
735 . tm Usage: .Sy Symbolic Text ... \\*(Pu
740 . ie "\\*(iM"" .ds f1 \&\\*(sV
742 . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
749 . tm Usage: .Ms Math Symbol ... \\*(Pu
754 . ie "\\*(iM"" .ds f1 \&\\*(sV
756 . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
763 . tm Usage: .Va variable_name(s) ... \\*(Pu
768 . ie "\\*(iM"" .ds f1 \&\\*(sV
770 . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
777 .if \\n(.$==0 .tm Usage error: called with empty arguments (empty quotes)?
780 . ie \\n(rZ .as f1 \&\f\\n(cF\\$1\fP
786 . if "\\*(iM"Tp" .as f1 \&\ \&
787 . if "\\*(iM"Dp" .as f1 \&\ \&
788 . if "\\*(iM"Op" .as f1 \&\ \&
789 . if "\\*(iM"Cx" .as f1 \&\ \&
790 . if "\\*(iM"Dq" .as f1 \& \&
791 . if "\\*(iM"Sq" .as f1 \& \&
792 . if "\\*(iM"Pq" .as f1 \& \&
793 . if "\\*(iM"Aq" .as f1 \& \&
797 . nB \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
801 . ie \\n(rZ .as f1 \&\f\\n(cF\\$1
802 . el .as f1 \&\\$1\f\\n(cF
803 . if "\\*(iM"" \{\&\\*(f1
811 .if \\n(.$==0 .tm Usage error: called with empty arguments (empty quotes)?
814 . ie \\n(rZ .as f1 \&\f\\n(cF\\$1\fP
816 . ie "\\$1"-" .as f1 \&\-\-
823 . if "\\*(iM"Tp" .as f1 \&\ \&
824 . if "\\*(iM"Dp" .as f1 \&\ \&
825 . if "\\*(iM"Op" .as f1 \&\ \&
826 . if "\\*(iM"Cx" .as f1 \&\ \&
827 . if "\\*(iM"Dq" .as f1 \& \&
828 . if "\\*(iM"Sq" .as f1 \& \&
829 . if "\\*(iM"Pq" .as f1 \& \&
830 . if "\\*(iM"Aq" .as f1 \& \&
834 . fB \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
838 . ie \\n(rZ .as f1 \&\f\\n(cF\\$1
840 . ie "\\$1"-" .as f1 \&\-\-\f\\n(cF
841 . el .as f1 \&\-\\$1\f\\n(cF
843 . if "\\*(iM"" \{\&\\*(f1
850 .\" Single quoted Items
851 .\" eF, sB g[0-9] and f2
855 . ie "\\*(iM"" \&\\*(sL\&\\*sR
856 . el .as f1 \&\\*(sL\&\\*(sR
864 . sB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
865 . ie \\n(eF>0 .\\*(g1 \\*(g2 \\*(g3 \\*(g4 \\*(g5 \\*(g6 \\*(g7 \\*(g8
868 . if !"\\*(f2"" .as f1 \\*(f2
875 . rm g0 g1 g2 g3 g4 g5 g6 g7 g8 g9
880 .\" Double quoted Items
884 . ie "\\*(iM"" \&\\*(Lq\&\\*(Rq
885 . el .as f1 \&\\*(Lq\&\\*(Rq
893 . Sb \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
894 . ie \\n(Ef>0 .\\*(k1 \\*(k2 \\*(k3 \\*(k4 \\*(k5 \\*(k6 \\*(k7 \\*(k8
897 . if !"\\*(f4"" .as f1 \\*(f4
904 . rm k0 k1 k2 k3 k4 k5 k6 k7 k8 k9
909 .\" Parenthesis quoted Items
913 . ie "\\*(iM"" \&(\&)
922 . pB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
923 . ie \\n(pQ>0 .\\*(y1 \\*(y2 \\*(y3 \\*(y4 \\*(y5 \\*(y6 \\*(y7 \\*(y8
926 . if !"\\*(f3"" .as f1 \\*(f3
933 . rm y0 y1 y2 y3 y4 y5 y6 y7 y8 y9
937 .\" eF, sB g[0-9] and f2
940 .ie \\n(.$==0 .tm Sick Logic: macro sB
942 . ie \\n(eF>=1 .nr eF \\n(eF+1
945 . if \\n(mN .nr eF \\n(eF+1
948 . ie \\n(rZ .as f2 \\$1
950 . ie \\n(eF<1 .as g\\n(eF \\$1
951 . el .as g\\n(eF \\$1
960 . sB \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
966 .ie \\n(.$==0 .tm Sick Logic: macro Sb
968 . ie \\n(Ef>=1 .nr Ef \\n(Ef+1
971 . if \\n(mN .nr Ef \\n(Ef+1
974 . ie \\n(rZ .as f4 \\$1
976 . ie \\n(Ef<1 .as k\\n(Ef \\$1
977 . el .as k\\n(Ef \\$1
986 . Sb \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
992 .ie \\n(.$==0 .tm Sick Logic: macro pB
994 . ie \\n(pQ>=1 .nr pQ \\n(pQ+1
997 . if \\n(mN .nr pQ \\n(pQ+1
1000 . ie \\n(rZ .as f3 \\$1
1002 . ie \\n(pQ<1 .as y\\n(pQ \\$1
1003 . el .as y\\n(pQ \\$1
1012 . pB \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1018 .ie \\n(.$==0 .tm Bad Syntax: .Aq
1020 . ie \\n(aQ>=1 .nr aQ \\n(aQ+1
1023 . if \\n(mN .nr aQ \\n(aQ+1
1026 . ie \\n(rZ .as aZ \\$1
1028 . ie \\n(aQ<1 .as a\\n(aQ \\$1
1029 . el .as a\\n(aQ \\$1
1038 . aQ \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1042 .\" Angle Bracket Quoted Items
1046 . ie "\\*(iM"" \&<\&>
1055 . aQ \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
1056 . ie \\n(aQ>0 .\\*(a1 \\*(a2 \\*(a3 \\*(a4 \\*(a5 \\*(a6 \\*(a7 \\*(a8
1059 . if !"\\*(aZ"" .as f1 \\*(aZ
1060 . if "\\*(iM"Aq" \{\
1066 . rm a0 a1 a2 a3 a4 a5 a6 a7 a8
1070 .\" macro Name test, return macro register value if true
1076 . if \\n(\\$1 .nr mN \\n(\\$1
1085 . if \\n(\\$1 .nr mN \\n(\\$1
1089 .\" Punctuation test (using z registers), return 1 if true
1095 . if \\n(z\\$1==1 \{\
1106 . if \\n(z\\$1==1 \{\
1113 .\" sW returns number of characters in a string
1124 .ie \\n(sW>=\\n(fW \{\
1125 . ie \\n(sW%\\n(fW .nr sW (\\n(sW/\\n(fW)+1
1126 . el .nr sW \\n(sW/\\n(fW
1130 .\" Option Expression -
1131 .\" TODO - add line overflow check (right!)
1145 .\" .tm Op: \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1146 .dO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1151 .\" just for mike, with every bite of garlic in mind (oops, i mean burp).
1152 .\" dO: go dOwn an argument vector and test each argument to see if
1153 .\" a macro name or punctuation. stash in respective place along
1154 .\" with its arguments.
1168 .\\*(e1 \\*(e2 \\*(e3 \\*(e4 \\*(e5 \\*(e6 \\*(e7 \\*(e8 \\*(e9
1171 . if !(\\n(oO:\\n(aO) .as f1 \& \&
1184 .\" .tm dO: $1: \\$1: eP \\n(eP e[\\n(eP]: \\*(e\\n(ePEE
1187 .\" .tm dO:rZ: $1: \\$1: eP \\n(eP e[\\n(eP]: \\*(e\\n(eP
1192 .\" .tm dO:word $1: \\$1: eP \\n(eP e[\\n(eP]: \\*(e\\n(ePEE
1193 . if \\n(eP==0:\\n(e\\n(eP==1 .nr eP \\n(eP+1
1194 . if \\n(eZ .as e\\n(eP \& \&
1195 . as e\\n(eP " \&\\$1
1196 .\" . ds e\\n(eP \&\\$1
1202 . dO \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1206 .\\*(e1 \\*(e2 \\*(e3 \\*(e4 \\*(e5 \\*(e6 \\*(e7 \\*(e8 \\*(e9
1213 .\" handle old style arguments such as the arg -Idir
1214 .\" in adb, .Oo is a toggle.
1219 .\" stash punctuation
1221 .if \\n(hP>=\\n(oZ \{\
1223 . ds e\\n(eP \\*(h\\n(oZ
1228 .\" clean up punctuation vector
1236 .\" uO: go back up created vector cleaning it up along the way
1251 . as f1 \\*(rB\\*(h1\\*(h2\\*(h3
1261 . if (\\n(.lu-\\n(.ku-\\n(.ou-(2*\\n(fWu))<\w'\fC\\*(f1'u .br
1265 .\" . nr qq \\n(.lu-\\n(.ku-\\n(.ou
1266 .\" \&aa == \\n(aa, f1==\\*(f1, qq==\\n(qq
1267 . if (\\n(.lu-\\n(.ku-\\n(.ou-\\n(aau)<=(8*\\n(fWu) .br
1285 . if !"\\*(iM"" .as f1 \&\\*(xR\\$1\fP
1286 . if "\\*(iM"" \&\\*(xR\\$1\fP
1288 . el .tm Xr Usage: .Xr manpage_name [section#] \\*(Pu
1293 . ie \\n(rZ \&\\*(xR\\$1\fP\\$2
1294 . el \&\\*(xR\\$1\fP(\\$2)
1297 . ie \\n(rZ .as f1 \&\\*(xR\\$1\fP\\$2
1298 . el .as f1 \&\\*(xR\\$1\fP(\\$2)
1304 . ie !"\\*(iM"" .as f1 \&\\*(xR\\$1\fP\\$2\\$3\\$4\\$5\\$6\\$7\\$8
1305 . el \&\\*(xR\\$1\fP\\$2\\$3\\$4\\$5\\$6\\$7\\$8
1311 . as f1 \&\\*(xR\\$1\fP(\\$2)\\$3\\$4\\$5\\$6\\$7\\$8
1314 \&\\*(xR\\$1\fP(\\$2)\\$3\\$4\\$5\\$6\\$7\\$8
1318 . tm rZ = \\n(rZ the arg is \\$3
1319 . tm Xr-XX Usage: .Xr manpage_name [section#] \\*(Pu
1327 .tm Ex defunct, Use .Dl: \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1329 .\" Display (one) Line of text.
1332 ' ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i
1333 . in \\n(.iu+\\n(Dsu
1335 . ie \\n(mN .\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1338 .\" Literal font is none specified
1339 \&\\*(lI\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1342 . in \\n(.iu-\\n(Dsu
1346 . ie \\n(mN .\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
1349 . ds f1 \&\\*(lI\\&\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
1356 .\" user set Tagged Paragraph Width (used in both Dp and Tp)
1364 . nr tW (\\n(sW+3)*\\n(fWu)
1367 . ie \\n(mN .nr tW \\n(mN
1394 .\" tagged paragraph
1395 .\" initialize baby stack variables
1401 .ie "\\$1"" .pE p s np
1411 . if !"Tw"\\*(s\\n(np" \{\
1420 . if !"\\*(tC"\\*(s\\n(np" .nr tC 1
1431 . in \\n(.iu+\\n(p\\n(npu
1435 . \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1436 . if !"\\$1"Cx" .pT st p np
1443 \&\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1455 .\" Complex Expression Macro
1457 .\" TODO: add length across line boundary check (like Li)
1461 . if "\\*(iM"Cx" \{\
1467 . if "\\*(iM"Tp" .pT st p np
1468 . if "\\*(iM"Dp" .pT st q mp
1476 .\" Here are the args: `\\$1' `\\$2' `\\$3' `\\$4'
1477 . ie \\n(mN .\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1480 . if \\n(.$>1 .Cx \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1484 .\" Prefix string in default font to content specified string
1487 .\\$2 \\$3 \\$4 \\$5
1490 .\" Suffix string in default font to content specified string
1496 .\" Simple Option Begin
1505 .tm shouldn't be here
1508 . ie \\n(mN .\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1511 . if \\n(.$>1 .Oc \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1517 .if \\n(.$>1 .Oc \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1532 .\" White space for Cx
1536 .\" tagged paragraph
1537 .\" initialize baby stack variables
1544 .Dp Cx \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
1548 .Tp Cx \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
1550 .\" Tag with a flag and an argument with a space
1578 .\" Blended tag toggle
1580 .ie \\n(tP==0 .nr tP 1
1583 .\" Bullet paragraph
1587 .\" Display tagged paragraph
1602 . if !"Tw"\\*(r\\n(mp" \{\
1611 . if !"\\*(tC"\\*(r\\n(mp" .nr tC 1
1621 . ie \\n(tIu==\\n(Dsu .nr i\\n(mp \\n(Dsu
1623 . nr i\\n(mp \\n(tIu
1626 . in \\n(.iu+\\n(i\\n(mpu
1628 . in \\n(.iu+\\n(\\q\\n(mpu
1631 . \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1632 . if !"\\$1"Cx" .pT st q mp
1639 \&\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1650 .\" .pE number_stack string_stack counter
1653 . in \\n(.iu-(\\n(\\$1\\n(\\$3u)-(\\n(i\\n(mpu)
1656 .el .in \\n(.iu-\\n(\\$1\\n(\\$3u
1657 .\" .in \\n(.iu-\\n(\\$1\\n(\\$3u
1658 .if \\n(\\$3<=0 .tm Extraneous call .Tp or .Dp
1665 .\" .pT [st or di] number_stack counter
1668 . nr bb \\n(\\$2\\n(\\$3u
1670 . ie (\\n(\\$2\\n(\\$3u-2n)<=\w'\\*(f1'u \{\&\\*(f1\\*(tP
1673 . el \\*(f1\h'|\\n(\\$2\\n(\\$3u'\c
1676 . ti -\\n(\\$2\\n(\\$3u
1677 . ie (\\n(\\$2\\n(\\$3u-2n)<=\\n(dlu \{\&\\*(tD\\*(tP
1680 . el \\*(tD\h'|\\n(\\$2\\n(\\$3u'\c
1691 .\" set Sh state off, check for list state before calling indent (.In)
1695 .\" name state on, housekeep (headers & footers)
1700 . if "\\$1"SYNOPSIS" .nr nS 1
1706 .ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i
1709 \&\fB\\$1 \|\\$2 \|\\$3 \|\\$4 \|\\$5 \|\\$6 \|\\$7 \|\\$8 \|\\$9
1712 .if "\\$1"SEE" .nr sE 1
1716 .\" Nd minus sign for an en dash used in .Sh Name
1718 \&\-\& \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1723 \&\fB\\$1 \|\\$2 \|\\$3 \|\\$4 \|\\$5 \|\\$6 \|\\$7 \|\\$8 \|\\$9
1725 .ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i
1729 .\" .if "\\$1"Ss" .in \\n(.iu+\\n(sIu
1739 . in \\n(.iu-\\n(eWu
1740 . ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i
1747 ' in \\n(.iu+\\n(eWu
1750 . ta \w'\\$1 'u +\w'\\$2 'u
1751 . nr eW \w'\\$1 'u+\w'\\$2 'u
1752 ' in \\n(.iu+\\n(eWu
1755 . ta \w'\\$1 'u +\w'\\$2 'u +\w'\\$3 'u
1756 . nr eW \w'\\$1 'u+\w'\\$2 'u+\w'\\$3 'u
1757 ' in \\n(.iu+\\n(eWu
1760 . ta \w'\\$1 'u +\w'\\$2 'u +\w'\\$3 'u +\w'\\$4 'u
1761 . nr eW \w'\\$1 'u+\w'\\$2 'u+\w'\\$3 'u +\w'\\$4 'u
1762 ' in \\n(.iu+\\n(eWu
1765 .ta \w'\\$1 'u +\w'\\$2 'u +\w'\\$3 'u +\w'\\$4 'u +\w'\\$5 'u
1766 .nr eW \w'\\$1 'u +\w'\\$2 'u +\w'\\$3 'u +\w'\\$4 'u +\w'\\$5 'u
1767 ' in \\n(.iu+\\n(eWu
1774 .ie \\n(mN .\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1775 .el \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1800 \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1808 .nr d\\n(dQ (\\n(.l-\\n(.i)/4u
1809 .in \\n(.iu+\\n(d\\n(dQu
1812 .nr d\\n(dQ (\\n(.l/3)u
1813 .in \\n(.iu+\\n(d\\n(dQu
1821 . in \\n(.iu-\\n(d\\n(dQu
1830 . tm Usage: .Fn function_name function_arg(s) ... \\*(Pu
1834 . ie \\n(.$==1 .ds f1 \&\\*(nM\\$1\fP\\*(lP\fP\\*(rP\fP
1836 . ds f1 \\*(nM\\$1\fP\\*(lP
1838 . rC \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1840 . if "\\*(iM"" \{\\&\\*(f1
1849 . as f1 \f\\n(cF\\*(rP\f\\n(cF\\$1\\$2\\$3\\$4\\$5\\$6\\$7
1852 . ie \\n(aa .as f1 \fP, \\*(aR\\$1
1853 . el .as f1 \\*(aR\\$1
1855 . ie \\n(.$>1 .rC \\$2 \\$3 \\$4 \\$5 \\$6 \\$7
1856 . el .as f1 \fP\\*(rP\fP