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] [ ...] (#\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] [ ...] (#\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