home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-02-22 | 35.6 KB | 1,859 lines |
- .\"
- .\" Copyright (c) 1990 The Regents of the University of California.
- .\" All rights reserved.
- .\"
- .\" Redistribution and use in source and binary forms, with or without
- .\" modification, are permitted provided that the following conditions
- .\" are met:
- .\" 1. Redistributions of source code must retain the above copyright
- .\" notice, this list of conditions and the following disclaimer.
- .\" 2. Redistributions in binary form must reproduce the above copyright
- .\" notice, this list of conditions and the following disclaimer in the
- .\" documentation and/or other materials provided with the distribution.
- .\" 3. All advertising materials mentioning features or use of this software
- .\" must display the following acknowledgement:
- .\" This product includes software developed by the University of
- .\" California, Berkeley and its contributors.
- .\" 4. Neither the name of the University nor the names of its contributors
- .\" may be used to endorse or promote products derived from this software
- .\" without specific prior written permission.
- .\"
- .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- .\" SUCH DAMAGE.
- .\"
- .\" @(#)tmac.doc.old 5.2 (Berkeley) 3/13/91
- .\" Slightly modified by jjc@jclark.com to work with groff as well.
- .\"
- .\" Assume nroff on crt's only if cR==1
- .if n .nr cR 1
- .\" STRING CONSTANTS
- .\" DITROFF
- .if t \{\
- .\" Address Style
- .ds aD \fI
- .\" Argument Reference Style
- .ds aR \f(CO
- .\" Interactive Comand Modifier (flag)
- .ds cM \f(CB
- .\" Emphasis (in the English sense - usually italics)
- .ds eM \fI
- .\" Errno Style
- .ds eR \fC
- .\" Environment Variable Style
- .ds eV \fC
- .\" Command Line Flag Style
- .ds fL \f(CB
- .\" Header String Style
- .ds Hs \fR
- .\" Interactive Command Style
- .ds iC \f(CB
- .\" Literal Style
- .ds lI \fC
- .\" Left Parenthesis Style
- .ds lP \fR\|(\|\fP
- .\" Right Parenthesis Style
- .ds rP \fR\|)\|\fP
- .\" Options Open Bracket Style
- .ds lB \fR\^[\^\fP
- .\" Options Open Bracket Style
- .ds rB \fR\^]\fP
- .\" Name (subject of manpage) Style
- .ds nM \f(CB
- .\" Pathname Style
- .ds pA \fC
- .\" Accepted punctuation string for -mdoc syntax
- .ds Pu \fR[.,:;(\^)[\^]\fR]
- .\" Section Header Style
- .ds Sp \s12\fB
- .\" .ds sT \s-2\fR
- .\" Symbolic Emphasis (boldface)
- .ds sY \f(CB
- .\" Generic Variable Style
- .ds vA \fI
- .\" Volume Title Style
- .ds Vs \fR
- .\" Cross Reference STyle (man page only)
- .ds xR \fC
- .\" Math *
- .tr *\(**
- .\}
- .\" NROFF
- .if n \{\
- .\" Address Style
- .ds aD \fI
- .\" Argument Reference Style
- .ds aR \fI
- .\" Interactive Command Modifier (flag)
- .ds cM \fB
- .\" Emphasis (in the English sense - usually italics)
- .ds eM \fI
- .\" Errno Style
- .ds eR \fR
- .\" Environment Variable Style
- .ds eV \fR
- .\" Command Line Flag Style
- .ds fL \fB
- .\" Header String Style
- .ds Hs \fR
- .\" Interactive Command Style
- .ds iC \fB
- .\" Literal Style
- .ds lI \fR
- .\" Left Parenthesis Style
- .ds lP \fR\|(\fP
- .\" Right Parenthesis Style
- .ds rP \fR\|)\fP
- .\" Options Open Bracket Style
- .ds lB \fR\|[\|\fP
- .\" Options Open Bracket Style
- .ds rB \fR\|]\fP
- .\" Name (subject of manpage) Style
- .ds nM \fB
- .\" Pathname Style
- .ds pA \fI
- .\" Accepted punctuation string for -mdoc syntax
- .ds Pu [.,;:()[]]
- .\" Section Header Style
- .ds Sp \s12\fB
- .\" .ds sT \s-2\fR
- .\" .ds sT \s-2\fR
- .\" Symbol, Mode or Mask Style
- .ds sY \fB
- .\" Generic Variable Style
- .ds vA \fI
- .\" Volume Title Style
- .ds Vs \fR
- .\" Cross Reference Style (man page only)
- .ds xR \fR
- .\}
- .\" INDENTS - Subheaders(sI), Text(Ti) between Section Headers and Subsects
- .if t \{\
- . nr sI \w'\fC,'u*5
- . nr Ti \n(sIu
- .\}
- .if n \{\
- . nr sI .5i
- . nr Ti .5i
- .\}
- .\" Flags for macros names which are used only for .Ds
- .nr dI 6n
- .nr dC 1
- .nr dL 1
- .nr dR 1
- .\" INDENT WIDTHS (for Lists)
- .\" Width Needed for Address Tag (indented amount)
- .nr Ad 12n
- .\" Angle Quote Width
- .nr Aq 12n
- .\" Width Needed for Argument
- .nr Ar 12n
- .\" Width Needed for Column offset
- .nr Cl 15n
- .\" Width neeeded for Interactive Command Modifier
- .nr Cm 10n
- .\" Width Needed for Complex Expressions
- .nr Cx 20n
- .\" Indent Width Needed for Display (right and left margins)
- .nr Ds 6n
- .\" Double Quote Width
- .nr Dq 12n
- .\" tI is dependent on Ds and used by .Dp
- .nr tI \n(Dsu
- .\" Width Needed for Display
- .nr Em 10n
- .\" Width Needed for Errno Types
- .nr Er 15n
- .\" Width Needed for Environment Variables
- .nr Ev 15n
- .\" Width Needed for Example Indent
- .nr Ex 10n
- .\" Width Needed for Flag
- .nr Fl 10n
- .\" Width Needed for Function
- .nr Fn 16n
- .\" Width neeeded for Interactive Command Name
- .nr Ic 10n
- .\" Width Needed for Constant
- .nr Li 16n
- .\" Width Needed for Math Symbol ? not sure if needed
- .nr Ms 6n
- .\" Width Needed for Name
- .nr Nm 10n
- .\" Width Needed for Option Begin
- .nr Ob 14n
- .\" Width Needed for Option End
- .nr Oe 14n
- .\" Width Needed for Option (one line)
- .nr Op 14n
- .\" Width Needed for Pathname
- .nr Pa 32n
- .\" Parenthesis Quote Width
- .nr Pq 12n
- .\" Single Quote Width
- .nr Sq 12n
- .\" Width Needed for Symbols, Modes or Masks
- .nr Sy 6n
- .\" Width needed for default or unknown text width
- .nr Tx 22n
- .\" Width Needed for Generic Variable
- .nr Va 12n
- .\" Width Needed for Cross Reference, should the cross ref be annotated.
- .nr Xr 10n
- .\" PARAGRAPH SPACE
- .if t \{\
- . nr Pp .5v
- .\}
- .if n \{\
- . nr Pp 1v
- .\}
- .\" PAGE LAYOUT
- .\" .Li Tagged Paragraph Style - zero if break on oversized tag
- .\" one if add em space and continue filling line.
- .nr tP 0
- .\" Page Layout Macro
- .de pL
- .\" DITROFF
- .ie t \{\
- .\" Header Margin
- . nr Hm .5i
- .\" Footer Margin
- . nr Fm .5i
- .\" Line length
- . nr ll 5.5i
- .\" Line length
- . ll 5.5i
- .\" Title length
- . nr lt 5.5i
- .\" Title length
- . lt 5.5i
- .\" Page offset
- . nr po 1.56i
- .\" Page offset
- . po 1.56i
- .\" Vertical space distance (from Section headers/Lists/Subsections)
- . nr vV .5v
- .\" em space
- . ds tP \|\|\|\|\|\|
- .\}
- .el \{\
- .\" Line length
- . nr ll 78n
- . ll 78n
- .\" Title length
- . nr lt 78n
- .\" Title length
- . lt 78n
- .\" Page offset
- . nr po 0i
- .\" Page offset
- . po 0i
- .\" Vertical space distance (from Section headers/Lists/Subsections)
- . nr vV 1v
- .\" em space
- . ds tP \0\0
- .\" Test for crt
- . ie \\n(cR .nr Hm 0
- . el .nr Hm .5i
- .\" Footer Margin
- . nr Fm .5i
- .\}
- ..
- .\" Adjustment mode
- .if n \{\
- .ad l
- .na
- ..
- .\}
- .\" PREDEFINED STRINGS
- .if t \{\
- . ds <= \(<=
- . ds >= \(>=
- . ds Lq \&``
- . ds Rq \&''
- . ds ua \(ua
- . ds aa \(aa
- . ds ga \(ga
- . ds sR \(aa
- . ds sL \(ga
- .\}
- .if n \{\
- . ds <= \&<\&=
- . ds >= \&>\&=
- . ds Rq ''
- . ds Lq ``
- . ds ua ^
- . ds aa '
- . ds ga `
- . ds sL `
- . ds sR '
- .\}
- .\" Note: The distances from the bottom or top of the page are set
- .\" in headers (macro .hK): to -1.25 for troff, and -1.167 for nroff
- .\" bottoms, and top is 0.
- .\"
- .\" .Dt Document/manpage_title section/chapter volume
- .\" The \{ and \} is necessary as roff doesn't nest if-elses
- .\" properly, especially with .ds.
- .\" TODO: separate Dt into Dt, Ch and Vt for supp docs.
- .de Dt
- .ds dT UNTITLED
- .ds vT Local
- .ds cH Null
- .\" Volume and Section Number or Chapter Number
- .if !"\\$1"" .ds dT \\$1
- .if !"\\$2"" \{\
- . ds cH \\$2
- . if "\\$3"" \{\
- . \" Volume Title if none given
- . if \\$2>=1 .if \\$2<=8 \{\
- . ds vT UNIX Reference Manual
- . if \\$2>1 .if \\$2<6 .ds vT UNIX Programmer's Manual
- . if "\\$2"8" .ds vT UNIX System Manager's Manual
- . \}
- . if "\\$2"unass" .ds vT DRAFT
- . if "\\$2"draft" .ds vT DRAFT
- . if "\\$2"paper" .ds vT Null
- . \}
- .\}
- .if !"\\$3"" \{\
- . \" Volume Title if given
- . if "\\$3"USD" .ds vT UNIX User's Supplementary Documents
- . if "\\$3"PS1" .ds vT UNIX Programmers's Supplementary Documents
- . if "\\$3"AMD" .ds vT UNIX Ancestral Manual Documents
- . if "\\$3"SMM" .ds vT UNIX System Manager's Manual
- . if "\\$3"URM" .ds vT UNIX Reference Manual
- . if "\\$3"PRM" .ds vT UNIX Programmers's Manual
- . if "\\$3"IND" .ds vT UNIX Manual Master Index
- . if "\\$3"CON" .ds vT UNIX Contributed Software Manual
- . if "\\$3"IMP" .ds vT UNIX Implementation Notes
- . if "\\$3"HOW" .ds vT UNIX How Pocket Manual
- . if "\\$3"LOCAL" .ds vT UNIX Local Manual
- . if "\\*(vT"Local" .ds vT \\$3
- .\}
- ..
- .\"
- .\" .Os Operating System/Standard and Release or Version Number
- .\"
- .de Os
- .ds oS Null
- .if "\\$1"" \{\
- . ds oS \fIBSD Experimental\fP
- .\" . ds oS (\fIBag o' Bits\fP)
- .\}
- .if "\\$2"" \{\
- . ds o1 Non-Null
- .\}
- .if "\\$1"ATT" \{\
- . ds oS AT&T
- . if "\\$2"" .as oS \0UNIX
- . if "\\$2"7th" .as oS \07th Edition
- . if "\\$2"7" .as oS \07th Edition
- . if "\\$2"III" .as oS \0System III
- . if "\\$2"3" .as oS \0System III
- . if "\\$2"V" .as oS \0System V
- . if "\\$2"V.2" .as oS \0System V Release 2
- . if "\\$2"V.3" .as oS \0System V Release 3
- . if "\\$2"V.4" .as oS \0System V Release 4
- .\}
- .if "\\$1"BSD" \{\
- . if "\\$2"3" .ds oS 3rd Berkeley Distribution
- . if "\\$2"4" .ds oS 4th Berkeley Distribution
- . if "\\$2"4.1" .ds oS 4.1 Berkeley Distribution
- . if "\\$2"4.2" .ds oS 4.2 Berkeley Distribution
- . if "\\$2"4.3" .ds oS 4.3 Berkeley Distribution
- . if "\\$2"4.3+" .ds oS 4.3+tahoe Berkeley Distribution
- .\}
- .if "\\*(oS"Null" .ds oS \\$1
- .if "\\*(o1"Non-Null" .as oS \0\\$2
- .rm o1
- ..
- .\"
- .\" Standards
- .\"
- .\" .de St
- .\" .ds sT Null
- .\" .if "\\$1"POSIX" \{\
- .\" . ds sT IEEE Standard POSIX
- .\" . if \\$2 .as sT \0\\$2
- .\" .\}
- .\" .if "\\$1"ANSI" \{\
- .\" . ds sT ANSI Standard
- .\" . if \\$2 .as sT \0\\$2
- .\" .\}
- .\" .if "\\$1"ISO" \{\
- .\" . ds sT ISO Standard
- .\" . if \\$2 .as sT \0\\$2
- .\" .\}
- .\" .if "\\*(sT"Null" .ds sR \\$3
- .\" ..
- .\"
- .\" .de Gp
- .\" .ie !"\\$1"" .ds gP \&\\$1 \\$2 \\$3 \\$4 \\$5
- .\" .el .ds gP Null
- .\" ..
- .\"
- .\"
- .de Dd
- .nr aa 0
- .ie \\n(.$>0 \{\
- . ie \\n(.$<4 \{\
- . ds dD \\$1 \\$2 \\$3
- . \}
- . el .tm Usage: .Dd Month Day, Year (e.g July 4, 1977).
- .\}
- .el \{\
- . ds dD Epoch
- .\}
- ..
- .\"
- .\" House Keeping Macro - Make sense of dT, cH, vT, sT, gP and dS
- .\" TODO: Try to get else's for efficiency
- .\" TODO: GET RID OF .wh -1.167i (its in v7)
- .\"
- .\"
- .de hK
- .nr % 1
- .ds hT \\*(dT
- .if !"\\*(cH"Null" \{\
- . ie !"\\*(gP"Null" .as hT \|(\|\\*(cH\\*(gP\|)
- . el .as hT \\|(\\|\\*(cH\\|)
- .\}
- .if "\\*(cH"Null" .if !"\\*(gP"Null" .as hT \&\|(\|\\*(gP\|)
- .if t \{\
- . wh 0 hM
- . wh -1.25i fM
- .\}
- .if n \{\
- . ie \\n(cR \{\
- . hM
- . wh -0v fM
- . \}
- . el \{\
- . wh 0 hM
- . wh -1.167i fM
- . \}
- .\}
- .if n \{\
- . if \\n(nl==0:\\n(nl==-1 'bp
- .\}
- .if t 'bp
- .em lM
- ..
- .\" Header Macro
- .\"
- .de hM
- .ev 1
- .pL
- .if !\\n(cR 'sp \\n(Hmu
- .tl @\\*(Hs\\*(hT\fP@\\*(Vs\\*(vT\fP@\\*(Hs\\*(hT\fP@
- 'sp \\n(Hmu
- .ev
- ..
- .\"
- .de fM
- .ev 1
- .pL
- .if !\\n(cR \{\
- ' sp \\n(Fmu
- . tl @\\*(Hs\\*(oS\fP@\\*(Vs\\*(dD\fP@%@
- ' bp
- .\}
- .if \\n(cR \{\
- .\" . tl @\\*(Hs\\*(oS\fP@\\*(Vs\\*(dD\fP@%@
- .\" ' bp
- .\}
- .ev
- ..
- .de lM
- .fl
- .if \\n(cR \{\
- . fM
- . pl \\n(nlu
- .\}
- ..
- .de Pp
- .sp \\n(Ppu
- .ne 2
- .ns
- ..
- .de Lp
- .Pp
- ..
- .de LP
- .tm Not a \-mdoc command: .LP
- ..
- .de PP
- .tm Not a \-mdoc command: .PP
- ..
- .de pp
- .tm Not a \-mdoc command: .pp
- ..
- .de Co
- .tm Not a \-mdoc command: .Co
- ..
- .nr z. 1
- .nr z, 1
- .nr z: 1
- .nr z; 1
- .nr z) 1
- .nr z( 1
- .nr z[ 1
- .nr z] 1
- .\" This is disgusting, troff not parse if stmt properly
- .nr z1 0
- .nr z2 0
- .nr z3 0
- .nr z4 0
- .nr z5 0
- .nr z6 0
- .nr z7 0
- .nr z8 0
- .nr z9 0
- .nr z0 0
- .nr z# 0
- .\"
- .de Ad
- .ie \\n(.$==0 \{\
- . tm Usage: .Ad address [...] \\*(Pu
- .\}
- .el \{\
- . ds sV \\*(aD
- . nr cF \\n(.f
- . ie "\\*(iM"" .ds f1 \&\\*(sV
- . el .as f1 \&\\*(sV
- . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- . ft \\n(cF
- .\}
- ..
- .\"
- .\" Command Line Argument Macro
- .\"
- .de Ar
- .ie \\n(.$==0 \{\
- . ie !"\\*(iM"" .as f1 \&[\|\\*(aRfile\ ...\fP\|]
- . el \&[\|\\*(aRfile\ ...\fP\|]
- .\}
- .el \{\
- . ds sV \\*(aR
- . nr cF \\n(.f
- . ie "\\*(iM"" .ds f1 \&\\*(sV
- . el .as f1 \&\\*(sV
- . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- . ft \\n(cF
- .\}
- ..
- .\"
- .de Em
- .ie \\n(.$==0 \{\
- . tm Usage: .Em text ... \\*(Pu
- .\}
- .el \{\
- . ds sV \\*(eM
- . nr cF \\n(.f
- . ie "\\*(iM"" .ds f1 \&\\*(sV
- . el .as f1 \&\\*(sV
- . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- . ft \\n(cF
- .\}
- ..
- .\"
- .de Er
- .ie \\n(.$==0 \{\
- . tm Usage: .Er ERRNOTYPE ... \\*(Pu
- . \}
- .el \{\
- . ds sV \\*(eR
- . nr cF \\n(.f
- . ie "\\*(iM"" .ds f1 \&\\*(sV
- . el .as f1 \&\\*(sV
- . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- . ft \\n(cF
- .\}
- ..
- .\"
- .de Ev
- .ie \\n(.$==0 \{\
- . tm Usage: .Ev ENVIRONMENT_VARIABLE(s) ... \\*(Pu
- . \}
- .el \{\
- . ds sV \\*(eV
- . nr cF \\n(.f
- . ie "\\*(iM"" .ds f1 \&\\*(sV
- . el .as f1 \&\\*(sV
- . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- . ft \\n(cF
- .\}
- ..
- .\"
- .\" Flag Name Macro
- .\"
- .de Fl
- .ie \\n(.$==0 \{\
- . ie !"\\*(iM"" .as f1 \&\\*(fL\-\fP
- . el \&\\*(fL\-\fP
- .\}
- .el \{\
- . nr rZ 0
- . sW \\$1
- . if (\\n(sW==1&\\n(.$==1) .rZ \\$1
- . ds sV \\*(fL
- . nr cF \\n(.f
- . ie \\n(rZ \{\
- . ie "\\*(iM"" .ds f1 \&\\*(sV\-\f\\n(cF\\$1
- . el \&\\*(sV\-\f\\n(cF\\$1
- . \}
- . el \{\
- . ie "\\*(iM"" .ds f1 \&\\*(sV
- . el .as f1 \&\\*(sV
- . fB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- . ft \\n(cF
- . \}
- .\}
- ..
- .\" Interactive Commands Macro
- .\"
- .de Ic
- .ie \\n(.$==0 \{\
- . tm Usage: .Ic Interactive Commands(s) ... \\*(Pu
- .\}
- .el \{\
- . ds sV \\*(iC
- . nr cF \\n(.f
- . ie "\\*(iM"" .ds f1 \&\\*(sV
- . el .as f1 \&\\*(sV
- . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- . ft \\n(cF
- .\}
- ..
- .\"
- .\" Interactive Command Modifiers (flags)
- .\"
- .de Cm
- .ie \\n(.$==0 \{\
- . tm Usage: .Cm Interactive Command Modifier(s) ... \\*(Pu
- .\}
- .el \{\
- . ds sV \\*(cM
- . nr cF \\n(.f
- . ie "\\*(iM"" .ds f1 \&\\*(sV
- . el .as f1 \&\\*(sV
- . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- . ft \\n(cF
- .\}
- ..
- .\"
- .de Li
- .ie \\n(.$==0 \{\
- . tm Usage: .Li literal ... \\*(Pu
- . \}
- .el \{\
- . ds sV \\*(lI
- . nr cF \\n(.f
- . ie "\\*(iM"" .ds f1 \&\\*(sV
- . el .as f1 \&\\*(sV
- . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- . ft \\n(cF
- .\}
- ..
- .\" If in nroff or any other case where the default font
- .\" is constant width, and literal means zilch, single quote instead.
- .ie n \{\
- .de Ql
- . ie \\n(.$==0 \{\
- . tm Usage: .Ql literal ... \\*(Pu
- . \}
- . el \{\
- . Sq \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- . \}
- ..
- .\}
- .el \{\
- .de Ql
- . ie \\n(.$==0 \{\
- . tm Usage: .Ql literal ... \\*(Pu
- . \}
- . el \{\
- . Li \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- . \}
- ..
- .\}
- .\"
- .de Nm
- .ie \\n(.$==0 \{\
- . if "\\*(n1"" .tm Usage: .Nm Name(s) ... \\*(Pu
- . ie !"\\*(iM"" .as f1 \&\\*(nM\\*(n1\\$1\fP
- . el \&\\*(nM\\*(n1\\$1\fP
- .\}
- .el \{\
- . ds sV \\*(nM
- . nr cF \\n(.f
- . if \\n(nS \{\
- . rs
- . in -\\n(iSu
- . ie \\n(nS>1 .br
- . el \{\
- . sW \\$1
- . nr iS ((\\n(sW+1)*\\n(fW)u
- . \}
- . in +\\n(iSu
- . ti -\\n(iSu
- . nr nS \\n(nS+1
- . \}
- . if "\\*(n1"" .ds n1 \\$1
- . ie "\\*(iM"" .ds f1 \&\\*(sV
- . el .as f1 \&\\*(sV
- . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- . ft \\n(cF
- .\}
- ..
- .\"
- .de Pa
- .ie \\n(.$==0 \{\
- \&\\*(pA~\fP
- .\}
- .el \{\
- . ds sV \\*(pA
- . nr cF \\n(.f
- . ie "\\*(iM"" .ds f1 \&\\*(sV
- . el .as f1 \&\\*(sV
- . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- . ft \\n(cF
- .\}
- ..
- .\"
- .de Sy
- .ie \\n(.$==0 \{\
- . tm Usage: .Sy Symbolic Text ... \\*(Pu
- . \}
- .el \{\
- . ds sV \\*(sY
- . nr cF \\n(.f
- . ie "\\*(iM"" .ds f1 \&\\*(sV
- . el .as f1 \&\\*(sV
- . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- . ft \\n(cF
- .\}
- ..
- .\"
- .de Ms
- .ie \\n(.$==0 \{\
- . tm Usage: .Ms Math Symbol ... \\*(Pu
- . \}
- .el \{\
- . ds sV \\*(sY
- . nr cF \\n(.f
- . ie "\\*(iM"" .ds f1 \&\\*(sV
- . el .as f1 \&\\*(sV
- . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- . ft \\n(cF
- .\}
- ..
- .\"
- .de Va
- .ie \\n(.$==0 \{\
- . tm Usage: .Va variable_name(s) ... \\*(Pu
- .\}
- .el \{\
- . ds sV \\*(vA
- . nr cF \\n(.f
- . ie "\\*(iM"" .ds f1 \&\\*(sV
- . el .as f1 \&\\*(sV
- . nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- . ft \\n(cF
- .\}
- ..
- .\"
- .de nB
- .hy 0
- .if \\n(.$==0 .tm Usage error: called with empty arguments (empty quotes)?
- .ie \\n(.$>1 \{\
- . rZ \\$1
- . ie \\n(rZ .as f1 \&\f\\n(cF\\$1\fP
- . el .as f1 \&\\$1
- . rZ \\$2
- . if !\\n(rZ \{\
- . ie !"\\*(iM""\{\
- .\" I surrender
- . if "\\*(iM"Tp" .as f1 \&\ \&
- . if "\\*(iM"Dp" .as f1 \&\ \&
- . if "\\*(iM"Op" .as f1 \&\ \&
- . if "\\*(iM"Cx" .as f1 \&\ \&
- . if "\\*(iM"Dq" .as f1 \& \&
- . if "\\*(iM"Sq" .as f1 \& \&
- . if "\\*(iM"Pq" .as f1 \& \&
- . if "\\*(iM"Aq" .as f1 \& \&
- . \}
- . el .as f1 \& \&
- . \}
- . nB \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- .\}
- .el \{\
- . rZ \\$1
- . ie \\n(rZ .as f1 \&\f\\n(cF\\$1
- . el .as f1 \&\\$1\f\\n(cF
- . if "\\*(iM"" \{\&\\*(f1
- . ds f1
- . \}
- . hy
- .\}
- ..
- .de fB
- .hy 0
- .if \\n(.$==0 .tm Usage error: called with empty arguments (empty quotes)?
- .ie \\n(.$>1 \{\
- . rZ \\$1
- . ie \\n(rZ .as f1 \&\f\\n(cF\\$1\fP
- . el \{\
- . ie "\\$1"-" .as f1 \&\-\-
- . el .as f1 \&\-\\$1
- . \}
- . rZ \\$2
- . if !\\n(rZ \{\
- . ie !"\\*(iM""\{\
- .\" I surrender
- . if "\\*(iM"Tp" .as f1 \&\ \&
- . if "\\*(iM"Dp" .as f1 \&\ \&
- . if "\\*(iM"Op" .as f1 \&\ \&
- . if "\\*(iM"Cx" .as f1 \&\ \&
- . if "\\*(iM"Dq" .as f1 \& \&
- . if "\\*(iM"Sq" .as f1 \& \&
- . if "\\*(iM"Pq" .as f1 \& \&
- . if "\\*(iM"Aq" .as f1 \& \&
- . \}
- . el .as f1 \& \&
- . \}
- . fB \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- .\}
- .el \{\
- . rZ \\$1
- . ie \\n(rZ .as f1 \&\f\\n(cF\\$1
- . el \{\
- . ie "\\$1"-" .as f1 \&\-\-\f\\n(cF
- . el .as f1 \&\-\\$1\f\\n(cF
- . \}
- . if "\\*(iM"" \{\&\\*(f1
- . ds f1
- . \}
- . hy
- .\}
- ..
- .\"
- .\" Single quoted Items
- .\" eF, sB g[0-9] and f2
- .de Sq
- .nr eF 0
- .ie \\n(.$==0 \{\
- . ie "\\*(iM"" \&\\*(sL\&\\*sR
- . el .as f1 \&\\*(sL\&\\*(sR
- .\}
- .el \{\
- . ie "\\*(iM"" \{\
- . ds f1 \&\\*(sL
- . ds iM Sq
- . \}
- . el .as f1 \&\\*(sL
- . sB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- . ie \\n(eF>0 .\\*(g1 \\*(g2 \\*(g3 \\*(g4 \\*(g5 \\*(g6 \\*(g7 \\*(g8
- . el .as f1 \\*(g0
- . as f1 \\*(sR
- . if !"\\*(f2"" .as f1 \\*(f2
- . if "\\*(iM"Sq" \{\
- \&\\*(f1
- . ds f1
- . ds iM
- . \}
- . ds f2
- . rm g0 g1 g2 g3 g4 g5 g6 g7 g8 g9
- . nr eF 0
- .\}
- ..
- .\"
- .\" Double quoted Items
- .de Dq
- .nr Ef 0
- .ie \\n(.$==0 \{\
- . ie "\\*(iM"" \&\\*(Lq\&\\*(Rq
- . el .as f1 \&\\*(Lq\&\\*(Rq
- .\}
- .el \{\
- . ie "\\*(iM"" \{\
- . ds f1 \&\\*(Lq
- . ds iM Dq
- . \}
- . el .as f1 \&\\*(Lq
- . Sb \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- . ie \\n(Ef>0 .\\*(k1 \\*(k2 \\*(k3 \\*(k4 \\*(k5 \\*(k6 \\*(k7 \\*(k8
- . el .as f1 \\*(k0
- . as f1 \\*(Rq
- . if !"\\*(f4"" .as f1 \\*(f4
- . if "\\*(iM"Dq" \{\
- \&\\*(f1
- . ds f1
- . ds iM
- . \}
- . ds f4
- . rm k0 k1 k2 k3 k4 k5 k6 k7 k8 k9
- . nr Ef 0
- .\}
- ..
- .\"
- .\" Parenthesis quoted Items
- .de Pq
- .nr pQ 0
- .ie \\n(.$==0 \{\
- . ie "\\*(iM"" \&(\&)
- . el .as f1 \&(\&)
- .\}
- .el \{\
- . ie "\\*(iM"" \{\
- . ds f1 \&(
- . ds iM Pq
- . \}
- . el .as f1 \&(
- . pB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- . ie \\n(pQ>0 .\\*(y1 \\*(y2 \\*(y3 \\*(y4 \\*(y5 \\*(y6 \\*(y7 \\*(y8
- . el .as f1 \\*(y0
- . as f1 \&)
- . if !"\\*(f3"" .as f1 \\*(f3
- . if "\\*(iM"Pq" \{\
- \&\\*(f1
- . ds f1
- . ds iM
- . \}
- . ds f3
- . rm y0 y1 y2 y3 y4 y5 y6 y7 y8 y9
- . nr pQ 0
- .\}
- ..
- .\" eF, sB g[0-9] and f2
- .de sB
- .hy 0
- .ie \\n(.$==0 .tm Sick Logic: macro sB
- .el \{\
- . ie \\n(eF>=1 .nr eF \\n(eF+1
- . el \{\
- . mN \\$1
- . if \\n(mN .nr eF \\n(eF+1
- . \}
- . rZ \\$1
- . ie \\n(rZ .as f2 \\$1
- . el \{\
- . ie \\n(eF<1 .as g\\n(eF \\$1
- . el .as g\\n(eF \\$1
- . \}
- . if \\n(.$>1 \{\
- . rZ \\$2
- . if \\n(rZ==0 \{\
- . if \\n(eF<1 \{\
- . as g\\n(eF \& \&
- . \}
- . \}
- . sB \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- . \}
- .\}
- ..
- .de Sb
- .hy 0
- .ie \\n(.$==0 .tm Sick Logic: macro Sb
- .el \{\
- . ie \\n(Ef>=1 .nr Ef \\n(Ef+1
- . el \{\
- . mN \\$1
- . if \\n(mN .nr Ef \\n(Ef+1
- . \}
- . rZ \\$1
- . ie \\n(rZ .as f4 \\$1
- . el \{\
- . ie \\n(Ef<1 .as k\\n(Ef \\$1
- . el .as k\\n(Ef \\$1
- . \}
- . if \\n(.$>1 \{\
- . rZ \\$2
- . if \\n(rZ==0 \{\
- . if \\n(Ef<1 \{\
- . as k\\n(Ef \& \&
- . \}
- . \}
- . Sb \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- . \}
- .\}
- ..
- .de pB
- .hy 0
- .ie \\n(.$==0 .tm Sick Logic: macro pB
- .el \{\
- . ie \\n(pQ>=1 .nr pQ \\n(pQ+1
- . el \{\
- . mN \\$1
- . if \\n(mN .nr pQ \\n(pQ+1
- . \}
- . rZ \\$1
- . ie \\n(rZ .as f3 \\$1
- . el \{\
- . ie \\n(pQ<1 .as y\\n(pQ \\$1
- . el .as y\\n(pQ \\$1
- . \}
- . if \\n(.$>1 \{\
- . rZ \\$2
- . if \\n(rZ==0 \{\
- . if \\n(pQ<1 \{\
- . as y\\n(pQ \& \&
- . \}
- . \}
- . pB \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- . \}
- .\}
- ..
- .de aQ
- .hy 0
- .ie \\n(.$==0 .tm Bad Syntax: .Aq
- .el \{\
- . ie \\n(aQ>=1 .nr aQ \\n(aQ+1
- . el \{\
- . mN \\$1
- . if \\n(mN .nr aQ \\n(aQ+1
- . \}
- . rZ \\$1
- . ie \\n(rZ .as aZ \\$1
- . el \{\
- . ie \\n(aQ<1 .as a\\n(aQ \\$1
- . el .as a\\n(aQ \\$1
- . \}
- . if \\n(.$>1 \{\
- . rZ \\$2
- . if \\n(rZ==0 \{\
- . if \\n(aQ<1 \{\
- . as a\\n(aQ \& \&
- . \}
- . \}
- . aQ \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- . \}
- .\}
- ..
- .\" Angle Bracket Quoted Items
- .de Aq
- .nr aQ 0
- .ie \\n(.$==0 \{\
- . ie "\\*(iM"" \&<\&>
- . el .as f1 \&<\&>
- .\}
- .el \{\
- . ie "\\*(iM"" \{\
- . ds f1 \&<
- . ds iM Aq
- . \}
- . el .as f1 \&<
- . aQ \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
- . ie \\n(aQ>0 .\\*(a1 \\*(a2 \\*(a3 \\*(a4 \\*(a5 \\*(a6 \\*(a7 \\*(a8
- . el .as f1 \\*(a0
- . as f1 \&>
- . if !"\\*(aZ"" .as f1 \\*(aZ
- . if "\\*(iM"Aq" \{\
- \&\\*(f1
- . ds f1
- . ds iM
- . \}
- . ds aZ
- . rm a0 a1 a2 a3 a4 a5 a6 a7 a8
- . nr aQ 0
- .\}
- ..
- .\" macro Name test, return macro register value if true
- .if \n(.g .ig
- .de mN
- .nr mN 0
- .sW \\$1
- .if \\n(sW==2 \{\
- . if \\n(\\$1 .nr mN \\n(\\$1
- .\}
- ..
- .if !\n(.g .ig
- .de mN
- .nr mN 0
- .if \A'\\$1' \{\
- . sW \\$1
- . if \\n(sW==2 \{\
- . if \\n(\\$1 .nr mN \\n(\\$1
- . \}
- .\}
- ..
- .\" Punctuation test (using z registers), return 1 if true
- .if \n(.g .ig
- .de rZ
- .nr rZ 0
- .sW \\$1
- .if \\n(sW==1 \{\
- . if \\n(z\\$1==1 \{\
- . nr rZ 1
- . \}
- .\}
- ..
- .if !\n(.g .ig
- .de rZ
- .nr rZ 0
- .if \A'\\$1' \{\
- . sW \\$1
- . if \\n(sW==1 \{\
- . if \\n(z\\$1==1 \{\
- . nr rZ 1
- . \}
- . \}
- .\}
- ..
- .\"
- .\" sW returns number of characters in a string
- .if t \{\
- .nr fW \w'\fC,'
- .de sW
- .nr sW \w'\fC\\$1'
- .\}
- .if n \{\
- .nr fW \w'0'
- .de sW
- .nr sW \w'\\$1'
- .\}
- .ie \\n(sW>=\\n(fW \{\
- . ie \\n(sW%\\n(fW .nr sW (\\n(sW/\\n(fW)+1
- . el .nr sW \\n(sW/\\n(fW
- .\}
- .el .nr sW 0
- ..
- .\" Option Expression -
- .\" TODO - add line overflow check (right!)
- .nr eP 0
- .ds e1
- .nr oE 0
- .nr hP 0
- .ds hP
- .nr Ep 0
- .de Op
- .hy 0
- .if "\\*(iM"" \{\
- . ds iM Op
- . ds f1 \&
- .\}
- .as f1 \&\\*(lB
- .\" .tm Op: \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- .dO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- .ie !"\\$1"Cx" .oE
- .el .nr oE \\n(oE+1
- ..
- .\"
- .\" just for mike, with every bite of garlic in mind (oops, i mean burp).
- .\" dO: go dOwn an argument vector and test each argument to see if
- .\" a macro name or punctuation. stash in respective place along
- .\" with its arguments.
- .nr oO 0
- .nr oP 0
- .nr aO 0
- .de dO
- .mN \\$1
- .ie \\n(mN \{\
- . if \\n(oP \{\
- . if \\n(hP \{\
- . nr oZ 1
- . oZ
- . Oz
- . \}
- . if \\n(e1==1 \{\
- .\\*(e1 \\*(e2 \\*(e3 \\*(e4 \\*(e5 \\*(e6 \\*(e7 \\*(e8 \\*(e9
- . \}
- . uO
- . if !(\\n(oO:\\n(aO) .as f1 \& \&
- . \}
- . ie "\\$1"Op" \{\
- . as f1 \&\\*(lB
- . nr aO \\n(aO+1
- . \}
- . el \{\
- . nr eP \\n(eP+1
- . ds e\\n(eP \\$1
- . nr e\\n(eP 1
- . \}
- .\}
- .el \{\
- .\" .tm dO: $1: \\$1: eP \\n(eP e[\\n(eP]: \\*(e\\n(ePEE
- . rZ \\$1
- . ie \\n(rZ \{\
- .\" .tm dO:rZ: $1: \\$1: eP \\n(eP e[\\n(eP]: \\*(e\\n(eP
- . nr hP \\n(hP+1
- . ds h\\n(hP \\$1
- . \}
- . el \{\
- .\" .tm dO:word $1: \\$1: eP \\n(eP e[\\n(eP]: \\*(e\\n(ePEE
- . if \\n(eP==0:\\n(e\\n(eP==1 .nr eP \\n(eP+1
- . if \\n(eZ .as e\\n(eP \& \&
- . as e\\n(eP " \&\\$1
- .\" . ds e\\n(eP \&\\$1
- . nr eZ \\n(eZ+1
- . \}
- .\}
- .nr oP 1
- .ie \\n(.$>1 \{\
- . dO \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- .\}
- .el \{\
- . ie \\n(e1 \{\
- .\\*(e1 \\*(e2 \\*(e3 \\*(e4 \\*(e5 \\*(e6 \\*(e7 \\*(e8 \\*(e9
- . \}
- . el \{\
- . as f1 \\*(e1
- . \}
- .\}
- ..
- .\" handle old style arguments such as the arg -Idir
- .\" in adb, .Oo is a toggle.
- .de Oo
- .ie \\n(oO .nr oO 0
- .el .nr oO 1
- ..
- .\" stash punctuation
- .de oZ
- .if \\n(hP>=\\n(oZ \{\
- . nr eP \\n(eP+1
- . ds e\\n(eP \\*(h\\n(oZ
- . nr oZ \\n(oZ+1
- . oZ
- .\}
- ..
- .\" clean up punctuation vector
- .de Oz
- .if \\n(hP>0 \{\
- . rm h\\n(hP
- . nr hP \\n(hP-1
- . Oz
- .\}
- ..
- .\" uO: go back up created vector cleaning it up along the way
- .de uO
- .if \\n(eP>0 \{\
- . rm e\\n(eP
- . rr e\\n(eP
- . nr eP \\n(eP-1
- . nr oP 0
- . nr eZ 0
- . uO
- .\}
- ..
- .\" option end
- .de oE
- .uO
- .ie \\n(hP \{\
- . as f1 \\*(rB\\*(h1\\*(h2\\*(h3
- . Oz
- . nr oZ 0
- .\}
- .el \{\
- . as f1 \\*(rB
- .\}
- .ie "\\*(iM"Op" \{\
- . if \\n(aO .aO
- .if t \{\
- . if (\\n(.lu-\\n(.ku-\\n(.ou-(2*\\n(fWu))<\w'\fC\\*(f1'u .br
- .\}
- .if n \{\
- . nr aa \w'\\*(f1'u
- .\" . nr qq \\n(.lu-\\n(.ku-\\n(.ou
- .\" \&aa == \\n(aa, f1==\\*(f1, qq==\\n(qq
- . if (\\n(.lu-\\n(.ku-\\n(.ou-\\n(aau)<=(8*\\n(fWu) .br
- .\}
- \&\\*(f1
- . ds iM
- . ds f1
- . hy
- .\}
- .el .nr oE \\n(oE-1
- ..
- .de aO
- .as f1 \\*(rB
- .nr aO \\n(aO-1
- .if \\n(aO >0 .aO
- ..
- .\"
- .de Xr
- .if \\n(.$<=1 \{\
- . ie \\n(.$==1 \{\
- . if !"\\*(iM"" .as f1 \&\\*(xR\\$1\fP
- . if "\\*(iM"" \&\\*(xR\\$1\fP
- . \}
- . el .tm Xr Usage: .Xr manpage_name [section#] \\*(Pu
- .\}
- .if \\n(.$==2 \{\
- . rZ \\$2
- . ie "\\*(iM"" \{\
- . ie \\n(rZ \&\\*(xR\\$1\fP\\$2
- . el \&\\*(xR\\$1\fP(\\$2)
- . \}
- . el \{\
- . ie \\n(rZ .as f1 \&\\*(xR\\$1\fP\\$2
- . el .as f1 \&\\*(xR\\$1\fP(\\$2)
- . \}
- .\}
- .if \\n(.$>=3 \{\
- . rZ \\$2
- . ie \\n(rZ \{\
- . ie !"\\*(iM"" .as f1 \&\\*(xR\\$1\fP\\$2\\$3\\$4\\$5\\$6\\$7\\$8
- . el \&\\*(xR\\$1\fP\\$2\\$3\\$4\\$5\\$6\\$7\\$8
- . \}
- . el \{\
- . rZ \\$3
- . ie \\n(rZ \{\
- . if !"\\*(iM"" \{\
- . as f1 \&\\*(xR\\$1\fP(\\$2)\\$3\\$4\\$5\\$6\\$7\\$8
- . \}
- . if "\\*(iM"" \{\
- \&\\*(xR\\$1\fP(\\$2)\\$3\\$4\\$5\\$6\\$7\\$8
- . \}
- . \}
- . el \{\
- . tm rZ = \\n(rZ the arg is \\$3
- . tm Xr-XX Usage: .Xr manpage_name [section#] \\*(Pu
- . \}
- . \}
- .\}
- ..
- .\"
- .\"
- .de Ex
- .tm Ex defunct, Use .Dl: \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- ..
- .\" Display (one) Line of text.
- .de Dl
- .ie "\\*(iM"" \{\
- ' ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i
- . in \\n(.iu+\\n(Dsu
- . mN \\$1
- . ie \\n(mN .\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- . el \{\
- . nr cF \\n(.f
- .\" Literal font is none specified
- \&\\*(lI\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- . ft \\n(cF
- . \}
- . in \\n(.iu-\\n(Dsu
- .\}
- .el \{\
- . mN \\$1
- . ie \\n(mN .\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
- . el \{\
- . nr cF \\n(.f
- . ds f1 \&\\*(lI\\&\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
- . as f1 \&\f\\n(cF
- . \}
- .\}
- ..
- .\"
- .\"
- .\" user set Tagged Paragraph Width (used in both Dp and Tp)
- .de Tw
- .ie \\n(.$==0 \{\
- . nr aa 0
- .\}
- .el \{\
- . mN \\$1
- . ie \\n(sW>2 \{\
- . nr tW (\\n(sW+3)*\\n(fWu)
- . \}
- . el \{\
- . ie \\n(mN .nr tW \\n(mN
- . el .nr tW \\$1
- . \}
- . nr tF 1
- .\}
- ..
- .\"
- .de Dw
- .Tw \\$1
- ..
- .\"
- .de Di
- .ie \\n(.$==0 \{\
- . nr tI \\n(Dsu
- .\}
- .el \{\
- . sW \\$1
- . if \\n(sW>=2 \{\
- . nr tI \\$1u
- . \}
- . if \\n(sW<2 \{\
- . if "\\$1"L" \{\
- . nr tI 0
- . \}
- . \}
- .\}
- ..
- .\" tagged paragraph
- .\" initialize baby stack variables
- .nr np 0
- .nr p1 0
- .ds s\n(np
- .\"
- .de Tp
- .ie "\\$1"" .pE p s np
- .el \{\
- . ds iM Tp
- . mN \\$1
- . ie \\n(tF \{\
- . ds tC Tw
- . nr tC 1
- . nr tF 0
- . \}
- . el \{\
- . if !"Tw"\\*(s\\n(np" \{\
- . ie \\n(mN \{\
- . ds tC \\$1
- . nr tW \\n(mN
- . \}
- . el \{\
- . ds tC Tx
- . nr tW \\n(Tx
- . \}
- . if !"\\*(tC"\\*(s\\n(np" .nr tC 1
- . \}
- . \}
- . sp \\n(vVu
- . if !\\n(cR .ne 2
- . if \\n(tC \{\
- . nr np \\n(np+1
- . nr p\\n(np \\n(tW
- . ds s\\n(np \\*(tC
- . nr tC 0
- . ds tC
- . in \\n(.iu+\\n(p\\n(npu
- . \}
- . ie \\n(mN \{\
- . ds f1
- . \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- . if !"\\$1"Cx" .pT st p np
- . \}
- . el \{\
- . br
- . ev 1
- . fi
- . di Td
- \&\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- . br
- . di
- . ev
- . na
- . ds tD \\*(Td\\
- . pT di p np
- . \}
- .\}
- ..
- .\"
- .\"
- .\" Complex Expression Macro
- .\"
- .\" TODO: add length across line boundary check (like Li)
- .de Cx
- .hy 0
- .ie \\n(.$==0 \{\
- . if "\\*(iM"Cx" \{\
- . ds iM
- . if \\n(oE .oE
- \&\\*(f1
- . ds f1
- . \}
- . if "\\*(iM"Tp" .pT st p np
- . if "\\*(iM"Dp" .pT st q mp
- .\}
- .el \{\
- . if "\\*(iM"" \{\
- . ds iM Cx
- . ds f1 \&
- . \}
- . mN \\$1
- .\" Here are the args: `\\$1' `\\$2' `\\$3' `\\$4'
- . ie \\n(mN .\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- . el \{\
- . as f1 \&\\$1
- . if \\n(.$>1 .Cx \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- . \}
- .\}
- ..
- .\" Prefix string in default font to content specified string
- .de Pf
- .Cx \\$1
- .\\$2 \\$3 \\$4 \\$5
- .Cx
- ..
- .\" Suffix string in default font to content specified string
- .de Sf
- .Cx \\$1 \\$2
- .Cx \\$3
- .Cx
- ..
- .\" Simple Option Begin
- .de Ob
- .hy 0
- .ie "\\*(iM"" \{\
- . ev 2
- . fi
- . di oB
- .\}
- .el \{\
- .tm shouldn't be here
- . as f1 \&[
- . mN \\$1
- . ie \\n(mN .\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- . el \{\
- . as f1 \&\\$1
- . if \\n(.$>1 .Oc \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- . \}
- .\}
- ..
- .de Oc
- .as f1 \&\\$1
- .if \\n(.$>1 .Oc \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- ..
- .de Oe
- .hy 0
- .ie "\\*(iM"" \{\
- . br
- . di
- . ev
- . ds bO \\*(oB\\
- \&[\\*(bO\&]
- .\}
- .el \{\
- . as f1 \&]
- .\}
- ..
- .\" White space for Cx
- .de Ws
- .Cx \&\ \&
- ..
- .\" tagged paragraph
- .\" initialize baby stack variables
- .nr mp 0
- .nr q1 0
- .ds r\n(np
- .\"
- .\" Complex Dp tag
- .de Dc
- .Dp Cx \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
- ..
- .\" Complex Tp tag
- .de Tc
- .Tp Cx \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
- ..
- .\" Tag with a flag and an argument with a space
- .de Ta
- .if "\\$2"" \{\
- . Tp Fl \\$1
- .\}
- .el \{\
- . Tp Fl \\$1
- . Cx \&\ \&
- . Ar \\$2 \\$3
- . Cx
- .\}
- ..
- .de Da
- .Dp Cx Fl \\$1
- .Ws
- .Ar \\$2 \\$3
- .Cx
- ..
- .de To
- .Tp Cx Fl \\$1
- .Ar \\$2 \\$3
- .Cx
- ..
- .de Do
- .Dp Cx Fl \\$1
- .Ar \\$2 \\$3
- .Cx
- ..
- .\" Blended tag toggle
- .de Bt
- .ie \\n(tP==0 .nr tP 1
- .el .nr tP 0
- ..
- .\" Bullet paragraph
- .de Bu
- .Tp Sy \&\(bu
- ..
- .\" Display tagged paragraph
- .de Dp
- .ie "\\$1"" \{\
- . pE q r mp
- . sp \\n(vVu
- .\}
- .el \{\
- . ds iM Dp
- . mN \\$1
- . ie \\n(tF \{\
- . ds tC Tw
- . nr tC 1
- . nr tF 0
- . \}
- . el \{\
- . if !"Tw"\\*(r\\n(mp" \{\
- . ie \\n(mN \{\
- . ds tC \\$1
- . nr tW \\n(mN
- . \}
- . el \{\
- . ds tC Tx
- . nr tW \\n(Tx
- . \}
- . if !"\\*(tC"\\*(r\\n(mp" .nr tC 1
- . \}
- . \}
- . if !\\n(cR .ne 2
- . if \\n(tC \{\
- . nr mp \\n(mp+1
- . nr q\\n(mp \\n(tW
- . ds r\\n(mp \\*(tC
- . nr tC 0
- . ds tC
- . ie \\n(tIu==\\n(Dsu .nr i\\n(mp \\n(Dsu
- . el \{\
- . nr i\\n(mp \\n(tIu
- . nr tI \\n(Dsu
- . \}
- . in \\n(.iu+\\n(i\\n(mpu
- . sp \\n(vVu
- . in \\n(.iu+\\n(\\q\\n(mpu
- . \}
- . ie \\n(mN \{\
- . \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- . if !"\\$1"Cx" .pT st q mp
- . \}
- . el \{\
- . br
- . ev 1
- . fi
- . di Td
- \&\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- . br
- . di
- . ev
- . na
- . ds tD \\*(Td\\
- . pT di q mp
- . \}
- .\}
- ..
- .\"
- .\" .pE number_stack string_stack counter
- .de pE
- .ie "\\$3"mp" \{\
- . in \\n(.iu-(\\n(\\$1\\n(\\$3u)-(\\n(i\\n(mpu)
- . rr i\\n(mp
- .\}
- .el .in \\n(.iu-\\n(\\$1\\n(\\$3u
- .\" .in \\n(.iu-\\n(\\$1\\n(\\$3u
- .if \\n(\\$3<=0 .tm Extraneous call .Tp or .Dp
- .rr \\$1\\n(\\$3
- .rm \\$2\\n(\\$3
- .nr \\$3 \\n(\\$3-1
- .ds iM
- ..
- .\"
- .\" .pT [st or di] number_stack counter
- .de pT
- .ie "\\$1"st" \{\
- . nr bb \\n(\\$2\\n(\\$3u
- . ti -\\n(bbu
- . ie (\\n(\\$2\\n(\\$3u-2n)<=\w'\\*(f1'u \{\&\\*(f1\\*(tP
- . if \\n(tP==0 .br
- . \}
- . el \\*(f1\h'|\\n(\\$2\\n(\\$3u'\c
- .\}
- .el \{\
- . ti -\\n(\\$2\\n(\\$3u
- . ie (\\n(\\$2\\n(\\$3u-2n)<=\\n(dlu \{\&\\*(tD\\*(tP
- . if !\\n(tP .br
- . \}
- . el \\*(tD\h'|\\n(\\$2\\n(\\$3u'\c
- . if t 'ad
- .\}
- . ds iM
- . ds f1
- 'fi
- ..
- .\"
- .\" The new SH
- .\"
- .de Sh
- .\" set Sh state off, check for list state before calling indent (.In)
- .nr nS 0
- .nr sE 0
- .ie "\\$1"NAME" \{\
- .\" name state on, housekeep (headers & footers)
- . hK
- ' in 0
- .\}
- .el \{\
- . if "\\$1"SYNOPSIS" .nr nS 1
- . in 0
- .\}
- .pL
- 'sp
- .ns
- .ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i
- .if !\\n(cR .ne 3
- 'fi
- \&\fB\\$1 \|\\$2 \|\\$3 \|\\$4 \|\\$5 \|\\$6 \|\\$7 \|\\$8 \|\\$9
- \&\fP\&
- .in \\n(.iu+\\n(Tiu
- .if "\\$1"SEE" .nr sE 1
- .ns
- ..
- .\"
- .\" Nd minus sign for an en dash used in .Sh Name
- .de Nd
- \&\-\& \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- ..
- .de Ss
- .sp
- .ti -.25i
- \&\fB\\$1 \|\\$2 \|\\$3 \|\\$4 \|\\$5 \|\\$6 \|\\$7 \|\\$8 \|\\$9
- \&\fP\&
- .ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i
- .if !\\n(cR .ne 2
- .br
- ..
- .\" .if "\\$1"Ss" .in \\n(.iu+\\n(sIu
- .\"..
- .\"
- .\"
- .\" Column Macro
- .\"
- .hy 0
- .de Cw
- .ie \\n(.$==0 \{\
- . br
- . in \\n(.iu-\\n(eWu
- . ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i
- .\}
- .el \{\
- . Pp
- . if \\n(.$==1 \{\
- . ta \w'\\$1 'u
- . nr eW \w'\\$1 'u
- ' in \\n(.iu+\\n(eWu
- . \}
- . if \\n(.$==2 \{\
- . ta \w'\\$1 'u +\w'\\$2 'u
- . nr eW \w'\\$1 'u+\w'\\$2 'u
- ' in \\n(.iu+\\n(eWu
- . \}
- . if \\n(.$==3 \{\
- . ta \w'\\$1 'u +\w'\\$2 'u +\w'\\$3 'u
- . nr eW \w'\\$1 'u+\w'\\$2 'u+\w'\\$3 'u
- ' in \\n(.iu+\\n(eWu
- . \}
- . if \\n(.$==4 \{\
- . ta \w'\\$1 'u +\w'\\$2 'u +\w'\\$3 'u +\w'\\$4 'u
- . nr eW \w'\\$1 'u+\w'\\$2 'u+\w'\\$3 'u +\w'\\$4 'u
- ' in \\n(.iu+\\n(eWu
- . \}
- . if \\n(.$==5 \{\
- .ta \w'\\$1 'u +\w'\\$2 'u +\w'\\$3 'u +\w'\\$4 'u +\w'\\$5 'u
- .nr eW \w'\\$1 'u +\w'\\$2 'u +\w'\\$3 'u +\w'\\$4 'u +\w'\\$5 'u
- ' in \\n(.iu+\\n(eWu
- . \}
- .\}
- ..
- .de Cl
- .ti -\\n(eWu
- .mN \\$1
- .ie \\n(mN .\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- .el \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- ..
- .nr dQ 0
- .de Ds
- .ie !"\\$1"" \{\
- . mN d\\$1
- . if \\n(mN \{\
- . nr dQ \\n(dQ+1
- . d\\$1
- . \}
- .\}
- .el .br
- .nf
- ..
- .de Df
- .ie !"\\$1"" \{\
- . mN d\\$1
- . if \\n(mN \{\
- . nr dQ \\n(dQ+1
- . d\\$1
- . \}
- .\}
- .el .br
- ..
- .de Dn
- \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- .nf
- ..
- .de dI
- .nr d\\n(dQ \\n(dIu
- .in \\n(.iu+\\n(dIu
- ..
- .de dC
- .nr d\\n(dQ (\\n(.l-\\n(.i)/4u
- .in \\n(.iu+\\n(d\\n(dQu
- ..
- .de dR
- .nr d\\n(dQ (\\n(.l/3)u
- .in \\n(.iu+\\n(d\\n(dQu
- ..
- .de dL
- .nr aa 0
- ..
- .de De
- .br
- .if \\n(d\\n(dQ \{\
- . in \\n(.iu-\\n(d\\n(dQu
- . rr d\\n(dQ
- . nr dQ \\n(dQ-1
- .\}
- .fi
- ..
- .\"
- .de Fn
- .ie \\n(.$==0 \{\
- . tm Usage: .Fn function_name function_arg(s) ... \\*(Pu
- .\}
- .el \{\
- . nr cF \\n(.f
- . ie \\n(.$==1 .ds f1 \&\\*(nM\\$1\fP\\*(lP\fP\\*(rP\fP
- . el \{\
- . ds f1 \\*(nM\\$1\fP\\*(lP
- . nr aa 0
- . rC \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
- . \}
- . if "\\*(iM"" \{\\&\\*(f1
- . ds f1
- . \}
- .\}
- ..
- .\"
- .de rC
- .rZ \\$1
- .ie \\n(rZ \{\
- . as f1 \f\\n(cF\\*(rP\f\\n(cF\\$1\\$2\\$3\\$4\\$5\\$6\\$7
- .\}
- .el \{\
- . ie \\n(aa .as f1 \fP, \\*(aR\\$1
- . el .as f1 \\*(aR\\$1
- . nr aa 1
- . ie \\n(.$>1 .rC \\$2 \\$3 \\$4 \\$5 \\$6 \\$7
- . el .as f1 \fP\\*(rP\fP
- .\}
- ..
-