l \{\
.tm1 "Usage: Ta must follow column entry: e.g.
.tm1 "         .It column_string [Ta [column_string ...]] (#\n[.c])
.\}
..
.de Dl
.ta T .5i
.in +\n[display-indent]u
.ie \n[arg-limit] \{\
.tm Usage: .Dl not callable by other macros (#\n[.c])
.reset-args
.\}
.el \{\
.ie \n[.$] \{\
.ds macro-name Dl
.parse-args \$@
.nr arg-ptr 1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.nop \*[Li-font]\c
.print-recursive
.\}
.el \
.tm Usage: .Dl argument ... (#\n[.c])
.\}
.in -\n[display-indent]u
..
.de D1
.ta T .5i
.in +\n[display-indent]u
.ie \n[arg-limit] \{\
.tm Usage: .D1 not callable by other macros (#\n[.c])
.reset-args
.\}
.el \{\
.ie \n[.$] \{\
.ds macro-name D1
.parse-args \$@
.nr arg-ptr 1
.print-recursive
.\}
.el \
.tm Usage: .D1 argument ... (#\n[.c])
.\}
.in -\n[display-indent]u
..
.de Vt
.if !\n[arg-limit] \{\
.ie \n[.$] \{\
.ds macro-name Vt
.parse-args \$@
.\}
.el \
.tm Usage: .Vt variable_type ... (#\n[.c])
.\}
.if !\n[arg-limit] \
.return
.nr arg-ptr +1
.if (\n[arg-limit] < \n[arg-ptr]) \{\
.tm Usage: .Vt variable_type ... (#\n[.c])
.reset-args
.return
.\}
.if \n[in-synopsis-section] \{\
.if \n[have-decl] \{\
.paragraph
.nr have-decl 0
.\}
.if \n[have-func] \{\
.ie \n[have-var] \
.br
.el \
.paragraph
.\}
.nr have-var 1
.\}
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.nop \*[Ft-font]\c
.print-recursive
.if \n[in-synopsis-section] \{\
.ie \n[have-old-func] \
.nop \*[soft-space]\c
.el \
.br
.\}
..
.nr is-func 0
.de Ft
.if !\n[arg-limit] \{\
.ie \n[.$] \{\
.ds macro-name Ft
.parse-args \$@
.\}
.el \
.tm Usage: .Ft function_type ... (#\n[.c])
.\}
.if !\n[arg-limit] \
.return
.nr arg-ptr +1
.if (\n[arg-limit] < \n[arg-ptr]) \{\
.tm Usage: .Ft function_type ... (#\n[.c])
.reset-args
.return
.\}
.if \n[in-synopsis-section] \{\
.if (\n[have-func] : \n[have-decl]) \{\
.paragraph
.nr have-decl 0
.nr have-var 0
.\}
.if \n[have-var] \{\
.paragraph
.nr have-var 0
.\}
.nr is-func 1
.\}
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.nop \*[Ft-font]\c
.print-recursive
..
.nr have-old-func 0
.de Ot
.nr have-old-func 1
.if \n[in-synopsis-section] \{\
.if (\n[have-func] : \n[have-decl]) \{\
.paragraph
.nr have-decl 0
.nr have-var 0
.\}
.if \n[have-var] \{\
.paragraph
.nr have-var 0
.\}
.nr is-func 1
.\}
.if \n[.$] \
.nop \*[Ft-font]\$*\c
.nop \ \f[]\c
..
.de Fa
.if !\n[arg-limit] \{\
.ie \n[.$] \{\
.ds macro-name Fa
.parse-args \$@
.\}
.el \
.tm Usage: .Fa function_arguments ... (#\n[.c])
.\}
.ie \n[func-arg-count] \
.do-func
.el \{\
.nr arg-ptr +1
.if (\n[arg-limit] >= \n[arg-ptr]) \{\
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.nop \*[Fa-font]\c
.print-recursive
.if \n[in-synopsis-section] \
.if \n[have-func] \
.br
.\}\}
..
.nr func-arg-count 0
.ds func-arg
.nr num-func-args 0
.nr func-args-processed 0
.de do-func
.if (\n[arg-limit] <= \n[arg-ptr]) \{\
.reset-args
.return
.\}
.nr arg-ptr +1
.ds func-arg
.nr num-func-args 0
.nr func-args-processed 0
.build-func-string \*[arg\n[arg-ptr]]
.if (\n[num-func-args] > 1) \
.ds arg\n[arg-ptr] "\*[func-arg]
.if (\n[func-arg-count] > 1) \{\
.nop \f[\n[curr-font]]\s[\n[curr-size]u]\|\c
.if !"\*[arg\n[arg-ptr]]"/*" \
.if !"\*[arg\n[arg-ptr]]"*/" \
.nop ,\)\c
.nop \)\*[space\n[arg-ptr]]\*[Fa-font]\c
.nop \)\*[arg\n[arg-ptr]]\f[]\s[0]\c
.\}
.if (\n[func-arg-count] == 1) \{\
.nop \)\*[Fa-font]\*[arg\n[arg-ptr]]\c
.nop \f[]\s[0]\c
.\}
.nr func-arg-count +1
.do-func
..
.nr have-func 0
.de Fn
.if !\n[arg-limit] \{\
.ie \n[.$] \{\
.ds macro-name Fn
.parse-args \$@
.\}
.el \
.tm Usage: .Fn function_name [function_arg] ... (#\n[.c])
.\}
.if !\n[arg-limit] \
.return
.if \n[in-synopsis-section] \{\
.ie \n[is-func] \{\
.br
.nr have-var 0
.nr have-decl 0
.nr is-func 0
.\}
.el \{\
.if \n[have-func] \{\
.paragraph
.nr have-var 0
.nr have-decl 0
.\}\}
.if \n[have-decl] \{\
.paragraph
.nr have-var 0
.\}
.if \n[have-var] \{\
.paragraph
.nr have-decl 0
.\}
.nr have-func 1
.nr is-func 0
.br
.if !\n[indent-synopsis] \
.nr indent-synopsis (4u * \n[fixed-width]u)
.if !\n[indent-synopsis-active] \
.in +\n[indent-synopsis]u
.ti -\n[indent-synopsis]u
.\}
.nr arg-ptr +1
.print-prefixes
.if (\n[arg-limit] < \n[arg-ptr]) \{\
.tm Usage: .Fn function_name [function_arg] ... (#\n[.c])
.reset-args
.return
.\}
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.nop \*[Fn-font]\*[arg\n[arg-ptr]]\c
.nop \f[]\s[0]\*[lp]\)\c
.nr arg-ptr +1
.if (\n[arg-limit] >= \n[arg-ptr]) \{\
.if (\n[type\n[arg-ptr]] == 2) \{\
.nop \*[Fa-font]\c
.do-func-args
.nop \f[\n[curr-font]]\s[\n[curr-size]u]\c
.\}\}
.nop \)\*[rp]\)\c
.if \n[in-synopsis-section] \
.nop \);\)\c
.ie (\n[arg-limit] >= \n[arg-ptr]) \{\
.nr arg-ptr -1
.nop \)\*[space\n[arg-ptr]]\c
.nr arg-ptr +1
.print-recursive
.\}
.el \
.print-and-reset
.if \n[in-synopsis-section] \
.if !\n[indent-synopsis-active] \
.in -\n[indent-synopsis]u
..
.de do-func-args
.if \n[in-synopsis-section] \{\
.ds func-arg
.nr num-func-args 0
.nr func-args-processed 0
.build-func-string \*[arg\n[arg-ptr]]
.if (\n[num-func-args] > 1) \
.ds arg\n[arg-ptr] "\*[func-arg]
.\}
.nop \)\*[arg\n[arg-ptr]]\c
.nr arg-ptr +1
.if (\n[arg-limit] >= \n[arg-ptr]) \{\
.if (\n[type\n[arg-ptr]] == 2) \{\
.nr reg-ddfa (\n[arg-ptr] - 1)
.nop \f[\n[curr-font]]\s[\n[curr-size]u]\|\c
.if !"\*[arg\n[arg-ptr]]"/*" \
.if !"\*[arg\n[arg-ptr]]"*/" \
.nop ,\)\c
.nop \)\*[space\n[reg-ddfa]]\f[]\s[0]\|\c
.do-func-args
.\}\}
..
.nr saved-nesting-level 0
.nr in-func-enclosure 0
.de Fo
.if (\n[in-func-enclosure]) \{\
.tm mdoc error: .Fo/.Fc can't be nested (#\n[.c])
.return
.\}
.nr saved-nesting-level \n[nesting-level]
.nr in-func-enclosure 1
.if !\n[arg-limit] \{\
.ie \n[.$] \{\
.ds macro-name Fo
.parse-args \$@
.\}
.el \
.tm Usage: .Fo function_name (#\n[.c])
.\}
.if \n[in-synopsis-section] \{\
.ie \n[is-func] \{\
.br
.nr have-var 0
.nr have-decl 0
.nr is-func 0
.\}
.el \{\
.if \n[have-func] \{\
.paragraph
.nr have-var 0
.nr have-decl 0
.\}\}
.if \n[have-decl] \{\
.paragraph
.nr have-var 0
.\}
.if \n[have-var] \{\
.paragraph
.nr have-decl 0
.\}
.nr have-func 1
.nr is-func 0
.br
.if !\n[indent-synopsis] \
.nr indent-synopsis (4u * \n[fixed-width]u)
.\}
.box func-box
.ev func-env
.evc 0
.in 0
.nf
.nr arg-ptr +1
.print-prefixes
.if (\n[arg-limit] >= \n[arg-ptr]) \{\
.nr func-arg-count 1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.nop \*[Fn-font]\*[arg\n[arg-ptr]]\c
.nop \f[]\s[0]\*[lp]\)\c
.reset-args
.\}
..
.de Fc
.if !\n[in-func-enclosure] \{\
.tm mdoc warning: Extraneous .Fc (#\n[.c])
.return
.\}
.if \n[.$] \{\
.ds macro-name Fc
.parse-args \) \$@
.\}
.if !(\n[saved-nesting-level] == \n[nesting-level]) \
.tm mdoc warning: Unbalanced enclosure commands within .Fo/.Fc
.nr func-arg-count 0
.nr in-func-enclosure 0
.ie \n[in-synopsis-section] \
.nop \|\*[rp];\)
.el \
.nop \|\*[rp]\)
.br
.ev
.box
.chop func-box
.unformat func-box
.if \n[in-synopsis-section] \{\
.if !\n[indent-synopsis-active] \
.in +\n[indent-synopsis]u
.ti -\n[indent-synopsis]u
.\}
.nh
.nop \*[func-box]\c
.nr arg-ptr +1
.ie (\n[arg-limit] >= \n[arg-ptr]) \{\
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.print-recursive
.\}
.el \
.print-and-reset
.if \n[in-synopsis-section] \
.if !\n[indent-synopsis-active] \
.in -\n[indent-synopsis]u
..
.de build-func-string
.if !\n[num-func-args] \{\
.nr num-func-args \n[.$]
.nr func-args-processed 0
.ds func-arg
.\}
.nr func-args-processed +1
.as func-arg "\$1
.if (\n[func-args-processed] < \n[num-func-args]) \{\
.as func-arg "\*[hard-space]
.shift
.build-func-string \$@
.\}
..
.nr is-reference 0
.nr reference-count 0
.de Rs
.ie \n[.$] \
.tm Usage: .Rs (does not take arguments) (#\n[.c])
.el \{\
.nr is-reference 1
.reset-reference
.if \n[in-see-also-section] \
.paragraph
.nr reference-count 0
.\}
..
.de Re
.ie \n[.$] \
.tm Usage: .Re (does not take arguments) (#\n[.c])
.el \{\
.if !\n[is-reference] \{\
.tm mdoc warning: Extraneous .Re (#\n[.c])
.return
.\}
.print-reference
.reset-reference
.nr is-reference 0
.\}
..
.de reset-reference
.while (\n[author-count]) \{\
.ds author-name\n[author-count]
.nr author-count -1
.\}
.nr journal-count 0
.nr issue-count 0
.nr optional-count 0
.nr corporate-count 0
.nr report-count 0
.nr reference-title-count 0
.nr url-count 0
.nr volume-count 0
.nr city-count 0
.nr date-count 0
.nr page-number-count 0
.nr book-count 0
.nr publisher-count 0
.nr reference-count 0
.ds journal-name
.ds issue-name
.ds optional-string
.ds corporate-name
.ds report-name
.ds reference-title-name
.ds reference-title-name-for-book
.ds url-name
.ds volume-name
.ds city-name
.ds date
.ds page-number-string
.ds book-name
.ds publisher-name
..
.de finish-reference
.nr reference-count -\$1
.ie \n[reference-count] \
.nop \),
.el \
.nop \).
..
.de print-reference
.nh
.if \n[author-count] \{\
.print-reference-authors
.nr reference-count -\n[author-count]
.\}
.if \n[reference-title-count] \{\
.unformat reference-title-name
.chop reference-title-name
.unformat reference-title-name-for-book
.chop reference-title-name-for-book
.ie ((\n[journal-count] == 1) : (\n[book-count] == 1)) \{\
.nop \)\*[q]\)\*[reference-title-name-for-book]\)\*[q]\c
.finish-reference \n[reference-title-count]
.\}
.el \{\
.nop \*[reference-title-name]\c
.finish-reference \n[reference-title-count]
.\}\}
.if \n[book-count] \{\
.unformat book-name
.chop book-name
.nop \*[book-name]\c
.finish-reference \n[book-count]
.\}
.if \n[publisher-count] \{\
.unformat publisher-name
.chop publisher-name
.nop \*[publisher-name]\c
.finish-reference \n[publisher-count]
.\}
.if \n[journal-count] \{\
.unformat journal-name
.chop journal-name
.nop \*[journal-name]\c
.finish-reference \n[journal-count]
.\}
.if \n[report-count] \{\
.unformat report-name
.chop report-name
.nop \*[report-name]\c
.finish-reference \n[report-count]
.\}
.if \n[issue-count] \{\
.unformat issue-name
.chop issue-name
.nop \*[issue-name]\c
.finish-reference \n[issue-count]
.\}
.if \n[volume-count] \{\
.unformat volume-name
.chop volume-name
.nop \*[volume-name]\c
.finish-reference \n[volume-count]
.\}
.if \n[url-count] \{\
.unformat url-name
.chop url-name
.nop \*[url-name]\c
.finish-reference \n[url-count]
.\}
.if \n[page-number-count] \{\
.unformat page-number-string
.chop page-number-string
.nop \*[page-number-string]\c
.finish-reference \n[page-number-count]
.\}
.if \n[corporate-count] \{\
.unformat corporate-name
.chop corporate-name
.nop \*[corporate-name]\c
.finish-reference \n[corporate-count]
.\}
.if \n[city-count] \{\
.unformat city-name
.chop city-name
.nop \*[city-name]\c
.finish-reference \n[city-count]
.\}
.if \n[date-count] \{\
.unformat date
.chop date
.nop \*[date]\c
.finish-reference \n[date-count]
.\}
.if \n[optional-count] \{\
.unformat optional-string
.chop optional-string
.nop \*[optional-string]\c
.finish-reference \n[optional-count]
.\}
.if \n[reference-count] \
.tm mdoc warning: unresolved reference problem
.hy \n[hyphen-flags]
..
.ds str-dpra "and
.de print-reference-authors
.nr reg-dpra 1
.while (\n[reg-dpra] < \n[author-count]) \{\
.unformat author-name\n[reg-dpra]
.chop author-name\n[reg-dpra]
.ie (\n[author-count] > 2) \
.nop \)\*[author-name\n[reg-dpra]],
.el \
.nop \)\*[author-name\n[reg-dpra]]
.nr reg-dpra +1
.\}
.unformat author-name\n[reg-dpra]
.chop author-name\n[reg-dpra]
.if (\n[author-count] > 1) \
.nop \)\*[str-dpra]
.nop \)\*[author-name\n[reg-dpra]],
..
.nr author-count 0
.ds author-name0
.de %A
.if (\n[arg-limit] : (\n[.$] == 0)) \{\
.tm Usage: .%A author_name ... (#\n[.c])
.return
.\}
.nr author-count +1
.nr reference-count +1
.ds macro-name %A
.parse-args \$@
.nr arg-ptr +1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.box author-name\n[author-count]
.ev env-%A
.evc 0
.in 0
.nf
.do-references
..
.nr book-count 0
.ds book-name
.de %B
.if (\n[arg-limit] : (\n[.$] == 0)) \{\
.tm Usage: .%B book_name ... (#\n[.c])
.return
.\}
.if \n[is-reference] \{\
.nr book-count +1
.nr reference-count +1
.\}
.ds macro-name %B
.parse-args \$@
.nr arg-ptr +1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.ie \n[is-reference] \{\
.boxa book-name
.ev env-%B
.evc 0
.in 0
.nf
.nop \*[Em-font]\c
.do-references
.\}
.el \{\
.nop \*[Em-font]\c
.print-recursive
.\}
..
.nr city-count 0
.ds city-name
.de %C
.if (\n[arg-limit] : (\n[.$] == 0)) \{\
.tm Usage: .%C city_name ... (#\n[.c])
.return
.\}
.nr city-count +1
.nr reference-count +1
.ds macro-name %C
.parse-args \$@
.nr arg-ptr +1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.boxa city-name
.ev env-%C
.evc 0
.in 0
.nf
.do-references
..
.nr date-count 0
.ds date
.de %D
.if (\n[arg-limit] : (\n[.$] == 0)) \{\
.tm Usage: .%D date ... (#\n[.c])
.return
.\}
.nr date-count +1
.nr reference-count +1
.ds macro-name %D
.parse-args \$@
.nr arg-ptr +1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.boxa date
.ev env-%D
.evc 0
.in 0
.nf
.do-references
..
.nr publisher-count 0
.ds publisher-name
.de %I
.if (\n[arg-limit] : (\n[.$] == 0)) \{\
.tm Usage: .%I issuer/publisher_name ... (#\n[.c])
.return
.\}
.nr publisher-count +1
.nr reference-count +1
.ds macro-name %I
.parse-args \$@
.nr arg-ptr +1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.boxa publisher-name
.ev env-%I
.evc 0
.in 0
.nf
.nop \*[Em-font]\c
.do-references
..
.nr journal-count 0
.ds journal-name
.de %J
.if (\n[arg-limit] : (\n[.$] == 0)) \{\
.tm Usage: .%J journal_name ... (#\n[.c])
.return
.\}
.nr journal-count +1
.nr reference-count +1
.ds macro-name %J
.parse-args \$@
.nr arg-ptr +1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.boxa journal-name
.ev env-%J
.evc 0
.in 0
.nf
.nop \*[Em-font]\c
.do-references
..
.nr issue-count 0
.ds issue-name
.de %N
.if (\n[arg-limit] : (\n[.$] == 0)) \{\
.tm Usage: .%N issue_number ... (#\n[.c])
.return
.\}
.nr issue-count +1
.nr reference-count +1
.ds macro-name %N
.parse-args \$@
.nr arg-ptr +1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.boxa issue-name
.ev env-%N
.evc 0
.in 0
.nf
.do-references
..
.nr optional-count 0
.ds optional-string
.de %O
.if (\n[arg-limit] : (\n[.$] == 0)) \{\
.tm Usage: .%O optional_information ... (#\n[.c])
.return
.\}
.nr optional-count +1
.nr reference-count +1
.ds macro-name %O
.parse-args \$@
.nr arg-ptr +1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.boxa optional-string
.ev env-%O
.evc 0
.in 0
.nf
.do-references
..
.nr page-number-count 0
.ds page-number-string
.de %P
.if (\n[arg-limit] : (\n[.$] == 0)) \{\
.tm Usage: .%P page_number ... (#\n[.c])
.return
.\}
.nr page-number-count +1
.nr reference-count +1
.ds macro-name %P
.parse-args \$@
.nr arg-ptr +1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.boxa page-number-string
.ev env-%P
.evc 0
.in 0
.nf
.do-references
..
.nr corporate-count 0
.ds corporate-name
.de %Q
.if (\n[arg-limit] : (\n[.$] == 0)) \{\
.tm Usage: .%Q corporate_or_foreign_author ... (#\n[.c])
.return
.\}
.nr corporate-count +1
.nr reference-count +1
.ds macro-name %Q
.parse-args \$@
.nr arg-ptr +1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.boxa corporate-name
.ev env-%Q
.evc 0
.in 0
.nf
.do-references
..
.nr report-count 0
.ds report-name
.de %R
.if (\n[arg-limit] : (\n[.$] == 0)) \{\
.tm Usage: .%R reference_report ... (#\n[.c])
.return
.\}
.nr report-count +1
.nr reference-count +1
.ds macro-name %R
.parse-args \$@
.nr arg-ptr +1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.boxa report-name
.ev env-%R
.evc 0
.in 0
.nf
.do-references
..
.nr reference-title-count 0
.ds reference-title-name
.ds reference-title-name-for-book
.de %T
.if (\n[arg-limit] : (\n[.$] == 0)) \{\
.tm Usage: .%T reference_title ... (#\n[.c])
.return
.\}
.if \n[is-reference] \{\
.nr reference-title-count +1
.nr reference-count +1
.\}
.ds macro-name %T
.parse-args \$@
.nr arg-ptr +1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.ie \n[is-reference] \{\
.boxa reference-title-name-for-book
.ev env-%T
.evc 0
.in 0
.nf
.nop \*[No-font]\c
.do-references
.ds macro-name %T
.parse-args \$@
.nr arg-ptr +1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.boxa reference-title-name
.ev env-%T
.evc 0
.in 0
.nf
.nop \*[Em-font]\c
.do-references
.\}
.el \{\
.nop \*[Em-font]\c
.print-recursive
.\}
..
.nr url-count 0
.ds url-name
.nr volume-count 0
.ds volume-name
.de %U
.if (\n[arg-limit] : (\n[.$] == 0)) \{\
.tm Usage: .%U URL ... (#\n[.c])
.return
.\}
.nr url-count +1
.nr reference-count +1
.ds macro-name %U
.parse-args \$@
.nr arg-ptr +1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.boxa url-name
.ev env-%U
.evc 0
.in 0
.nf
.do-references
..
.de %V
.if (\n[arg-limit] : (\n[.$] == 0)) \{\
.tm Usage: .%V volume ... (#\n[.c])
.return
.\}
.nr volume-count +1
.nr reference-count +1
.ds macro-name %V
.parse-args \$@
.nr arg-ptr +1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.boxa volume-name
.ev env-%V
.evc 0
.in 0
.nf
.do-references
..
.de do-references
.if !\n[is-reference] \
.tm mdoc error: .\*[macro-name] found outside of .Rs ... .Re (#\n[.c])
.nr reg-ddr1 \n[type\n[arg-ptr]]
.ie (\n[reg-ddr1] == 1) \{\
.append-arg \c 3
.\*[arg\n[arg-ptr]]
.\}
.el \{\
.nop \)\*[arg\n[arg-ptr]]\c
.ie (\n[arg-limit] == \n[arg-ptr]) \{\
.br
.ev
.boxa
.reset-args
.\}
.el \{\
.nr reg-ddr \n[arg-ptr]
.nr arg-ptr +1
.nop \)\*[space\n[reg-ddr]]\c
.do-references
.\}\}
..
.de Hf
.ie ((\n[.$] == 1) & (\n[arg-limit] == 0)) \{\
.paragraph
.nop File:
.Pa \$1
.Bd -literal
.so \$1
.Ed
.paragraph
.\}
.el \
.Usage: .Hf file (#\n[.c])
..
.nr have-author 0
.de An
.if !\n[arg-limit] \{\
.ie \n[.$] \{\
.ie        "\$1"-nosplit" \
.nr in-authors-section 0
.el \{ .ie "\$1"-split" \
.nr in-authors-section 1
.el \{\
.ds macro-name An
.parse-args \$@
.\}\}\}
.el \{\
.tm1 "Usage: .An {-nosplit | -split}
.tm1 "       .An author_name ... (#\n[.c])
.\}\}
.if \n[in-authors-section] \{\
.ie \n[have-author] \
.br
.el \
.nr have-author 1
.\}
.if \n[arg-limit] \{\
.nr arg-ptr +1
.ie (\n[arg-limit] >= \n[arg-ptr]) \{\
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.print-recursive
.\}
.el \{\
.tm Usage: .An author_name ... (#\n[.c])
.reset-args
.\}\}
..
.ds str-Rv-std-prefix "The
.ds str-Rv-std-suffix "function returns the value\~0 if successful;
.as str-Rv-std-suffix " otherwise the value\~\-1 is returned and
.as str-Rv-std-suffix " the global variable \*[Va-font]errno\f[]
.as str-Rv-std-suffix " is set to indicate the error.
.ds str-Rv-stds-prefix "The
.ds str-Rv-stds-and    "and
.ds str-Rv-stds-suffix "functions return the value\~0 if successful;
.as str-Rv-stds-suffix " otherwise the value\~\-1 is returned and
.as str-Rv-stds-suffix " the global variable \*[Va-font]errno\f[]
.as str-Rv-stds-suffix " is set to indicate the error.
.ds str-Rv-std0 "Upon successful completion, the value\~0 is returned;
.as str-Rv-std0 " otherwise the value\~\-1 is returned and
.as str-Rv-std0 " the global variable \*[Va-font]errno\f[]
.as str-Rv-std0 " is set to indicate the error.
.de Rv
.if \n[arg-limit] \{\
.tm Usage: .Rv not callable by other macros (#\n[.c])
.reset-args
.return
.\}
.if !\n[.$] \{\
.tm Usage: .Rv [-std] [<function> ...] (#\n[.c])
.return
.\}
.if "\$1"-std" \{\
.nr reg-Rv \*[section]
.if ((\n[reg-Rv] < 2) : (\n[reg-Rv] > 3)) \
.tm Usage: .Rv -std in sections 2 and 3 only (#\n[.c])
.br
.shift
.ie (\n[.$] > 1) \{\
.nop \)\*[str-Rv-stds-prefix]
.nr reg-Rv 1
.while (\n[reg-Rv] < \n[.$]) \{\
.ie (\n[.$] > 2) \
.Fn \$\n[reg-Rv] ,
.el \
.Fn \$\n[reg-Rv]
.nr reg-Rv +1
.\}
.nop \)\*[str-Rv-stds-and]
.Fn \$\n[.$]
.nop \)\*[str-Rv-stds-suffix]
.\}
.el \{ .ie (\n[.$] == 1) \{\
.nop \)\*[str-Rv-std-prefix]
.Fn \$1
.nop \)\*[str-Rv-std-suffix]
.\}
.el \{\
.nop \)\*[str-Rv-std0]
.\}\}\}
..
.ds str-Ex-std-prefix "The
.ds str-Ex-std-suffix "utility exits\~0 on success,
.as str-Ex-std-suffix " and\~>0 if an error occurs.
.ds str-Ex-stds-prefix "The
.als str-Ex-stds-and str-Rv-stds-and
.ds str-Ex-stds-suffix "utilities exit\~0 on success,
.as str-Ex-stds-suffix " and\~>0 if an error occurs.
.de Ex
.if \n[arg-limit] \{\
.tm Usage: .Ex not callable by other macros (#\n[.c])
.reset-args
.return
.\}
.if !\n[.$] \{\
.tm Usage: .Ex [-std] [<utility> ...] (#\n[.c])
.return
.\}
.if "\$1"-std" \{\
.nr reg-Ex \*[section]
.if !((\n[reg-Ex] == 1) : (\n[reg-Ex] == 6) : (\n[reg-Ex] == 8)) \
.tm Usage: .Ex -std in sections 1, 6 and 8 only (#\n[.c])
.br
.shift
.ie (\n[.$] > 1) \{\
.nop \)\*[str-Ex-stds-prefix]
.nr reg-Ex 1
.while (\n[reg-Ex] < \n[.$]) \{\
.ie (\n[.$] > 2) \
.Nm \$\n[reg-Ex] ,
.el \
.Nm \$\n[reg-Ex]
.nr reg-Ex +1
.\}
.nop \)\*[str-Ex-stds-and]
.Nm \$\n[.$]
.nop \)\*[str-Ex-stds-suffix]
.\}
.el \{\
.nop \)\*[str-Ex-std-prefix]
.Nm \$1
.nop \)\*[str-Ex-std-suffix]
.\}\}
..
.de Mt
.Pa \$@
..
.de Lk
.ds str-Lk Sy \$@
.ie (\n[.$] > 1) \{\
.get-arg-type \$2
.ie (\n[arg-type] < 3) \{\
.Em \)\$2:
.ds str-Lk Sy "\$1"
.get-width "\$1"
.shift 2
.if \n[.$] \
.as str-Lk " \$@
.\}
.el \
.get-width "\$1"
.\}
.el \
.get-width "\$1"
.ie n \
.nr reg-Lk 26
.el \
.nr reg-Lk 38
.ie (\n[width] >= \n[reg-Lk]) \
.D1 \*[str-Lk]
.el \
.\*[str-Lk]
..
.de defunct-macro
.tmc mdoc error: .\$0 defunct
.if d \$0-usage \
.tmc , \*[\$0-usage]
.tm1 " (#\n[.c])
..
.als Db defunct-macro
.als Ds defunct-macro
.als Or defunct-macro
.ds Or-usage use `|'
.als Sf defunct-macro
.ds Sf-usage use .Pf or .Ns
.rn em e@
.de em
.tm1 "mdoc error: end-macro (.em) respecification is not allowed. (#\n[.c])
.tm1 "            Should this have been `.Em ...'?
.ab
..
.de empty-line
.if !\n[display-depth] \
.tm mdoc warning: Empty input line #\n[.c]
.sp
..
.blm empty-line
.ec
.if '\*[.T]'utf8' \{\
.rchar \- - ' `
.char \- \N'45'
.char  - \N'45'
.char  ' \N'39'
.char  ` \N'96'
.\}
.mso mdoc.local
