1 .\" $Id: mdoc.7,v 1.187 2011/05/21 15:55:42 schwarze Exp $
3 .\" Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
4 .\" Copyright (c) 2010 Ingo Schwarze <schwarze@openbsd.org>
6 .\" Permission to use, copy, modify, and distribute this software for any
7 .\" purpose with or without fee is hereby granted, provided that the above
8 .\" copyright notice and this permission notice appear in all copies.
10 .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11 .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12 .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13 .\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14 .\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18 .Dd $Mdocdate: May 21 2011 $
23 .Nd mdoc language reference
27 language is used to format
31 This reference document describes its syntax, structure, and
33 The reference implementation is
37 section describes compatibility with other troff \-mdoc implementations.
41 document follows simple rules: lines beginning with the control
44 are parsed for macros.
45 Text lines, those not beginning with the control character, are
46 interpreted within the scope of prior macros:
47 .Bd -literal -offset indent
48 \&.Sh Macro lines change control state.
49 Text lines are interpreted within the current state.
53 documents may contain only graphable 7-bit ASCII characters, the space
54 character, and, in certain circumstances, the tab character.
56 If the first character of a text line is a space, that line is printed
57 with a leading newline.
61 whether in a macro or text line, is ignored to the end of
63 A macro line with only a control character and comment escape,
66 Macro lines with only a control character and optional whitespace are
69 Within a macro line, the following terms are reserved:
71 .Bl -tag -width Ds -offset indent -compact
97 .Pq reserved-word vertical bar
100 For general use in macro lines, these can be escaped with a non-breaking
103 In text lines, these may be used as normal punctuation.
104 .Ss Special Characters
105 Special characters may occur in both macro and text lines.
106 Sequences begin with the escape character
108 followed by either an open-parenthesis
110 for two-character sequences; an open-bracket
112 for n-character sequences (terminated at a close-bracket
114 or a single one character sequence.
125 Terms may be text-decorated using the
127 escape followed by an indicator: B (bold), I (italic), R (Roman), or P
128 (revert to previous mode):
130 .Dl \efBbold\efR \efIitalic\efP
132 A numerical representation 3, 2, or 1 (bold, italic, and Roman,
133 respectively) may be used instead.
134 If a macro opens a font scope after calling
140 mode will be restored upon exiting the
148 which encourages semantic annotation.
149 .Ss Predefined Strings
152 also defined a set of package-specific
153 .Dq predefined strings ,
155 .Sx Special Characters ,
156 mark special output characters and strings by way of input codes.
157 Predefined strings are escaped with the slash-asterisk,
175 Whitespace consists of the space character.
176 In text lines, whitespace is preserved within a line; unescaped
177 trailing spaces are stripped from input (unless in a literal context).
178 Blank text lines, which may include whitespace, are only permitted
179 within literal contexts.
181 In macro lines, whitespace delimits arguments and is discarded.
182 If arguments are quoted, whitespace within the quotes is retained.
184 Macro arguments may be quoted with double-quotes to group
185 space-delimited terms or to retain blocks of whitespace.
186 A quoted argument begins with a double-quote preceded by whitespace.
187 The next double-quote not pairwise adjacent to another double-quote
188 terminates the literal, regardless of surrounding whitespace.
190 Note that any quoted text, even if it would cause a macro invocation
191 when unquoted, is considered literal text.
192 Thus, the following produces
194 .Bd -literal -offset indent
198 In text lines, quotes are regarded as opaque text.
200 Many macros support scaled widths for their arguments, such as
201 stipulating a two-inch list indentation with the following:
202 .Bd -literal -offset indent
206 The syntax for scaled widths is
207 .Sq Li [+-]?[0-9]*.[0-9]*[:unit:] ,
208 where a decimal must be preceded or proceeded by at least one digit.
209 Negative numbers, while accepted, are truncated to zero.
210 The following scaling units are accepted:
212 .Bl -tag -width Ds -offset indent -compact
225 default vertical span
237 default horizontal span
242 Using anything other than
248 is necessarily non-portable across output media.
252 When composing a manual, make sure that sentences end at the end of
254 By doing so, front-ends will be able to apply the proper amount of
255 spacing after the end of sentence (unescaped) period, exclamation mark,
256 or question mark followed by zero or more non-sentence closing
265 The proper spacing is also intelligently preserved if a sentence ends at
266 the boundary of a macro line.
269 .Dl \&.Xr mandoc 1 \&.
270 .Dl \&.Fl T \&Ns \&Cm ascii \&.
274 document consists of a document prologue followed by one or more
277 The prologue, which consists of the
282 macros in that order, is required for every document.
284 The first section (sections are denoted by
286 must be the NAME section, consisting of at least one
291 Following that, convention dictates specifying at least the
295 sections, although this varies between manual sections.
297 The following is a well-formed skeleton
300 .Bd -literal -offset indent
306 \&.Nd a description goes here
308 \&.\e\*q For sections 2, 3, & 9 only.
309 \&.\e\*q Not used in OpenBSD.
317 utility processes files ...
318 \&.\e\*q .Sh IMPLEMENTATION NOTES
319 \&.\e\*q Not used in OpenBSD.
320 \&.\e\*q .Sh RETURN VALUES
321 \&.\e\*q For sections 2, 3, & 9 only.
322 \&.\e\*q .Sh ENVIRONMENT
323 \&.\e\*q For sections 1, 6, 7, & 8 only.
325 \&.\e\*q .Sh EXIT STATUS
326 \&.\e\*q For sections 1, 6, & 8 only.
327 \&.\e\*q .Sh EXAMPLES
328 \&.\e\*q .Sh DIAGNOSTICS
329 \&.\e\*q For sections 1, 4, 6, 7, & 8 only.
331 \&.\e\*q For sections 2, 3, & 9 only.
332 \&.\e\*q .Sh SEE ALSO
333 \&.\e\*q .Xr foobar 1
334 \&.\e\*q .Sh STANDARDS
339 \&.\e\*q .Sh SECURITY CONSIDERATIONS
340 \&.\e\*q Not used in OpenBSD.
345 document are conventionally ordered as they appear above.
346 Sections should be composed as follows:
347 .Bl -ohang -offset Ds
349 The name(s) and a one line description of the documented material.
350 The syntax for this as follows:
351 .Bd -literal -offset indent
355 \&.Nd a one line description
360 names should be separated by commas.
364 macro(s) must precede the
373 The name of the library containing the documented material, which is
374 assumed to be a function in a section 2, 3, or 9 manual.
375 The syntax for this is as follows:
376 .Bd -literal -offset indent
383 Documents the utility invocation syntax, function call syntax, or device
386 For the first, utilities (sections 1, 6, and 8), this is
387 generally structured as follows:
388 .Bd -literal -offset indent
399 Commands should be ordered alphabetically.
401 For the second, function calls (sections 2, 3, 9):
402 .Bd -literal -offset indent
404 \&.Vt extern const char *global;
406 \&.Fn foo "const char *src"
408 \&.Fn bar "const char *src"
417 macros should follow C header-file conventions.
419 And for the third, configurations (section 4):
420 .Bd -literal -offset indent
421 \&.Cd \*qit* at isa? port 0x2e\*q
422 \&.Cd \*qit* at isa? port 0x4e\*q
425 Manuals not in these sections generally don't need a
428 Some macros are displayed differently in the
430 section, particularly
440 All of these macros are output on their own line.
441 If two such dissimilar macros are pairwise invoked (except for
447 they are separated by a vertical space, unless in the case of
452 which are always separated by vertical space.
454 When text and macros following an
456 macro starting an input line span multiple output lines,
457 all output lines but the first will be indented to align
458 with the text immediately following the
460 macro, up to the next
465 macro or the end of an enclosing block, whichever comes first.
467 This begins with an expansion of the brief, one line description in
469 .Bd -literal -offset indent
472 utility does this, that, and the other.
475 It usually follows with a breakdown of the options (if documenting a
477 .Bd -literal -offset indent
478 The arguments are as follows:
479 \&.Bl \-tag \-width Ds
481 Print verbose information.
485 Manuals not documenting a command won't include the above fragment.
486 .It Em IMPLEMENTATION NOTES
487 Implementation-specific notes should be kept here.
488 This is useful when implementing standard functions that may have side
489 effects or notable algorithmic implications.
491 This section documents the
492 return values of functions in sections 2, 3, and 9.
497 Lists the environment variables used by the utility,
498 and explains the syntax and semantics of their values.
501 manual provides examples of typical content and formatting.
506 Documents files used.
507 It's helpful to document both the file name and a short description of how
508 the file is used (created, modified, etc.).
513 This section documents the
514 command exit status for section 1, 6, and 8 utilities.
515 Historically, this information was described in
517 a practise that is now discouraged.
523 This often contains snippets of well-formed, well-tested invocations.
524 Make sure that examples work properly!
526 Documents error conditions.
527 This is most useful in section 4 manuals.
528 Historically, this section was used in place of
530 for manuals in sections 1, 6, and 8; however, this practise is
537 Documents error handling in sections 2, 3, and 9.
542 References other manuals with related topics.
543 This section should exist for most manuals.
544 Cross-references should conventionally be ordered first by section, then
550 References any standards implemented or used.
551 If not adhering to any standards, the
553 section should be used instead.
558 A brief history of the subject, including where support first appeared.
560 Credits to the person or persons who wrote the code and/or documentation.
561 Authors should generally be noted by both name and email address.
566 Common misuses and misunderstandings should be explained
569 Known bugs, limitations, and work-arounds should be described
571 .It Em SECURITY CONSIDERATIONS
572 Documents any security precautions that operators should consider.
575 Macros are one to three three characters in length and begin with a
578 at the beginning of the line.
579 An arbitrary amount of whitespace may sit between the control character
581 Thus, the following are equivalent:
582 .Bd -literal -offset indent
587 The syntax of a macro depends on its classification.
590 refers to macro arguments, which may be followed by zero or more
594 opens the scope of a macro; and if specified,
600 column indicates that the macro may also be called by passing its name
601 as an argument to another macro.
602 If a macro is not callable but its name appears as an argument
603 to another macro, it is interpreted as opaque text.
611 column indicates whether the macro may call other macros by receiving
612 their names as arguments.
613 If a macro is not parsed but the name of another macro appears
614 as an argument, it is interpreted as opaque text.
618 column, if applicable, describes closure rules.
619 .Ss Block full-explicit
620 Multi-line scope closed by an explicit closing macro.
621 All macros contains bodies; only
627 .Bd -literal -offset indent
628 \&.Yo \(lB\-arg \(lBparm...\(rB\(rB \(lBhead...\(rB
633 .Bl -column -compact -offset indent "MacroX" "CallableX" "ParsedX" "closed by XXX"
634 .It Em Macro Ta Em Callable Ta Em Parsed Ta Em Scope
635 .It Sx \&Bd Ta \&No Ta \&No Ta closed by Sx \&Ed
636 .It Sx \&Bf Ta \&No Ta \&No Ta closed by Sx \&Ef
637 .It Sx \&Bk Ta \&No Ta \&No Ta closed by Sx \&Ek
638 .It Sx \&Bl Ta \&No Ta \&No Ta closed by Sx \&El
639 .It Sx \&Ed Ta \&No Ta \&No Ta opened by Sx \&Bd
640 .It Sx \&Ef Ta \&No Ta \&No Ta opened by Sx \&Bf
641 .It Sx \&Ek Ta \&No Ta \&No Ta opened by Sx \&Bk
642 .It Sx \&El Ta \&No Ta \&No Ta opened by Sx \&Bl
644 .Ss Block full-implicit
645 Multi-line scope closed by end-of-file or implicitly by another macro.
646 All macros have bodies; some
654 don't have heads; only one
661 .Bd -literal -offset indent
662 \&.Yo \(lB\-arg \(lBparm...\(rB\(rB \(lBhead... \(lBTa head...\(rB\(rB
666 .Bl -column -compact -offset indent "MacroX" "CallableX" "ParsedX" "closed by XXXXXXXXXXX"
667 .It Em Macro Ta Em Callable Ta Em Parsed Ta Em Scope
668 .It Sx \&It Ta \&No Ta Yes Ta closed by Sx \&It , Sx \&El
669 .It Sx \&Nd Ta \&No Ta \&No Ta closed by Sx \&Sh
670 .It Sx \&Nm Ta \&No Ta Yes Ta closed by Sx \&Nm , Sx \&Sh , Sx \&Ss
671 .It Sx \&Sh Ta \&No Ta \&No Ta closed by Sx \&Sh
672 .It Sx \&Ss Ta \&No Ta \&No Ta closed by Sx \&Sh , Sx \&Ss
678 .Sx Block full-implicit
679 macro only when invoked as the first macro
682 section line, else it is
684 .Ss Block partial-explicit
685 Like block full-explicit, but also with single-line scope.
686 Each has at least a body and, in limited circumstances, a head
693 .Bd -literal -offset indent
694 \&.Yo \(lB\-arg \(lBparm...\(rB\(rB \(lBhead...\(rB
696 \&.Yc \(lBtail...\(rB
698 \&.Yo \(lB\-arg \(lBparm...\(rB\(rB \(lBhead...\(rB \
699 \(lBbody...\(rB \&Yc \(lBtail...\(rB
702 .Bl -column "MacroX" "CallableX" "ParsedX" "closed by XXXX" -compact -offset indent
703 .It Em Macro Ta Em Callable Ta Em Parsed Ta Em Scope
704 .It Sx \&Ac Ta Yes Ta Yes Ta opened by Sx \&Ao
705 .It Sx \&Ao Ta Yes Ta Yes Ta closed by Sx \&Ac
706 .It Sx \&Bc Ta Yes Ta Yes Ta closed by Sx \&Bo
707 .It Sx \&Bo Ta Yes Ta Yes Ta opened by Sx \&Bc
708 .It Sx \&Brc Ta Yes Ta Yes Ta opened by Sx \&Bro
709 .It Sx \&Bro Ta Yes Ta Yes Ta closed by Sx \&Brc
710 .It Sx \&Dc Ta Yes Ta Yes Ta opened by Sx \&Do
711 .It Sx \&Do Ta Yes Ta Yes Ta closed by Sx \&Dc
712 .It Sx \&Ec Ta Yes Ta Yes Ta opened by Sx \&Eo
713 .It Sx \&Eo Ta Yes Ta Yes Ta closed by Sx \&Ec
714 .It Sx \&Fc Ta Yes Ta Yes Ta opened by Sx \&Fo
715 .It Sx \&Fo Ta \&No Ta \&No Ta closed by Sx \&Fc
716 .It Sx \&Oc Ta Yes Ta Yes Ta closed by Sx \&Oo
717 .It Sx \&Oo Ta Yes Ta Yes Ta opened by Sx \&Oc
718 .It Sx \&Pc Ta Yes Ta Yes Ta closed by Sx \&Po
719 .It Sx \&Po Ta Yes Ta Yes Ta opened by Sx \&Pc
720 .It Sx \&Qc Ta Yes Ta Yes Ta opened by Sx \&Oo
721 .It Sx \&Qo Ta Yes Ta Yes Ta closed by Sx \&Oc
722 .It Sx \&Re Ta \&No Ta \&No Ta opened by Sx \&Rs
723 .It Sx \&Rs Ta \&No Ta \&No Ta closed by Sx \&Re
724 .It Sx \&Sc Ta Yes Ta Yes Ta opened by Sx \&So
725 .It Sx \&So Ta Yes Ta Yes Ta closed by Sx \&Sc
726 .It Sx \&Xc Ta Yes Ta Yes Ta opened by Sx \&Xo
727 .It Sx \&Xo Ta Yes Ta Yes Ta closed by Sx \&Xc
729 .Ss Block partial-implicit
730 Like block full-implicit, but with single-line scope closed by
733 .Bd -literal -offset indent
734 \&.Yo \(lB\-arg \(lBval...\(rB\(rB \(lBbody...\(rB \(lBres...\(rB
737 .Bl -column "MacroX" "CallableX" "ParsedX" -compact -offset indent
738 .It Em Macro Ta Em Callable Ta Em Parsed
739 .It Sx \&Aq Ta Yes Ta Yes
740 .It Sx \&Bq Ta Yes Ta Yes
741 .It Sx \&Brq Ta Yes Ta Yes
742 .It Sx \&D1 Ta \&No Ta \&Yes
743 .It Sx \&Dl Ta \&No Ta Yes
744 .It Sx \&Dq Ta Yes Ta Yes
745 .It Sx \&Op Ta Yes Ta Yes
746 .It Sx \&Pq Ta Yes Ta Yes
747 .It Sx \&Ql Ta Yes Ta Yes
748 .It Sx \&Qq Ta Yes Ta Yes
749 .It Sx \&Sq Ta Yes Ta Yes
750 .It Sx \&Vt Ta Yes Ta Yes
756 .Sx Block partial-implicit
757 only when invoked as the first macro
760 section line, else it is
765 end of line, fixed argument lengths, and/or subsequent macros.
766 In-line macros have only text children.
767 If a number (or inequality) of arguments is
769 then the macro accepts an arbitrary number of arguments.
770 .Bd -literal -offset indent
771 \&.Yo \(lB\-arg \(lBval...\(rB\(rB \(lBargs...\(rB \(lBres...\(rB
773 \&.Yo \(lB\-arg \(lBval...\(rB\(rB \(lBargs...\(rB Yc...
775 \&.Yo \(lB\-arg \(lBval...\(rB\(rB arg0 arg1 argN
778 .Bl -column "MacroX" "CallableX" "ParsedX" "Arguments" -compact -offset indent
779 .It Em Macro Ta Em Callable Ta Em Parsed Ta Em Arguments
780 .It Sx \&%A Ta \&No Ta \&No Ta >0
781 .It Sx \&%B Ta \&No Ta \&No Ta >0
782 .It Sx \&%C Ta \&No Ta \&No Ta >0
783 .It Sx \&%D Ta \&No Ta \&No Ta >0
784 .It Sx \&%I Ta \&No Ta \&No Ta >0
785 .It Sx \&%J Ta \&No Ta \&No Ta >0
786 .It Sx \&%N Ta \&No Ta \&No Ta >0
787 .It Sx \&%O Ta \&No Ta \&No Ta >0
788 .It Sx \&%P Ta \&No Ta \&No Ta >0
789 .It Sx \&%Q Ta \&No Ta \&No Ta >0
790 .It Sx \&%R Ta \&No Ta \&No Ta >0
791 .It Sx \&%T Ta \&No Ta \&No Ta >0
792 .It Sx \&%U Ta \&No Ta \&No Ta >0
793 .It Sx \&%V Ta \&No Ta \&No Ta >0
794 .It Sx \&Ad Ta Yes Ta Yes Ta >0
795 .It Sx \&An Ta Yes Ta Yes Ta >0
796 .It Sx \&Ap Ta Yes Ta Yes Ta 0
797 .It Sx \&Ar Ta Yes Ta Yes Ta n
798 .It Sx \&At Ta Yes Ta Yes Ta 1
799 .It Sx \&Bsx Ta Yes Ta Yes Ta n
800 .It Sx \&Bt Ta \&No Ta \&No Ta 0
801 .It Sx \&Bx Ta Yes Ta Yes Ta n
802 .It Sx \&Cd Ta Yes Ta Yes Ta >0
803 .It Sx \&Cm Ta Yes Ta Yes Ta >0
804 .It Sx \&Db Ta \&No Ta \&No Ta 1
805 .It Sx \&Dd Ta \&No Ta \&No Ta n
806 .It Sx \&Dt Ta \&No Ta \&No Ta n
807 .It Sx \&Dv Ta Yes Ta Yes Ta >0
808 .It Sx \&Dx Ta Yes Ta Yes Ta n
809 .It Sx \&Em Ta Yes Ta Yes Ta >0
810 .It Sx \&En Ta \&No Ta \&No Ta 0
811 .It Sx \&Er Ta Yes Ta Yes Ta >0
812 .It Sx \&Es Ta \&No Ta \&No Ta 0
813 .It Sx \&Ev Ta Yes Ta Yes Ta >0
814 .It Sx \&Ex Ta \&No Ta \&No Ta n
815 .It Sx \&Fa Ta Yes Ta Yes Ta >0
816 .It Sx \&Fd Ta \&No Ta \&No Ta >0
817 .It Sx \&Fl Ta Yes Ta Yes Ta n
818 .It Sx \&Fn Ta Yes Ta Yes Ta >0
819 .It Sx \&Fr Ta \&No Ta \&No Ta n
820 .It Sx \&Ft Ta Yes Ta Yes Ta >0
821 .It Sx \&Fx Ta Yes Ta Yes Ta n
822 .It Sx \&Hf Ta \&No Ta \&No Ta n
823 .It Sx \&Ic Ta Yes Ta Yes Ta >0
824 .It Sx \&In Ta \&No Ta \&No Ta 1
825 .It Sx \&Lb Ta \&No Ta \&No Ta 1
826 .It Sx \&Li Ta Yes Ta Yes Ta >0
827 .It Sx \&Lk Ta Yes Ta Yes Ta >0
828 .It Sx \&Lp Ta \&No Ta \&No Ta 0
829 .It Sx \&Ms Ta Yes Ta Yes Ta >0
830 .It Sx \&Mt Ta Yes Ta Yes Ta >0
831 .It Sx \&Nm Ta Yes Ta Yes Ta n
832 .It Sx \&No Ta Yes Ta Yes Ta 0
833 .It Sx \&Ns Ta Yes Ta Yes Ta 0
834 .It Sx \&Nx Ta Yes Ta Yes Ta n
835 .It Sx \&Os Ta \&No Ta \&No Ta n
836 .It Sx \&Ot Ta \&No Ta \&No Ta n
837 .It Sx \&Ox Ta Yes Ta Yes Ta n
838 .It Sx \&Pa Ta Yes Ta Yes Ta n
839 .It Sx \&Pf Ta Yes Ta Yes Ta 1
840 .It Sx \&Pp Ta \&No Ta \&No Ta 0
841 .It Sx \&Rv Ta \&No Ta \&No Ta n
842 .It Sx \&Sm Ta \&No Ta \&No Ta 1
843 .It Sx \&St Ta \&No Ta Yes Ta 1
844 .It Sx \&Sx Ta Yes Ta Yes Ta >0
845 .It Sx \&Sy Ta Yes Ta Yes Ta >0
846 .It Sx \&Tn Ta Yes Ta Yes Ta >0
847 .It Sx \&Ud Ta \&No Ta \&No Ta 0
848 .It Sx \&Ux Ta Yes Ta Yes Ta n
849 .It Sx \&Va Ta Yes Ta Yes Ta n
850 .It Sx \&Vt Ta Yes Ta Yes Ta >0
851 .It Sx \&Xr Ta Yes Ta Yes Ta >0
852 .It Sx \&br Ta \&No Ta \&No Ta 0
853 .It Sx \&sp Ta \&No Ta \&No Ta 1
856 This section is a canonical reference of all macros, arranged
858 For the scoping of individual macros, see
864 Multiple authors should each be accorded their own
867 Author names should be ordered with full or abbreviated forename(s)
868 first, then full surname.
873 This macro may also be used in a non-bibliographic context when
874 referring to book titles.
876 Publication city or location of an
880 Publication date of an
883 Recommended formats of arguments are
888 Publisher or issuer name of an
896 Issue number (usually for journals) of an
900 Optional information of an
904 Book or journal page number of an
908 Institutional author (school, government, etc.) of an
911 Multiple institutional authors should each be accorded their own
915 Technical report name of an
922 This macro may also be used in a non-bibliographical context when
923 referring to article titles.
925 URI of reference document.
934 Does not have any tail arguments.
937 Do not use this for postal addresses.
944 Requires either the name of an author or one of the following arguments:
946 .Bl -tag -width "-nosplitX" -offset indent -compact
948 Start a new output line before each subsequent invocation of
957 The effect of selecting either of the
959 modes ends at the beginning of the
964 section, the default is
966 for the first author listing and
968 for all other author listings.
972 .Dl \&.An Kristaps Dzonsons \&Aq kristaps@bsd.lv
974 Begin a block enclosed by angle brackets.
975 Does not have any head arguments.
978 .Dl \&.Fl -key= \&Ns \&Ao \&Ar val \&Ac
983 Inserts an apostrophe without any surrounding whitespace.
984 This is generally used as a grammatical device when referring to the verb
988 .Dl \&.Fn execve \&Ap d
990 Encloses its arguments in angle brackets.
993 .Dl \&.Fl -key= \&Ns \&Aq \&Ar val
996 this macro is often abused for rendering URIs, which should instead use
1000 or to note pre-processor
1002 statements, which should use
1009 If an argument is not provided, the string
1011 is used as a default.
1014 .Dl \&.Fl o \&Ns \&Ar file1
1016 .Dl \&.Ar arg1 , arg2 .
1018 Formats an AT&T version.
1019 Accepts one optional argument:
1021 .Bl -tag -width "v[1-7] | 32vX" -offset indent -compact
1030 Note that these arguments do not begin with a hyphen.
1049 Does not have any tail arguments.
1051 Begin a display block.
1052 Its syntax is as follows:
1053 .Bd -ragged -offset indent
1056 .Op Fl offset Ar width
1060 Display blocks are used to select a different indentation and
1061 justification than the one used by the surrounding text.
1062 They may contain both macro lines and text lines.
1063 By default, a display block is preceded by a vertical space.
1067 must be one of the following:
1068 .Bl -tag -width 13n -offset indent
1070 Centre-justify each line.
1071 Using this display type is not recommended; many
1073 implementations render it poorly.
1075 Left- and right-justify the block.
1077 Do not justify the block at all.
1078 Preserve white space as it appears in the input.
1080 Only left-justify the block.
1088 must be provided first.
1089 Additional arguments may follow:
1090 .Bl -tag -width 13n -offset indent
1091 .It Fl offset Ar width
1092 Indent the display by the
1094 which may be one of the following:
1097 One of the pre-defined strings
1099 the width of standard indentation;
1104 which has no effect;
1106 which justifies to the right margin; or
1108 which aligns around an imagined centre axis.
1110 A macro invocation, which selects a predefined width
1111 associated with that macro.
1112 The most popular is the imaginary macro
1117 A width using the syntax described in
1118 .Sx Scaling Widths .
1120 An arbitrary string, which indents by the length of this string.
1123 When the argument is missing,
1127 Do not assert vertical space before the display.
1131 .Bd -literal -offset indent
1132 \&.Bd \-literal \-offset indent \-compact
1142 Change the font mode for a scoped block of text.
1143 Its syntax is as follows:
1144 .Bd -ragged -offset indent
1147 .Fl emphasis | literal | symbolic |
1148 .Cm \&Em | \&Li | \&Sy
1156 argument are equivalent, as are
1164 Without an argument, this macro does nothing.
1165 The font mode continues until broken by a new font mode in a nested
1177 For each macro, keep its output together on the same output line,
1178 until the end of the macro or the end of the input line is reached,
1179 whichever comes first.
1180 Line breaks in text lines are unaffected.
1181 The syntax is as follows:
1183 .D1 Pf \. Sx \&Bk Fl words
1187 argument is required; additional arguments are ignored.
1189 The following example will not break within each
1192 .Bd -literal -offset indent
1195 \&.Op Fl o Ar output
1199 Be careful in using over-long lines within a keep block!
1200 Doing so will clobber the right margin.
1203 Lists consist of items specified using the
1205 macro, containing a head or a body or both.
1206 The list syntax is as follows:
1207 .Bd -ragged -offset indent
1211 .Op Fl offset Ar val
1218 is mandatory and must be specified first.
1225 or use the length of the given string.
1228 is a global indentation for the whole list, affecting both item heads
1230 For those list types supporting it, the
1232 argument requests an additional indentation of item bodies,
1237 argument is specified, list entries are separated by vertical space.
1239 A list must specify one of the following list types:
1240 .Bl -tag -width 12n -offset indent
1242 No item heads can be specified, but a bullet will be printed at the head
1244 Item bodies start on the same output line as the bullet
1245 and are indented according to the
1252 argument has no effect; instead, each argument specifies the width
1253 of one column, using either the
1255 syntax or the string length of the argument.
1256 If the first line of the body of a
1262 contexts spanning one input line each are implied until an
1264 macro line is encountered, at which point items start being interpreted as
1271 except that dashes are used in place of bullets.
1275 except that item heads are not parsed for macro invocations.
1276 .\" but with additional formatting to the head.
1281 except that cardinal numbers are used in place of bullets,
1286 except that the first lines of item bodies are not indented, but follow
1287 the item heads like in
1294 Item bodies follow items heads on the same line, using normal inter-word
1296 Bodies are not indented, and the
1298 argument is ignored.
1300 No item heads can be specified, and none are printed.
1301 Bodies are not indented, and the
1303 argument is ignored.
1305 Item bodies start on the line following item heads and are not indented.
1308 argument is ignored.
1310 Item bodies are indented according to the
1313 When an item head fits inside the indentation, the item body follows
1314 this head on the same output line.
1315 Otherwise, the body starts on the output line following the head.
1323 Begin a block enclosed by square brackets.
1324 Does not have any head arguments.
1327 .Bd -literal -offset indent -compact
1335 Encloses its arguments in square brackets.
1338 .Dl \&.Bq 1 , \&Dv BUFSIZ
1341 this macro is sometimes abused to emulate optional arguments for
1342 commands; the correct macros to use for this purpose are
1354 Does not have any tail arguments.
1356 Begin a block enclosed by curly braces.
1357 Does not have any head arguments.
1360 .Bd -literal -offset indent -compact
1368 Encloses its arguments in curly braces.
1371 .Dl \&.Brq 1 , ... , \&Va n
1376 Format the BSD/OS version provided as an argument, or a default value if
1377 no argument is provided.
1394 .Dq is currently in beta test .
1396 Format the BSD version provided as an argument, or a default value if no
1397 argument is provided.
1413 Kernel configuration declaration.
1414 This denotes strings accepted by
1418 .Dl \&.Cd device le0 at scode?
1421 this macro is commonly abused by using quoted literals to retain
1422 whitespace and align consecutive
1425 This practise is discouraged.
1428 Useful when specifying configuration options or keys.
1431 .Dl \&.Cm ControlPath
1432 .Dl \&.Cm ControlMaster
1437 One-line indented display.
1438 This is formatted by the default rules and is useful for simple indented
1440 It is followed by a newline.
1443 .Dl \&.D1 \&Fl abcdefgh
1450 Switch debugging mode.
1451 Its syntax is as follows:
1453 .D1 Pf \. Sx \&Db Cm on | off
1455 This macro is ignored by
1461 Does not have any tail arguments.
1464 This is the mandatory first macro of any
1467 Its syntax is as follows:
1469 .D1 Pf \. Sx \&Dd Ar month day , year
1473 is the full English month name, the
1475 is an optionally zero-padded numeral, and the
1477 is the full four-digit year.
1479 Other arguments are not portable; the
1481 utility handles them as follows:
1482 .Bl -dash -offset 3n -compact
1484 To have the date automatically filled in by the
1490 can be given as an argument.
1492 A few alternative date formats are accepted as well
1493 and converted to the standard form.
1495 If a date string cannot be parsed, it is used verbatim.
1497 If no date string is given, the current date is used.
1501 .Dl \&.Dd $\&Mdocdate$
1502 .Dl \&.Dd $\&Mdocdate: July 21 2007$
1503 .Dl \&.Dd July 21, 2007
1510 One-line intended display.
1511 This is formatted as literal text and is useful for commands and
1513 It is followed by a newline.
1516 .Dl \&.Dl % mandoc mdoc.7 \e(ba less
1523 Begin a block enclosed by double quotes.
1524 Does not have any head arguments.
1527 .Bd -literal -offset indent -compact
1529 April is the cruellest month
1537 Encloses its arguments in
1542 .Bd -literal -offset indent -compact
1543 \&.Dq April is the cruellest month
1554 This is the mandatory second macro of any
1557 Its syntax is as follows:
1558 .Bd -ragged -offset indent
1564 .Op Ar volume | arch
1569 Its arguments are as follows:
1570 .Bl -tag -width Ds -offset Ds
1572 The document's title (name), defaulting to
1575 It should be capitalised.
1586 .Pq Perl libraries ,
1596 .Pq system utilities ,
1598 .Pq kernel functions ,
1600 .Pq X Window System ,
1602 .Pq X Window System ,
1612 It should correspond to the manual's filename suffix and defaults to
1616 This overrides the volume inferred from
1618 This field is optional, and if specified, must be one of
1620 .Pq users' supplementary documents ,
1622 .Pq programmers' supplementary documents ,
1624 .Pq administrators' supplementary documents ,
1626 .Pq system managers' manuals ,
1628 .Pq users' reference manuals ,
1630 .Pq programmers' reference manuals ,
1632 .Pq kernel manuals ,
1643 .Pq contributed manuals .
1645 This specifies a specific relevant architecture.
1648 is not provided, it may be used in its place, else it may be used
1650 It, too, is optional.
1686 .Dl \&.Dt FOO 9 i386
1693 Defined variables such as preprocessor constants.
1697 .Dl \&.Dv STDOUT_FILENO
1702 Format the DragonFly BSD version provided as an argument, or a default
1703 value if no argument is provided.
1719 Close a scope started by
1721 Its syntax is as follows:
1723 .D1 Pf \. Sx \&Ec Op Ar TERM
1727 argument is used as the enclosure tail, for example, specifying \e(rq
1731 End a display context started by
1734 End a font mode context started by
1737 End a keep context started by
1740 End a list context started by
1748 Denotes text that should be emphasised.
1749 Note that this is a presentation term and should not be used for
1750 stylistically decorating technical terms.
1762 This macro is obsolete and not implemented in
1765 An arbitrary enclosure.
1766 Its syntax is as follows:
1768 .D1 Pf \. Sx \&Eo Op Ar TERM
1772 argument is used as the enclosure head, for example, specifying \e(lq
1776 Display error constants.
1785 This macro is obsolete and not implemented.
1787 Environmental variables such as those specified in
1794 Insert a standard sentence regarding exit values.
1795 Its syntax is as follows:
1797 .D1 Pf \. Sx \&Ex Fl std Op Ar utility
1801 is not specified, the document's name set by
1809 Its syntax is as follows:
1810 .Bd -ragged -offset indent
1816 This may be invoked for names with or without the corresponding type.
1817 It is also used to specify the field name of a structure.
1820 macro is used in the
1824 section when documenting multi-line function prototypes.
1825 If invoked with multiple arguments, the arguments are separated by a
1827 Furthermore, if the following macro is another
1829 the last argument will also have a trailing comma.
1832 .Dl \&.Fa \(dqconst char *p\(dq
1833 .Dl \&.Fa \(dqint a\(dq \(dqint b\(dq \(dqint c\(dq
1839 End a function context started by
1842 Historically used to document include files.
1843 This usage has been deprecated in favour of
1845 Do not use this macro.
1848 .Sx MANUAL STRUCTURE
1853 Used when listing arguments to command-line utilities.
1854 Prints a fixed-width hyphen
1856 directly followed by each argument.
1857 If no arguments are provided, a hyphen is printed followed by a space.
1858 If the argument is a macro, a hyphen is prefixed to the subsequent macro
1865 .Dl \&.Op \&Fl o \&Ns \&Ar file
1871 Its syntax is as follows:
1872 .Bd -ragged -offset indent
1876 .Op Oo Ar argtype Oc Ar argname
1879 Function arguments are surrounded in parenthesis and
1880 are delimited by commas.
1881 If no arguments are specified, blank parenthesis are output.
1884 .Dl \&.Fn \*qint funcname\*q \*qint arg0\*q \*qint arg1\*q
1885 .Dl \&.Fn funcname \*qint arg0\*q
1886 .Dl \&.Fn funcname arg0
1887 .Bd -literal -offset indent -compact
1892 When referring to a function documented in another manual page, use
1896 .Sx MANUAL STRUCTURE
1900 Begin a function block.
1901 This is a multi-line version of
1903 Its syntax is as follows:
1905 .D1 Pf \. Sx \&Fo Ar funcname
1907 Invocations usually occur in the following context:
1908 .Bd -ragged -offset indent
1909 .Pf \. Sx \&Ft Ar functype
1911 .Pf \. Sx \&Fo Ar funcname
1913 .Pf \. Sx \&Fa Oo Ar argtype Oc Ar argname
1925 .Sx MANUAL STRUCTURE ,
1932 Its syntax is as follows:
1934 .D1 Pf \. Sx \&Ft Ar functype
1938 .Bd -literal -offset indent -compact
1944 .Sx MANUAL STRUCTURE ,
1951 version provided as an argument, or a default value
1952 if no argument is provided.
1968 This macro is obsolete and not implemented.
1970 Designate an internal or interactive command.
1973 but used for instructions rather than values.
1983 is preferred for displaying code; the
1985 macro is used when referring to specific instructions.
1992 section (only if invoked as the line macro), the first argument is
1995 the arguments is enclosed in angle brackets.
2001 .Sx MANUAL STRUCTURE .
2004 The syntax of this macro depends on the list type.
2013 have the following syntax:
2015 .D1 Pf \. Sx \&It Ar args
2024 have the following syntax:
2028 with subsequent lines interpreted within the scope of the
2030 until either a closing
2037 list has the following syntax:
2039 .D1 Pf \. Sx \&It Op Cm args
2041 Subsequent lines are interpreted as with
2044 The line arguments correspond to the list's left-hand side; body
2045 arguments correspond to the list's contents.
2049 list is the most complicated.
2050 Its syntax is as follows:
2052 .D1 Pf \. Sx \&It Op Cm args
2056 are phrases, a mix of macros and text corresponding to a line column,
2057 delimited by tabs or the special
2060 Lines subsequent the
2062 are interpreted within the scope of the last phrase.
2063 Calling the pseudo-macro
2065 will open a new phrase scope (this must occur on a macro line to be
2066 interpreted as a macro).
2067 Note that the tab phrase delimiter may only be used within the
2070 Subsequent this, only the
2072 pseudo-macro may be used to delimit phrases.
2073 Furthermore, note that quoted sections propagate over tab-delimited
2078 .Dl .It \(dqcol1 ; <TAB> col2 ;\(dq \&;
2080 will preserve the semicolon whitespace except for the last.
2086 The syntax is as follows:
2088 .D1 Pf \. Sx \&Lb Ar library
2092 parameter may be a system library, such as
2096 in which case a small library description is printed next to the linker
2097 invocation; or a custom library, in which case the library name is
2099 This is most commonly used in the
2101 section as described in
2102 .Sx MANUAL STRUCTURE .
2108 Denotes text that should be in a literal font mode.
2109 Note that this is a presentation term and should not be used for
2110 stylistically decorating technical terms.
2119 Its syntax is as follows:
2121 .D1 Pf \. Sx \&Lk Ar uri Op Ar name
2124 .Dl \&.Lk http://bsd.lv \*qThe BSD.lv Project\*q
2125 .Dl \&.Lk http://bsd.lv
2133 Display a mathematical symbol.
2134 Its syntax is as follows:
2136 .D1 Pf \. Sx \&Ms Ar symbol
2145 Its syntax is as follows:
2147 .D1 Pf \. Sx \&Mt Ar address
2150 .Dl \&.Mt discuss@manpages.bsd.lv
2152 A one line description of the manual's content.
2153 This may only be invoked in the
2155 section subsequent the
2160 .Dl \&.Sx \&Nd mdoc language reference
2161 .Dl \&.Sx \&Nd format and display UNIX manuals
2165 macro technically accepts child macros and terminates with a subsequent
2168 Do not assume this behaviour: some
2170 database generators are not smart enough to parse more than the line
2171 arguments and will display macros verbatim.
2176 The name of the manual page, or \(em in particular in section 1, 6,
2177 and 8 pages \(em of an additional command or feature documented in
2179 When first invoked, the
2181 macro expects a single argument, the name of the manual page.
2182 Usually, the first invocation happens in the
2184 section of the page.
2185 The specified name will be remembered and used whenever the macro is
2186 called again without arguments later in the page.
2190 .Sx Block full-implicit
2191 semantics when invoked as the first macro on an input line in the
2193 section; otherwise, it uses ordinary
2198 .Bd -literal -offset indent
2207 of section 2, 3 and 9 manual pages, use the
2211 to mark up the name of the manual page.
2215 macro used to terminate prior macro contexts.
2218 .Dl \&.Sx \&Fl ab \&No cd \&Fl ef
2221 Following invocation, text is interpreted as free-form text until a
2222 macro is encountered.
2224 This has no effect when invoked at the start of a macro line.
2227 .Dl \&.Fl o \&Ns \&Ar output
2236 version provided as an argument, or a default value if
2237 no argument is provided.
2257 Multi-line version of
2261 .Bd -literal -offset indent -compact
2263 \&.Op Fl flag Ns Ar value
2267 Command-line option.
2268 Used when listing options to command-line utilities.
2269 Prints the argument(s) in brackets.
2272 .Dl \&.Op \&Fl a \&Ar b
2273 .Dl \&.Op \&Ar a | b
2278 Document operating system version.
2279 This is the mandatory third macro of
2283 Its syntax is as follows:
2285 .D1 Pf \. Sx \&Os Op Ar system Op Ar version
2289 parameter specifies the relevant operating system or environment.
2290 Left unspecified, it defaults to the local operating system version.
2291 This is the suggested form.
2295 .Dl \&.Os KTH/CSC/TCS
2306 this macro has been deprecated.
2310 version provided as an argument, or a default value
2311 if no argument is provided.
2328 If an argument is not provided, the string
2330 is used as a default.
2333 .Dl \&.Pa /usr/bin/mandoc
2334 .Dl \&.Pa /usr/share/man/man7/mdoc.7
2339 Close parenthesised context opened by
2344 between its arguments.
2345 Its syntax is as follows:
2347 .D1 Pf \. \&Pf Ar prefix suffix
2351 argument may be a macro.
2354 .Dl \&.Pf \e. \&Sx \&Pf \&Ar prefix suffix
2356 Multi-line version of
2360 This will assert vertical space between prior and subsequent macros
2363 Parenthesised enclosure.
2368 Close quoted context opened by
2371 Format a single-quoted literal.
2377 Multi-line version of
2380 Encloses its arguments in
2395 Does not have any tail arguments.
2397 Begin a bibliographic
2400 Does not have any head arguments.
2401 The block macro may only contain
2417 child macros (at least one must be specified).
2420 .Bd -literal -offset indent -compact
2422 \&.%A J. E. Hopcroft
2424 \&.%B Introduction to Automata Theory, Languages, and Computation
2425 \&.%I Addison-Wesley
2426 \&.%C Reading, Massachusettes
2433 block is used within a SEE ALSO section, a vertical space is asserted
2434 before the rendered output, else the block continues on the current
2437 Inserts text regarding a function call's return value.
2438 This macro must consist of the
2440 argument followed by an optional
2444 is not provided, the document's name as stipulated by the first
2451 Close single-quoted context opened by
2454 Begin a new section.
2455 For a list of conventional manual sections, see
2456 .Sx MANUAL STRUCTURE .
2457 These sections should be used unless it's absolutely necessary that
2458 custom sections be used.
2460 Section names should be unique so that they may be keyed by
2469 Switches the spacing mode for output generated from macros.
2470 Its syntax is as follows:
2472 .D1 Pf \. Sx \&Sm Cm on | off
2474 By default, spacing is
2478 no white space is inserted between macro arguments and between the
2479 output generated from adjacent macros, but text lines
2480 still get normal spacing between words and sentences.
2482 Multi-line version of
2485 Encloses its arguments in
2495 Begin a new sub-section.
2498 there's no convention for sub-sections.
2499 Conventional sections, as described in
2500 .Sx MANUAL STRUCTURE ,
2501 rarely have sub-sections.
2503 Sub-section names should be unique so that they may be keyed by
2512 Replace an abbreviation for a standard with the full form.
2513 The following standards are recognised:
2515 .Bl -tag -width "-p1003.1g-2000X" -compact
2609 Reference a section or sub-section.
2610 The referenced section or sub-section name must be identical to the
2611 enclosed argument, including whitespace.
2614 .Dl \&.Sx MANUAL STRUCTURE
2621 Format enclosed arguments in symbolic
2623 Note that this is a presentation term and should not be used for
2624 stylistically decorating technical terms.
2638 .Dq currently under development .
2640 Format the UNIX name.
2641 Accepts no argument.
2660 .Dl \&.Va const char *bar ;
2663 This is also used for indicating global variables in the
2665 section, in which case a variable name is also specified.
2666 Note that it accepts
2667 .Sx Block partial-implicit
2668 syntax when invoked as the first macro in the
2670 section, else it accepts ordinary
2674 Note that this should not be confused with
2676 which is used for function return types.
2679 .Dl \&.Vt unsigned char
2680 .Dl \&.Vt extern const char * const sys_signame[] \&;
2683 .Sx MANUAL STRUCTURE
2687 Close a scope opened by
2690 Extend the header of an
2692 macro or the body of a partial-implicit block macro
2693 beyond the end of the input line.
2694 This macro originally existed to work around the 9-argument limit
2698 Link to another manual
2699 .Pq Qq cross-reference .
2700 Its syntax is as follows:
2702 .D1 Pf \. Sx \&Xr Ar name section
2708 are the name and section of the linked manual.
2711 is followed by non-punctuation, an
2713 is inserted into the token stream.
2714 This behaviour is for compatibility with
2719 .Dl \&.Xr mandoc 1 \&;
2720 .Dl \&.Xr mandoc 1 \&Ns s behaviour
2723 This macro should not be used; it is implemented for compatibility with
2728 in the event of natural paragraph breaks.
2730 Emits vertical space.
2731 This macro should not be used; it is implemented for compatibility with
2733 Its syntax is as follows:
2735 .D1 Pf \. Sx \&sp Op Ar height
2739 argument must be formatted as described in
2740 .Sx Scaling Widths .
2743 asserts a single vertical space.
2745 This section documents compatibility between mandoc and other other
2746 troff implementations, at this time limited to GNU troff
2750 refers to groff versions before 1.17,
2751 which featured a significant update of the
2755 Heirloom troff, the other significant troff implementation accepting
2756 \-mdoc, is similar to historic groff.
2758 The following problematic behaviour is found in groff:
2759 .ds hist (Historic groff only.)
2774 with unknown arguments produces no output at all.
2776 Newer groff and mandoc print
2781 does not recognize trailing punctuation characters when they immediately
2782 precede tabulator characters, but treats them as normal text and
2783 outputs a space before them.
2785 .Sx \&Bd Fl ragged compact
2786 does not start a new line.
2790 with non-standard arguments behaves very strangely.
2791 When there are three arguments, they are printed verbatim.
2792 Any other number of arguments is replaced by the current date,
2793 but without any arguments the string
2798 does not print a dash for an empty argument.
2802 does not start a new line unless invoked as the line macro in the
2810 children causes inconsistent spacing between arguments.
2811 In mandoc, a single space is always inserted between arguments.
2816 causes inconsistent vertical spacing, depending on whether a prior
2823 for the normalised behaviour in mandoc.
2826 ignores additional arguments and is not treated specially in the
2831 sometimes requires a
2835 In new groff and mandoc, any list may be nested by default and
2837 lists will restart the sequence only for the sub-list.
2840 followed by a reserved character is incorrectly used in some manuals
2841 instead of properly quoting that character, which sometimes works with
2845 only accepts a single link-name argument; the remainder is misformatted.
2848 does not format its arguments when used in the FILES section under
2852 can only be called by other macros, but not at the beginning of a line.
2857 Historic groff only allows up to eight or nine arguments per macro input
2858 line, depending on the exact situation.
2859 Providing more arguments causes garbled output.
2860 The number of arguments on one input line is not limited with mandoc.
2862 Historic groff has many un-callable macros.
2863 Most of these (excluding some block-level macros) are callable
2864 in new groff and mandoc.
2867 (vertical bar) is not fully supported as a delimiter.
2874 .Pq font family face
2876 escapes behave irregularly when specified within line-macro scopes.
2878 Negative scaling units return to prior lines.
2879 Instead, mandoc truncates them to zero.
2882 The following features are unimplemented in mandoc:
2890 .Fl offset Ar center
2892 .Fl offset Ar right .
2893 Groff does not implement centered and flush-right rendering either,
2894 but produces large indentations.
2898 .Pq horizontal position ,
2900 .Pq vertical position ,
2904 .Pq text filling colour ,
2906 .Pq zero-length character ,
2910 .Pq horizontal position marker ,
2912 .Pq text overstrike ,
2916 escape sequences are all discarded in mandoc.
2920 scaling unit is accepted by mandoc, but rendered as the default unit.
2922 In quoted literals, groff allows pairwise double-quotes to produce a
2923 standalone double-quote in formatted output.
2924 This is not supported by mandoc.
2937 language first appeared as a troff macro package in
2939 It was later significantly updated by Werner Lemberg and Ruslan Ermilov
2941 The standalone implementation that is part of the
2943 utility written by Kristaps Dzonsons appeared in
2948 reference was written by
2949 .An Kristaps Dzonsons Aq kristaps@bsd.lv .