From 055e90338651327e06751df3f4c223381901fa5a Mon Sep 17 00:00:00 2001 From: "Andrey A. Chernov" Date: Tue, 17 Jan 1995 17:51:52 +0000 Subject: [PATCH] Add missing file --- gnu/usr.bin/groff/tmac/tmac.doc.old | 1858 +++++++++++++++++++++++++++ 1 file changed, 1858 insertions(+) create mode 100644 gnu/usr.bin/groff/tmac/tmac.doc.old diff --git a/gnu/usr.bin/groff/tmac/tmac.doc.old b/gnu/usr.bin/groff/tmac/tmac.doc.old new file mode 100644 index 000000000000..51a0ec0053a5 --- /dev/null +++ b/gnu/usr.bin/groff/tmac/tmac.doc.old @@ -0,0 +1,1858 @@ +.\" +.\" 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 +.\} +..