am-utils: Convert info page to "man 7 am-utils"
authorJohn Marino <draco@marino.st>
Fri, 3 Apr 2015 12:21:17 +0000 (14:21 +0200)
committerJohn Marino <draco@marino.st>
Fri, 3 Apr 2015 13:20:51 +0000 (15:20 +0200)
Each automounter tool had a man page, but the group of utilities was
covered by an info page.  This unique information was converted to
am-utils.7 and the info page has been removed.

Makefile_upgrade.inc
usr.sbin/amd/Makefile
usr.sbin/amd/amd/Makefile
usr.sbin/amd/amd/am-utils.7 [new file with mode: 0644]
usr.sbin/amd/doc/Makefile [deleted file]

index fecf6e7..1ab8531 100644 (file)
@@ -3032,6 +3032,7 @@ TO_REMOVE+=/usr/share/info/gdb.info.gz
 TO_REMOVE+=/usr/share/info/gdbint.info.gz
 TO_REMOVE+=/usr/share/info/stabs.info.gz
 TO_REMOVE+=/usr/share/info/com_err.info.gz
+TO_REMOVE+=/usr/share/info/am-utils.info.gz
 
 .if ${MACHINE_ARCH} == "x86_64"
 TO_REMOVE+=/usr/sbin/stlstats
index 9700962..cfc5b6b 100644 (file)
@@ -4,9 +4,9 @@
 #      This file is under a "BSD" copyright (c) by David O'Brien 1998
 #
 # $FreeBSD: src/usr.sbin/amd/Makefile,v 1.6.2.1 2001/04/25 12:09:12 ru Exp $
-# $DragonFly: src/usr.sbin/amd/Makefile,v 1.2 2003/06/17 04:29:52 dillon Exp $
 #
 
-SUBDIR= include libamu amd amq doc fixmount fsinfo hlfsd mk-amd-map pawd scripts wire-test
+SUBDIR= include libamu amd amq fixmount fsinfo hlfsd mk-amd-map pawd \
+       scripts wire-test
 
 .include <bsd.subdir.mk>
index fec2910..4abc85d 100644 (file)
@@ -4,13 +4,12 @@
 #      This file is under a "BSD" copyright (c) by David O'Brien 1998
 #
 # $FreeBSD: src/usr.sbin/amd/amd/Makefile,v 1.17.2.1 2001/04/25 12:09:12 ru Exp $
-# $DragonFly: src/usr.sbin/amd/amd/Makefile,v 1.4 2006/05/14 18:07:29 swildner Exp $
 #
 
 .PATH:         ${.CURDIR}/../../../contrib/amd/amd
 
 PROG=          amd
-MAN=           amd.8
+MAN=           amd.8 am-utils.7
 
 SRCS=          conf_parse.y conf_tok.l
 SRCS+=         am_ops.c amd.c amfs_auto.c amfs_direct.c amfs_error.c
diff --git a/usr.sbin/amd/amd/am-utils.7 b/usr.sbin/amd/amd/am-utils.7
new file mode 100644 (file)
index 0000000..1425189
--- /dev/null
@@ -0,0 +1,7791 @@
+.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+.    ds C`
+.    ds C'
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
+..
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{
+.    if \nF \{
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
+..
+.        if !\nF==2 \{
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
+.\}
+.rr rF
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "AM-UTILS 7"
+.TH AM-UTILS 7 "2015-04-03" "perl v5.18.4" "DragonFly Miscellaneous Information Manual"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+Automounter Tool Suite \- Conversion of am\-utils.info
+.SH "Top"
+.IX Header "Top"
+.Vb 2
+\&Am\-utils \- The 4.4BSD Automounter Tool Suite
+\&********************************************
+.Ve
+.PP
+Am-utils is the 4.4BSD Automounter Tool Suite, which includes the Amd
+automounter, the Amq query and control program, the Hlfsd daemon, and
+other tools.  This Info file describes how to use and understand the
+tools within Am-utils.
+.PP
+* Menu:
+.PP
+Explains the terms and conditions for using: see \*(L"License\*(R"
+.PP
+and distributing Am-utils.
+How to get the latest Am-utils distribution.: see \*(L"Distrib\*(R"
+.PP
+An introduction to Automounting concepts.: see \*(L"Intro\*(R"
+.PP
+History of am\-utils' development.: see \*(L"History\*(R"
+.PP
+An overview of Amd.: see \*(L"Overview\*(R"
+.PP
+Machines and Systems supported by Amd.: see \*(L"Supported Platforms\*(R"
+.PP
+Details of mount maps: see \*(L"Mount Maps\*(R"
+.PP
+All the Amd command line options explained.: see \*(L"Amd Command Line Options\*(R"
+.PP
+The different mount types supported by Amd.: see \*(L"Filesystem Types\*(R"
+.PP
+The amd.conf file syntax and meaning.: see \*(L"Amd Configuration File\*(R"
+.PP
+How to start, stop and control Amd.: see \*(L"Run-time Administration\*(R"
+.PP
+The FSinfo filesystem management tool.: see \*(L"FSinfo\*(R"
+.PP
+The Home-Link Filesystem server.: see \*(L"Hlfsd\*(R"
+.PP
+Other tools which come with am-utils.: see \*(L"Assorted Tools\*(R"
+.PP
+Some examples showing how Amd might be used.: see \*(L"Examples\*(R"
+.PP
+Implementation details.: see \*(L"Internals\*(R"
+.PP
+Legal Notes: see \*(L"Acknowledgments & Trademarks\*(R"
+.PP
+Indexes
+An item for each concept.: see \*(L"Index\*(R"
+.SS "License"
+.IX Subsection "License"
+Am-utils is not in the public domain; it is copyrighted and there are
+restrictions on its distribution.
+.PP
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+.PP
+1. Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+.PP
+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.
+.PP
+3. All advertising materials mentioning features or use of this
+software must display the following acknowledgment:
+.PP
+\&\*(L"This product includes software developed by the University of
+California, Berkeley and its contributors, as well as the Trustees
+of Columbia University.\*(R"
+.PP
+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.
+.PP
+\&\s-1THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS \*(L"AS IS\*(R" 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 \s0(\s-1INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES\s0; \s-1LOSS OF USE, DATA, OR PROFITS\s0; \s-1OR BUSINESS
+INTERRUPTION\s0) \s-1HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT \s0(\s-1INCLUDING NEGLIGENCE OR OTHERWISE\s0)
+\&\s-1ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.\s0
+.SS "Source Distribution"
+.IX Subsection "Source Distribution"
+The Am-utils home page is located in
+`\fBhttp://www.cs.columbia.edu/~ezk/am\-utils/\fR'
+.PP
+You can get the latest distribution version of Am-utils from
+`\fBftp://shekel.mcl.cs.columbia.edu/pub/am\-utils/am\-utils.tar.gz\fR'
+.PP
+Alpha and beta distributions are available in
+`\fBftp://shekel.mcl.cs.columbia.edu/pub/am\-utils/\fR'.
+.PP
+Revision 5.2 was part of the 4.3BSD Reno distribution.
+.PP
+Revision 5.3bsdnet, a late alpha version of 5.3, was part of the \s-1BSD\s0
+network version 2 distribution
+.PP
+Revision 6.0 was made independently by Erez Zadok
+<ezk@cs.columbia.edu> at the Computer Science Department
+(http://www.cs.columbia.edu/) of Columbia University
+(http://www.columbia.edu/), as part of his PhD thesis work
+(http://www.cs.columbia.edu/~ezk/research/tp/thesis_proposal.html).
+see \*(L"History\*(R", for more details.
+.PP
+Bug Reports
+===========
+.PP
+Before reporting a bug, see if it is a known one in the bugs
+(http://www.cs.columbia.edu/~ezk/am\-utils/BUGS.txt) file.  Send all bug
+reports to <amd\-dev@majordomo.cs.columbia.edu> quoting the details of
+the release and your configuration.  These can be obtained by running
+the command `\fBamd \-v\fR'.  It would greatly help if you could provide a
+reproducible procedure for detecting the bug you are reporting.
+.PP
+Providing working patches is highly encouraged.  Every patch
+incorporated, however small, will get its author an honorable mention in
+the authors file (http://www.cs.columbia.edu/~ezk/am\-utils/AUTHORS.txt).
+.PP
+Mailing List
+============
+.PP
+There are two mailing lists for people interested in keeping up-to-date
+with developments.
+.PP
+1. The older list, `\fBamd-workers\fR' is for general \*(L"how to\*(R" questions and
+announcements.  To subscribe, send a note to
+<amd\-workers\-request@majordomo.glue.umd.edu>.(1)  To post a
+message to this list, send mail to
+<amd\-workers@majordomo.glue.umd.edu>.
+.PP
+2. The developers only list, `\fBamd-dev\fR' is for
+.PP
+\&\- announcements of alpha and beta releases of am-utils
+.PP
+\&\- reporting of bugs and patches
+.PP
+\&\- discussions of new features for am-utils
+.PP
+\&\- implementation and porting issues
+.PP
+To subscribe, send a note to <majordomo@majordomo.cs.columbia.edu>
+with the single body text line `\fBsubscribe amd-dev\fR'.  To post a
+message to this list, send mail to
+<amd\-dev@majordomo.cs.columbia.edu>.  To avoid as much spam as
+possible, only subscribers to this list may post to it.
+.PP
+Subscribers of `\fBamd-dev\fR' are most suitable if they have the time
+and resources to test new and buggy versions of amd, on as many
+different platforms as possible.  They should also be prepared to
+learn and use the \s-1GNU\s0 Autoconf, Automake, and Libtool packages,
+and of course, be very familiar with the complex code in the
+am-utils package.  In other words, subscribers on this list should
+be able to contribute meaningfully to the development of amd.
+.PP
+\&\-\-\-\-\-\-\-\-\-\- Footnotes \-\-\-\-\-\-\-\-\-\-
+.PP
+(1) Note that the older address, <amd\-workers\-request@acl.lanl.gov>,
+is defunct.
+.SS "Introduction"
+.IX Subsection "Introduction"
+An \*(L"automounter\*(R" maintains a cache of mounted filesystems.  Filesystems
+are mounted on demand when they are first referenced, and unmounted
+after a period of inactivity.
+.PP
+Amd may be used as a replacement for Sun's automounter.  The choice
+of which filesystem to mount can be controlled dynamically with
+\&\*(L"selectors\*(R".  Selectors allow decisions of the form \*(L"hostname is \s-1THIS,\*(R"\s0
+or \*(L"architecture is not \s-1THAT.\*(R" \s0 Selectors may be combined arbitrarily.
+Amd also supports a variety of filesystem types, including \s-1NFS, UFS\s0 and
+the novel \*(L"program\*(R" filesystem.  The combination of selectors and
+multiple filesystem types allows identical configuration files to be
+used on all machines thus reducing the administrative overhead.
+.PP
+Amd ensures that it will not hang if a remote server goes down.
+Moreover, Amd can determine when a remote server has become
+inaccessible and then mount replacement filesystems as and when they
+become available.
+.PP
+Amd contains no proprietary source code and has been ported to
+numerous flavors of Unix.
+.SS "History"
+.IX Subsection "History"
+The Amd package has been without an official maintainer since 1992.
+Several people have stepped in to maintain it unofficially.  Most
+notable were the `\fBupl\fR' (Unofficial Patch Level) releases of Amd,
+created by me (Erez Zadok <ezk@cs.columbia.edu>), and available from
+`\fBftp://ftp.cs.columbia.edu/pub/amd/\fR'.  The last such unofficial release
+was `\fBupl102\fR'.
+.PP
+Through the process of patching and aging, it was becoming more and
+more apparent that Amd was in much need of revitalizing.  Maintaining
+Amd had become a difficult task.  I took it upon myself to cleanup the
+code, so that it would be easier to port to new platforms, add new
+features, keep up with the many new feature requests, and deal with the
+never ending stream of bug reports.
+.PP
+I have been working on such a release of Amd on and off since
+January of 1996.  The new suite of tools is currently named \*(L"am-utils\*(R"
+(AutoMounter Utilities), in line with \s-1GNU\s0 naming conventions, befitting
+the contents of the package.  In October of 1996 I had received enough
+offers to help me with this task that I decided to make a mailing list
+for this group of people.  Around the same time, Amd had become a
+necessary part of my PhD thesis work, resulting in more work performed
+on am-utils.
+.PP
+Am-utils version 6.0 was numbered with a major new release number to
+distinguish it from the last official release of Amd (5.x).  Many new
+features have been added such as a \s-1GNU\s0 `\fBconfigure\fR' system, \s-1NFS\s0 Version
+3, Autofs support, a run-time configuration file (`\fBamd.conf\fR'), many new
+ports, more scripts and programs, as well as numerous bug fixes.
+Another reason for the new major release number was to alert users of
+am-utils that user-visible interfaces may have changed.  In order to
+make Amd work well for the next 10 years, and be easier to maintain, it
+was necessary to remove old or unused features, change various syntax
+files, etc.  However, great care was taken to ensure the maximum
+possible backwards compatibility.
+.SS "1 Overview"
+.IX Subsection "1 Overview"
+Amd maintains a cache of mounted filesystems.  Filesystems are
+\&\*(L"demand-mounted\*(R" when they are first referenced, and unmounted after a
+period of inactivity.  Amd may be used as a replacement for Sun's
+\&\fIautomount\fR\|(8) program.  It contains no proprietary source code and has
+been ported to numerous flavors of Unix.  see \*(L"Supported Platforms\*(R".
+.PP
+Amd was designed as the basis for experimenting with filesystem
+layout and management.  Although Amd has many direct applications it is
+loaded with additional features which have little practical use.  At
+some point the infrequently used components may be removed to streamline
+the production system.
+.PP
+* Menu:
+.PP
+See also \*(L"Fundamentals\*(R"
+.PP
+See also \*(L"Filesystems and Volumes\*(R"
+.PP
+See also \*(L"Volume Naming\*(R"
+.PP
+See also \*(L"Volume Binding\*(R"
+.PP
+See also \*(L"Operational Principles\*(R"
+.PP
+See also \*(L"Mounting a Volume\*(R"
+.PP
+See also \*(L"Automatic Unmounting\*(R"
+.PP
+See also \*(L"Keep-alives\*(R"
+.PP
+See also \*(L"Non-blocking Operation\*(R"
+.PP
+\&\fB1.1 Fundamentals\fR
+.PP
+The fundamental concept behind Amd is the ability to separate the name
+used to refer to a file from the name used to refer to its physical
+storage location.  This allows the same files to be accessed with the
+same name regardless of where in the network the name is used.  This is
+very different from placing `\fB/n/hostname\fR' in front of the pathname
+since that includes location dependent information which may change if
+files are moved to another machine.
+.PP
+By placing the required mappings in a centrally administered
+database, filesystems can be re-organized without requiring changes to
+configuration files, shell scripts and so on.
+.PP
+\&\fB1.2 Filesystems and Volumes\fR
+.PP
+Amd views the world as a set of fileservers, each containing one or
+more filesystems where each filesystem contains one or more \*(L"volumes\*(R".
+Here the term \*(L"volume\*(R" is used to refer to a coherent set of files such
+as a user's home directory or a TeX distribution.
+.PP
+In order to access the contents of a volume, Amd must be told in
+which filesystem the volume resides and which host owns the filesystem.
+By default the host is assumed to be local and the volume is assumed to
+be the entire filesystem.  If a filesystem contains more than one
+volume, then a \*(L"sublink\*(R" is used to refer to the sub-directory within
+the filesystem where the volume can be found.
+.PP
+\&\fB1.3 Volume Naming\fR
+.PP
+Volume names are defined to be unique across the entire network.  A
+volume name is the pathname to the volume's root as known by the users
+of that volume.  Since this name uniquely identifies the volume
+contents, all volumes can be named and accessed from each host, subject
+to administrative controls.
+.PP
+Volumes may be replicated or duplicated.  Replicated volumes contain
+identical copies of the same data and reside at two or more locations in
+the network.  Each of the replicated volumes can be used
+interchangeably.  Duplicated volumes each have the same name but contain
+different, though functionally identical, data.  For example,
+`\fB/vol/tex\fR' might be the name of a TeX distribution which varied for
+each machine architecture.
+.PP
+Amd provides facilities to take advantage of both replicated and
+duplicated volumes.  Configuration options allow a single set of
+configuration data to be shared across an entire network by taking
+advantage of replicated and duplicated volumes.
+.PP
+Amd can take advantage of replacement volumes by mounting them as
+required should an active fileserver become unavailable.
+.PP
+\&\fB1.4 Volume Binding\fR
+.PP
+Unix implements a namespace of hierarchically mounted filesystems.  Two
+forms of binding between names and files are provided.  A \*(L"hard link\*(R"
+completes the binding when the name is added to the filesystem.  A
+\&\*(L"soft link\*(R" delays the binding until the name is accessed.  An
+\&\*(L"automounter\*(R" adds a further form in which the binding of name to
+filesystem is delayed until the name is accessed.
+.PP
+The target volume, in its general form, is a tuple (host, filesystem,
+sublink) which can be used to name the physical location of any volume
+in the network.
+.PP
+When a target is referenced, Amd ignores the sublink element and
+determines whether the required filesystem is already mounted.  This is
+done by computing the local mount point for the filesystem and checking
+for an existing filesystem mounted at the same place.  If such a
+filesystem already exists then it is assumed to be functionally
+identical to the target filesystem.  By default there is a one-to-one
+mapping between the pair (host, filesystem) and the local mount point so
+this assumption is valid.
+.PP
+\&\fB1.5 Operational Principles\fR
+.PP
+Amd operates by introducing new mount points into the namespace.  These
+are called \*(L"automount\*(R" points.  The kernel sees these automount points
+as \s-1NFS\s0 filesystems being served by Amd.  Having attached itself to the
+namespace, Amd is now able to control the view the rest of the system
+has of those mount points.  \s-1RPC\s0 calls are received from the kernel one
+at a time.
+.PP
+When a \*(L"lookup\*(R" call is received Amd checks whether the name is
+already known.  If it is not, the required volume is mounted.  A
+symbolic link pointing to the volume root is then returned.  Once the
+symbolic link is returned, the kernel will send all other requests
+direct to the mounted filesystem.
+.PP
+If a volume is not yet mounted, Amd consults a configuration
+\&\*(L"mount-map\*(R" corresponding to the automount point.  Amd then makes a
+runtime decision on what and where to mount a filesystem based on the
+information obtained from the map.
+.PP
+Amd does not implement all the \s-1NFS\s0 requests; only those relevant to
+name binding such as \*(L"lookup\*(R", \*(L"readlink\*(R" and \*(L"readdir\*(R".  Some other
+calls are also implemented but most simply return an error code; for
+example \*(L"mkdir\*(R" always returns \*(L"read-only filesystem\*(R".
+.PP
+\&\fB1.6 Mounting a Volume\fR
+.PP
+Each automount point has a corresponding mount map.  The mount map
+contains a list of key-value pairs.  The key is the name of the volume
+to be mounted.  The value is a list of locations describing where the
+filesystem is stored in the network.  In the source for the map the
+value would look like
+.PP
+location1  location2  ...  locationN
+.PP
+Amd examines each location in turn.  Each location may contain
+\&\*(L"selectors\*(R" which control whether Amd can use that location.  For
+example, the location may be restricted to use by certain hosts.  Those
+locations which cannot be used are ignored.
+.PP
+Amd attempts to mount the filesystem described by each remaining
+location until a mount succeeds or Amd can no longer proceed.  The
+latter can occur in three ways:
+.PP
+* If none of the locations could be used, or if all of the locations
+caused an error, then the last error is returned.
+.PP
+* If a location could be used but was being mounted in the
+background then Amd marks that mount as being \*(L"in progress\*(R" and
+continues with the next request; no reply is sent to the kernel.
+.PP
+* Lastly, one or more of the mounts may have been \*(L"deferred\*(R".  A
+mount is deferred if extra information is required before the
+mount can proceed.  When the information becomes available the
+mount will take place, but in the mean time no reply is sent to
+the kernel.  If the mount is deferred, Amd continues to try any
+remaining locations.
+.PP
+Once a volume has been mounted, Amd establishes a \*(L"volume mapping\*(R"
+which is used to satisfy subsequent requests.
+.PP
+\&\fB1.7 Automatic Unmounting\fR
+.PP
+To avoid an ever increasing number of filesystem mounts, Amd removes
+volume mappings which have not been used recently.  A time-to-live
+interval is associated with each mapping and when that expires the
+mapping is removed.  When the last reference to a filesystem is removed,
+that filesystem is unmounted.  If the unmount fails, for example the
+filesystem is still busy, the mapping is re-instated and its
+time-to-live interval is extended.  The global default for this grace
+period is controlled by the `\fB\-w\fR' command-line option (*note \-w: \-w
+Option.) or the amd.conf parameter `\fBdismount_interval\fR' (*note
+dismount_interval Parameter::).  It is also possible to set this value
+on a per-mount basis (*note opts: opts Option.).
+.PP
+Filesystems can be forcefully timed out using the Amq command.
+see \*(L"Run-time Administration\*(R".
+.PP
+\&\fB1.8 Keep-alives\fR
+.PP
+Use of some filesystem types requires the presence of a server on
+another machine.  If a machine crashes then it is of no concern to
+processes on that machine that the filesystem is unavailable.  However,
+to processes on a remote host using that machine as a fileserver this
+event is important.  This situation is most widely recognized when an
+\&\s-1NFS\s0 server crashes and the behavior observed on client machines is that
+more and more processes hang.  In order to provide the possibility of
+recovery, Amd implements a \*(L"keep-alive\*(R" interval timer for some
+filesystem types.  Currently only \s-1NFS\s0 makes use of this service.
+.PP
+The basis of the \s-1NFS\s0 keep-alive implementation is the observation
+that most sites maintain replicated copies of common system data such as
+manual pages, most or all programs, system source code and so on.  If
+one of those servers goes down it would be reasonable to mount one of
+the others as a replacement.
+.PP
+The first part of the process is to keep track of which fileservers
+are up and which are down.  Amd does this by sending \s-1RPC\s0 requests to the
+servers' \s-1NFS\s0 `\fBNullProc\fR' and checking whether a reply is returned.
+While the server state is uncertain the requests are re-transmitted at
+three second intervals and if no reply is received after four attempts
+the server is marked down.  If a reply is received the fileserver is
+marked up and stays in that state for 30 seconds at which time another
+\&\s-1NFS\s0 ping is sent.
+.PP
+Once a fileserver is marked down, requests continue to be sent every
+30 seconds in order to determine when the fileserver comes back up.
+During this time any reference through Amd to the filesystems on that
+server fail with the error \*(L"Operation would block\*(R".  If a replacement
+volume is available then it will be mounted, otherwise the error is
+returned to the user.
+.PP
+Although this action does not protect user files, which are unique on
+the network, or processes which do not access files via Amd or already
+have open files on the hung filesystem, it can prevent most new
+processes from hanging.
+.PP
+By default, fileserver state is not maintained for \s-1NFS/TCP\s0 mounts.
+The remote fileserver is always assumed to be up.
+.PP
+\&\fB1.9 Non-blocking Operation\fR
+.PP
+Since there is only one instance of Amd for each automount point, and
+usually only one instance on each machine, it is important that it is
+always available to service kernel calls.  Amd goes to great lengths to
+ensure that it does not block in a system call.  As a last resort Amd
+will fork before it attempts a system call that may block indefinitely,
+such as mounting an \s-1NFS\s0 filesystem.  Other tasks such as obtaining
+filehandle information for an \s-1NFS\s0 filesystem, are done using a purpose
+built non-blocking \s-1RPC\s0 library which is integrated with Amd's task
+scheduler.  This library is also used to implement \s-1NFS\s0 keep-alives
+(see \*(L"Keep-alives\*(R").
+.PP
+Whenever a mount is deferred or backgrounded, Amd must wait for it
+to complete before replying to the kernel.  However, this would cause
+Amd to block waiting for a reply to be constructed.  Rather than do
+this, Amd simply \*(L"drops\*(R" the call under the assumption that the kernel
+\&\s-1RPC\s0 mechanism will automatically retry the request.
+.SS "2 Supported Platforms"
+.IX Subsection "2 Supported Platforms"
+Am-utils has been ported to a wide variety of machines and operating
+systems.  Am-utils's code works for little-endian and big-endian
+machines, as well as 32 bit and 64 bit architectures.  Furthermore, when
+Am-utils ports to an Operating System on one architecture, it is
+generally readily portable to the same Operating System on all
+platforms on which it is available.
+.PP
+The table below lists those platforms supported by the latest
+release.  The listing is based on the standard output from \s-1GNU\s0's
+`\fBconfig.guess\fR' script.  Since significant changes have been made to
+am-utils, not all systems listed here have been verified working for all
+features.
+.PP
+Auto-Configured System Name   Config   Compile   Amd   \s-1NFS3  \s0 Shlib   Hlfsd
+alpha\-dec\-osf2.1              yes      yes       yes   ?      no      ?
+alpha\-dec\-osf4.0              yes      yes       yes   yes    yes     ?
+alphaev5\-unknown\-linux\-gnu    yes      yes       yes   n/a    yes     ?
+alphaev5\-unknown\-linux\-gnu\-rh5.2yes      yes       yes   n/a    yes     ?
+hppa1.0\-hp\-hpux11.00          yes      yes       yes   no     yes     ?
+hppa1.1\-hp\-hpux10.10          yes      yes       yes   n/a    no      ?
+hppa1.1\-hp\-hpux10.20          yes      yes       yes   no     no      ?
+hppa1.1\-hp\-hpux9.01           yes      yes       yes   n/a    yes     ?
+hppa1.1\-hp\-hpux9.05           yes      yes       yes   n/a    yes     ?
+hppa1.1\-hp\-hpux9.07           yes      yes       yes   n/a    yes     ?
+hppa2.0w\-hp\-hpux11.00         yes      yes       yes   n/a    yes     ?
+i386\-pc\-bsdi2.1               yes      yes       yes   n/a    no      ?
+i386\-pc\-bsdi3.0               yes      yes       yes   yes    no      ?
+i386\-pc\-bsdi3.1               yes      yes       yes   yes    no      ?
+i386\-pc\-bsdi4.0               yes      yes       yes   yes    yes     ?
+i386\-pc\-bsdi4.0.1             yes      yes       yes   yes    yes     ?
+i386\-pc\-solaris2.5.1          yes      yes       yes   yes    yes     yes
+i386\-pc\-solaris2.6            yes      yes       yes   yes    yes     yes
+i386\-pc\-solaris2.7            yes      yes       yes   yes    yes     yes
+i386\-unknown\-freebsd2.1.0     yes      yes       yes   n/a    ?       ?
+i386\-unknown\-freebsd2.2.1     yes      yes       yes   n/a    yes     ?
+i386\-unknown\-freebsd2.2.6     yes      yes       yes   n/a    yes     ?
+i386\-unknown\-freebsd2.2.7     yes      yes       yes   n/a    yes     ?
+i386\-unknown\-freebsd2.2.8     yes      yes       yes   n/a    yes     ?
+i386\-unknown\-freebsd3.0       yes      yes       yes   yes    yes     ?
+i386\-unknown\-freebsdelf3.0    yes      yes       yes   yes    yes     ?
+i386\-unknown\-freebsdelf3.1    yes      yes       yes   yes    yes     ?
+i386\-unknown\-freebsdelf3.2    yes      yes       yes   yes    yes     ?
+i386\-unknown\-freebsdelf3.3    yes      yes       yes   yes    yes     ?
+i386\-unknown\-freebsdelf4.0    yes      yes       yes   yes    yes     ?
+i386\-unknown\-netbsd1.2.1      yes      yes       yes   yes    yes     ?
+i386\-unknown\-netbsd1.3        yes      yes       yes   yes    yes     ?
+i386\-unknown\-netbsd1.3.1      yes      yes       yes   yes    yes     ?
+i386\-unknown\-netbsd1.3.2      yes      yes       yes   yes    yes     ?
+i386\-unknown\-netbsd1.3.3      yes      yes       yes   yes    yes     ?
+i386\-unknown\-netbsd1.4        yes      yes       yes   yes    yes     ?
+i386\-unknown\-openbsd2.1       yes      yes       yes   yes    yes     ?
+i386\-unknown\-openbsd2.2       yes      yes       yes   yes    yes     ?
+i386\-unknown\-openbsd2.3       yes      yes       yes   yes    yes     ?
+i386\-unknown\-openbsd2.4       yes      yes       yes   yes    yes     ?
+i386\-unknown\-openbsd2.5       yes      yes       yes   yes    yes     ?
+i486\-ncr\-sysv4.3.03           yes      yes       ?     yes    yes     ?
+i486\-pc\-linux\-gnu\-rh6.0       yes      yes       yes   n/a    yes     ?
+i486\-pc\-linux\-gnulibc1        yes      yes       yes   n/a    yes     ?
+i486\-pc\-linux\-gnulibc1\-rh4.2  yes      yes       yes   n/a    yes     ?
+i486\-pc\-linux\-gnuoldld        yes      yes       yes   n/a    yes     ?
+i586\-pc\-linux\-gnu             yes      yes       yes   n/a    yes     ?
+i586\-pc\-linux\-gnu\-rh5.2       yes      yes       yes   n/a    yes     ?
+i586\-pc\-linux\-gnu\-rh6.0       yes      yes       yes   n/a    yes     ?
+i586\-pc\-linux\-gnu\-rh6.1       yes      yes       yes   n/a    yes     ?
+i586\-pc\-linux\-gnulibc1        yes      yes       yes   n/a    yes     ?
+i586\-pc\-linux\-gnulibc1\-rh4.2  yes      yes       yes   n/a    yes     ?
+i686\-pc\-linux\-gnu             yes      yes       yes   n/a    yes     ?
+i686\-pc\-linux\-gnu\-rh5.2       yes      yes       yes   n/a    yes     ?
+i686\-pc\-linux\-gnu\-rh6.0       yes      yes       yes   n/a    yes     ?
+i686\-pc\-linux\-gnulibc         yes      yes       yes   n/a    yes     ?
+i686\-pc\-linux\-gnulibc1        yes      yes       yes   n/a    yes     ?
+m68k\-hp\-hpux9.00              yes      yes       yes   n/a    ?       ?
+m68k\-sun\-sunos4.1.1           yes      yes       yes   n/a    no      ?
+m68k\-next\-nextstep3           yes      yes       yes   n/a    no      ?
+mips\-dec\-ultrix4.3            yes      yes       yes   n/a    ?       ?
+mips\-sgi\-irix5.2              ?        ?         ?     ?      ?       ?
+mips\-sgi\-irix5.3              yes      yes       yes   yes    yes     ?
+mips\-sgi\-irix6.2              yes      yes       yes   yes    yes     ?
+mips\-sgi\-irix6.4              yes      yes       yes   yes    yes     ?
+mips\-sgi\-irix6.5              yes      yes       ?     yes    yes     ?
+powerpc\-ibm\-aix4.1.5.0        yes      yes       yes   n/a    no/broken?
+powerpc\-ibm\-aix4.2.1.0        yes      yes       yes   yes    no/broken?
+powerpc\-ibm\-aix4.3.1.0        yes      yes       ?     yes    ?       ?
+powerpc-unknown-linux-gnu     yes      yes       yes   n/a    yes     ?
+rs6000\-ibm\-aix3.2             yes      yes       yes   n/a    ?       ?
+rs6000\-ibm\-aix3.2.5           yes      yes       yes   n/a    ?       ?
+rs6000\-ibm\-aix4.1.4.0         yes      yes       yes   n/a    no/broken?
+rs6000\-ibm\-aix4.1.5.0         yes      yes       yes   n/a    no/broken?
+sparc\-sun\-solaris2.3          yes      yes       yes   n/a    yes     ?
+sparc\-sun\-solaris2.4          yes      yes       yes   n/a    yes     ?
+sparc\-sun\-solaris2.5          yes      yes       yes   yes    yes     ?
+sparc\-sun\-solaris2.5.1        yes      yes       yes   yes    yes     yes
+sparc\-sun\-solaris2.6          yes      yes       yes   yes    yes     yes
+sparc\-sun\-solaris2.7          yes      yes       yes   yes    yes     yes
+sparc\-sun\-sunos4.1.1          yes      yes       yes   n/a    yes     ?
+sparc\-sun\-sunos4.1.3          yes      yes       yes   n/a    yes     ?
+sparc\-sun\-sunos4.1.3C         yes      yes       yes   n/a    yes     ?
+sparc\-sun\-sunos4.1.3_U1       yes      yes       yes   n/a    yes     ?
+sparc\-sun\-sunos4.1.4          yes      yes       yes   n/a    yes     ?
+sparc\-unknown\-linux\-gnulibc1  yes      yes       yes   n/a    yes     ?
+sparc\-unknown\-netbsd1.2E      yes      yes       yes   ?      ?       ?
+sparc\-unknown\-netbsd1.2G      yes      yes       yes   ?      ?       ?
+sparc64\-unknown\-linux\-gnu     yes      yes       yes   n/a    yes     ?
+.PP
+See the `\fB\s-1INSTALL\s0\fR' in the distribution for more specific details on
+building and/or configuring for some systems.
+.SS "3 Mount Maps"
+.IX Subsection "3 Mount Maps"
+Amd has no built-in knowledge of machines or filesystems.  External
+\&\*(L"mount-maps\*(R" are used to provide the required information.
+Specifically, Amd needs to know when and under what conditions it
+should mount filesystems.
+.PP
+The map entry corresponding to the requested name contains a list of
+possible locations from which to resolve the request.  Each location
+specifies filesystem type, information required by that filesystem (for
+example the block special device in the case of \s-1UFS\s0), and some
+information describing where to mount the filesystem (*note fs
+Option::).  A location may also contain \*(L"selectors\*(R" (see \*(L"Selectors\*(R").
+.PP
+* Menu:
+.PP
+See also \*(L"Map Types\*(R"
+.PP
+See also \*(L"Key Lookup\*(R"
+.PP
+See also \*(L"Location Format\*(R"
+.PP
+\&\fB3.1 Map Types\fR
+.PP
+A mount-map provides the run-time configuration information to Amd.
+Maps can be implemented in many ways.  Some of the forms supported by
+Amd are regular files, ndbm databases, \s-1NIS\s0 maps, the \*(L"Hesiod\*(R" name
+server, and even the password file.
+.PP
+A mount-map \*(L"name\*(R" is a sequence of characters.  When an automount
+point is created a handle on the mount-map is obtained.  For each map
+type configured, Amd attempts to reference the map of the appropriate
+type.  If a map is found, Amd notes the type for future use and deletes
+the reference, for example closing any open file descriptors.  The
+available maps are configured when Amd is built and can be displayed by
+running the command `\fBamd \-v\fR'.
+.PP
+When using an Amd configuration file (see \*(L"Amd Configuration File\*(R")
+and the keyword `\fBmap_type\fR' (see \*(L"map_type Parameter\*(R"), you may force
+the map used to any type.
+.PP
+By default, Amd caches data in a mode dependent on the type of map.
+This is the same as specifying `\fBcache:=mapdefault\fR' and selects a
+suitable default cache mode depending on the map type.  The individual
+defaults are described below.  The \s-1CACHE\s0 option can be specified on
+automount points to alter the caching behavior (*note Automount
+Filesystem::).
+.PP
+The following map types have been implemented, though some are not
+available on all machines.  Run the command `\fBamd \-v\fR' to obtain a list
+of map types configured on your machine.
+.PP
+* Menu:
+.PP
+See also \*(L"File maps\*(R"
+.PP
+See also \*(L"ndbm maps\*(R"
+.PP
+See also \*(L"\s-1NIS\s0 maps\*(R"
+.PP
+See also \*(L"\s-1NIS+\s0 maps\*(R"
+.PP
+See also \*(L"Hesiod maps\*(R"
+.PP
+See also \*(L"Password maps\*(R"
+.PP
+See also \*(L"Union maps\*(R"
+.PP
+See also \*(L"\s-1LDAP\s0 maps\*(R"
+.PP
+\&\fB3.1.1 File maps\fR
+.PP
+When Amd searches a file for a map entry it does a simple scan of the
+file and supports both comments and continuation lines.
+.PP
+Continuation lines are indicated by a backslash character (`\fB\e\fR') as
+the last character of a line in the file.  The backslash, newline
+character _and any leading white space on the following line_ are
+discarded.  A maximum line length of 2047 characters is enforced after
+continuation lines are read but before comments are stripped.  Each
+line must end with a newline character; that is newlines are
+terminators, not separators.  The following examples illustrate this:
+.PP
+key     valA   valB;   \e
+valC
+.PP
+specifies _three_ locations, and is identical to
+.PP
+key     valA   valB;   valC
+.PP
+However,
+.PP
+key     valA   valB;\e
+valC
+.PP
+specifies only _two_ locations, and is identical to
+.PP
+key     valA   valB;valC
+.PP
+After a complete line has been read from the file, including
+continuations, Amd determines whether there is a comment on the line.
+A comment begins with a hash ("`\fB#\fR'") character and continues to the end
+of the line.  There is no way to escape or change the comment lead-in
+character.
+.PP
+Note that continuation lines and comment support \*(L"only\*(R" apply to
+file maps, or ndbm maps built with the `\fBmk-amd-map\fR' program.
+.PP
+When caching is enabled, file maps have a default cache mode of
+`\fBall\fR' (see \*(L"Automount Filesystem\*(R").
+.PP
+\&\fB3.1.2 ndbm maps\fR
+.PP
+An ndbm map may be used as a fast access form of a file map.  The
+program, `\fBmk-amd-map\fR', converts a normal map file into an ndbm database.
+This program supports the same continuation and comment conventions that
+are provided for file maps.  Note that ndbm format files may _not_ be
+sharable across machine architectures.  The notion of speed generally
+only applies to large maps; a small map, less than a single disk block,
+is almost certainly better implemented as a file map.
+.PP
+ndbm maps have a default cache mode of `\fBall\fR' (*note Automount
+Filesystem::).
+.PP
+\&\fB3.1.3 \s-1NIS\s0 maps\fR
+.PP
+When using \s-1NIS \s0(formerly \s-1YP\s0), an Amd map is implemented directly by the
+underlying \s-1NIS\s0 map.  Comments and continuation lines are _not_
+supported in the automounter and must be stripped when constructing the
+\&\s-1NIS\s0 server's database.
+.PP
+\&\s-1NIS\s0 maps have a default cache mode of `\fBall\fR' (*note Automount
+Filesystem::).
+.PP
+The following rule illustrates what could be added to your \s-1NIS\s0
+`\fBMakefile\fR', in this case causing the `\fBamd.home\fR' map to be rebuilt:
+$(\s-1YPTSDIR\s0)/amd.home.time: $(\s-1ETCDIR\s0)/amd.home
+\&\-@sed \-e \*(L"s/#.*$$//\*(R" \-e \*(L"/^$$/d\*(R" $(\s-1ETCDIR\s0)/amd.home | \e
+awk '{  \e
+for (i = 1; i <= \s-1NF\s0; i++) \e
+if (i == \s-1NF\s0) { \e
+if (substr($$i, length($$i), 1) == \*(L"\e\e\*(R") \e
+printf(\*(L"%s\*(R", substr($$i, 1, length($$i) \- 1)); \e
+else \e
+printf(\*(L"%s\en\*(R", $$i); \e
+} \e
+else \e
+printf(\*(L"%s \*(R", $$i); \e
+}' | \e
+$(\s-1MAKEDBM\s0) \- $(\s-1YPDBDIR\s0)/amd.home; \e
+touch $(\s-1YPTSDIR\s0)/amd.home.time; \e
+echo \*(L"updated amd.home\*(R"; \e
+if [ ! $(\s-1NOPUSH\s0) ]; then \e
+$(\s-1YPPUSH\s0) amd.home; \e
+echo \*(L"pushed amd.home\*(R"; \e
+else \e
+: ; \e
+fi
+.PP
+Here `\fB$(\s-1YPTSDIR\s0)\fR' contains the time stamp files, and `\fB$(\s-1YPDBDIR\s0)\fR'
+contains the dbm format \s-1NIS\s0 files.
+.PP
+\&\fB3.1.4 \s-1NIS+\s0 maps\fR
+.PP
+\&\s-1NIS+\s0 maps do not support cache mode `\fBall\fR' and, when caching is enabled,
+have a default cache mode of `\fBinc\fR'.
+.PP
+\&\s-1XXX: FILL IN WITH AN EXAMPLE.\s0
+.PP
+\&\fB3.1.5 Hesiod maps\fR
+.PP
+When the map name begins with the string `\fBhesiod.\fR' lookups are made
+using the \*(L"Hesiod\*(R" name server.  The string following the dot is used
+as a name qualifier and is prepended with the key being located.  The
+entire string is then resolved in the `\fBautomount\fR' context, or the
+amd.conf parameter `\fBhesiod_base\fR' (see \*(L"hesiod_base Parameter\*(R").  For
+example, if the the key is `\fBjsp\fR' and map name is `\fBhesiod.homes\fR' then
+\&\*(L"Hesiod\*(R" is asked to resolve `\fBjsp.homes.automount\fR'.
+.PP
+Hesiod maps do not support cache mode `\fBall\fR' and, when caching is
+enabled, have a default cache mode of `\fBinc\fR' (*note Automount
+Filesystem::).
+.PP
+The following is an example of a \*(L"Hesiod\*(R" map entry:
+.PP
+jsp.homes.automount \s-1HS TXT \s0\*(L"rfs:=/home/charm;rhost:=charm;sublink:=jsp\*(R"
+njw.homes.automount \s-1HS TXT \s0\*(L"rfs:=/home/dylan/dk2;rhost:=dylan;sublink:=njw\*(R"
+.PP
+\&\fB3.1.6 Password maps\fR
+.PP
+The password map support is unlike the four previous map types.  When
+the map name is the string `\fB/etc/passwd\fR' Amd can lookup a user name in
+the password file and re-arrange the home directory field to produce a
+usable map entry.
+.PP
+Amd assumes the home directory has the format
+`\fB/anydir/dom1/../domN/login\fR'.  It breaks this string into a map entry
+where `\fB${rfs}\fR' has the value `\fB/anydir/domN\fR', `\fB${rhost}\fR' has the value
+`\fBdomN.....dom1\fR', and `\fB${sublink}\fR' has the value login.
+.PP
+Thus if the password file entry was
+.PP
+/home/achilles/jsp
+.PP
+the map entry used by Amd would be
+.PP
+rfs:=/home/achilles;rhost:=achilles;sublink:=jsp
+.PP
+Similarly, if the password file entry was
+.PP
+/home/cc/sugar/mjh
+.PP
+the map entry used by Amd would be
+.PP
+rfs:=/home/sugar;rhost:=sugar.cc;sublink:=jsp
+.PP
+\&\fB3.1.7 Union maps\fR
+.PP
+The union map support is provided specifically for use with the union
+filesystem, see \*(L"Union Filesystem\*(R".
+.PP
+It is identified by the string `\fBunion:\fR' which is followed by a colon
+separated list of directories.  The directories are read in order, and
+the names of all entries are recorded in the map cache.  Later
+directories take precedence over earlier ones.  The union filesystem
+type then uses the map cache to determine the union of the names in all
+the directories.
+.PP
+\&\fB3.1.8 \s-1LDAP\s0 maps\fR
+.PP
+\&\s-1LDAP \s0(Lightweight Directory Access Protocol) maps do not support cache
+mode `\fBall\fR' and, when caching is enabled, have a default cache mode of
+`\fBinc\fR'.
+.PP
+For example, an Amd map `\fBamd.home\fR' that looks as follows:
+.PP
+/defaults    opts:=rw,intr;type:=link
+.PP
+zing         \-rhost:=shekel \e
+host==shekel \e
+host!=shekel;type:=nfs
+when converted to \s-1LDAP \s0(see \*(L"amd2ldif\*(R"), will result in the
+following \s-1LDAP\s0 database:
+$ amd2ldif amd.home \s-1CUCS\s0 < amd.home
+dn: cn=amdmap timestamp, \s-1CUCS\s0
+cn             : amdmap timestamp
+objectClass    : amdmapTimestamp
+amdmapTimestamp: 873071363
+.PP
+dn: cn=amdmap amd.home[/defaults], \s-1CUCS\s0
+cn          : amdmap amd.home[/defaults]
+objectClass : amdmap
+amdmapName  : amd.home
+amdmapKey   : /defaults
+amdmapValue : opts:=rw,intr;type:=link
+.PP
+dn: cn=amdmap amd.home[], \s-1CUCS\s0
+cn          : amdmap amd.home[]
+objectClass : amdmap
+amdmapName  : amd.home
+amdmapKey   :
+amdmapValue :
+.PP
+dn: cn=amdmap amd.home[zing], \s-1CUCS\s0
+cn          : amdmap amd.home[zing]
+objectClass : amdmap
+amdmapName  : amd.home
+amdmapKey   : zing
+amdmapValue : \-rhost:=shekel host==shekel host!=shekel;type:=nfs
+.PP
+\&\fB3.2 How keys are looked up\fR
+.PP
+The key is located in the map whose type was determined when the
+automount point was first created.  In general the key is a pathname
+component.  In some circumstances this may be modified by variable
+expansion (see \*(L"Variable Expansion\*(R") and prefixing.  If the automount
+point has a prefix, specified by the \s-1PREF\s0 option, then that is
+prepended to the search key before the map is searched.
+.PP
+If the map cache is a `\fBregexp\fR' cache then the key is treated as an
+egrep-style regular expression, otherwise a normal string comparison is
+made.
+.PP
+If the key cannot be found then a \*(L"wildcard\*(R" match is attempted.
+Amd repeatedly strips the basename from the key, appends `\fB/*\fR' and
+attempts a lookup.  Finally, Amd attempts to locate the special key `\fB*\fR'.
+.PP
+For example, the following sequence would be checked if
+`\fBhome/dylan/dk2\fR' was being located:
+.PP
+home/dylan/dk2
+home/dylan/*
+home/*
+*
+.PP
+At any point when a wildcard is found, Amd proceeds as if an exact
+match had been found and the value field is then used to resolve the
+mount request, otherwise an error code is propagated back to the kernel.
+(see \*(L"Filesystem Types\*(R").
+.PP
+\&\fB3.3 Location Format\fR
+.PP
+The value field from the lookup provides the information required to
+mount a filesystem.  The information is parsed according to the syntax
+shown below.
+.PP
+location-list:
+location-selection
+location-list white-space || white-space location-selection
+location-selection:
+location
+location-selection white-space location
+location:
+location-info
+\&\-location\-info
+\&\-
+location-info:
+sel-or-opt
+location\-info;sel\-or\-opt
+;
+sel-or-opt:
+selection
+opt-ass
+selection:
+selector==value
+selector!=value
+opt-ass:
+option:=value
+white-space:
+space
+tab
+.PP
+Note that unquoted whitespace is not allowed in a location
+description.  White space is only allowed, and is mandatory, where
+shown with non-terminal white-space.
+.PP
+A \*(L"location-selection\*(R" is a list of possible volumes with which to
+satisfy the request.  \*(L"location\-selection\*(R"s are separated by the `\fB||\fR'
+operator.  The effect of this operator is to prevent use of
+location-selections to its right if any of the location-selections on
+its left were selected whether or not any of them were successfully
+mounted (see \*(L"Selectors\*(R").
+.PP
+The location-selection, and singleton \*(L"location-list\*(R",
+`\fBtype:=ufs;dev:=/dev/xd1g\fR' would inform Amd to mount a \s-1UFS\s0 filesystem
+from the block special device `\fB/dev/xd1g\fR'.
+.PP
+The \*(L"sel-or-opt\*(R" component is either the name of an option required
+by a specific filesystem, or it is the name of a built-in, predefined
+selector such as the architecture type.  The value may be quoted with
+double quotes `\fB"\fR', for example `\fBtype:=\*(L"ufs\*(R";dev:=\*(L"/dev/xd1g\*(R"\fR'.  These
+quotes are stripped when the value is parsed and there is no way to get
+a double quote into a value field.  Double quotes are used to get white
+space into a value field, which is needed for the program filesystem
+(see \*(L"Program Filesystem\*(R").
+.PP
+* Menu:
+.PP
+See also \*(L"Map Defaults\*(R"
+.PP
+See also \*(L"Variable Expansion\*(R"
+.PP
+See also \*(L"Selectors\*(R"
+.PP
+See also \*(L"Map Options\*(R"
+.PP
+\&\fB3.3.1 Map Defaults\fR
+.PP
+A location beginning with a dash `\fB\-\fR' is used to specify default values
+for subsequent locations.  Any previously specified defaults in the
+location-list are discarded.  The default string can be empty in which
+case no defaults apply.
+.PP
+The location `\fB\-fs:=/mnt;opts:=ro\fR' would set the local mount point to
+`\fB/mnt\fR' and cause mounts to be read-only by default.  Defaults specified
+this way are appended to, and so override, any global map defaults
+given with `\fB/defaults\fR').
+.PP
+\&\fB3.3.2 Variable Expansion\fR
+.PP
+To allow generic location specifications Amd does variable expansion on
+each location and also on some of the option strings.  Any option or
+selector appearing in the form `\fB$\*(L"var\*(R"\fR' is replaced by the current
+value of that option or selector.  For example, if the value of
+`\fB${key}\fR' was `\fBbin\fR', `\fB${autodir}\fR' was `\fB/a\fR' and `\fB${fs}\fR' was
+`\fB${autodir}/local/${key}\fR' then after expansion `\fB${fs}\fR' would have the
+value `\fB/a/local/bin\fR'.  Any environment variable can be accessed in a
+similar way.
+.PP
+Two pathname operators are available when expanding a variable.  If
+the variable name begins with `\fB/\fR' then only the last component of the
+pathname is substituted.  For example, if `\fB${path}\fR' was `\fB/foo/bar\fR' then
+`\fB${/path}\fR' would be expanded to `\fBbar\fR'.  Similarly, if the variable name
+ends with `\fB/\fR' then all but the last component of the pathname is
+substituted.  In the previous example, `\fB${path/}\fR' would be expanded to
+`\fB/foo\fR'.
+.PP
+Two domain name operators are also provided.  If the variable name
+begins with `\fB.\fR' then only the domain part of the name is substituted.
+For example, if `\fB${rhost}\fR' was `\fBswan.doc.ic.ac.uk\fR' then `\fB${.rhost}\fR'
+would be expanded to `\fBdoc.ic.ac.uk\fR'.  Similarly, if the variable name
+ends with `\fB.\fR' then only the host component is substituted.  In the
+previous example, `\fB${rhost.}\fR' would be expanded to `\fBswan\fR'.
+.PP
+Variable expansion is a two phase process.  Before a location is
+parsed, all references to selectors, eg `\fB${path}\fR', are expanded.  The
+location is then parsed, selections are evaluated and option assignments
+recorded.  If there were no selections or they all succeeded the
+location is used and the values of the following options are expanded in
+the order given: \s-1SUBLINK, RFS, FS, OPTS, REMOPTS, MOUNT\s0 and \s-1UNMOUNT.\s0
+.PP
+Note that expansion of option values is done after \*(L"all\*(R" assignments
+have been completed and not in a purely left to right order as is done
+by the shell.  This generally has the desired effect but care must be
+taken if one of the options references another, in which case the
+ordering can become significant.
+.PP
+There are two special cases concerning variable expansion:
+.PP
+1. before a map is consulted, any selectors in the name received from
+the kernel are expanded.  For example, if the request from the
+kernel was for `\fB${arch}.bin\fR' and the machine architecture was
+`\fBvax\fR', the value given to `\fB${key}\fR' would be `\fBvax.bin\fR'.
+.PP
+2. the value of `\fB${rhost}\fR' is expanded and normalized before the
+other options are expanded.  The normalization process strips any
+local sub-domain components.  For example, if `\fB${domain}\fR' was
+`\fBBerkeley.EDU\fR' and `\fB${rhost}\fR' was initially `\fBsnow.Berkeley.EDU\fR',
+after the normalization it would simply be `\fBsnow\fR'.  Hostname
+normalization is currently done in a _case\-dependent_ manner.
+.PP
+\&\fB3.3.3 Selectors\fR
+.PP
+Selectors are used to control the use of a location.  It is possible to
+share a mount map between many machines in such a way that filesystem
+location, architecture and operating system differences are hidden from
+the users.  A selector of the form `\fBarch==sun3;os==sunos4\fR' would only
+apply on Sun\-3s running SunOS 4.x.
+.PP
+Selectors can be negated by using `\fB!=\fR' instead of `\fB==\fR'.  For example
+to select a location on all non-Vax machines the selector `\fBarch!=vax\fR'
+would be used.
+.PP
+Selectors are evaluated left to right.  If a selector fails then that
+location is ignored.  Thus the selectors form a conjunction and the
+locations form a disjunction.  If all the locations are ignored or
+otherwise fail then Amd uses the \*(L"error\*(R" filesystem (*note Error
+Filesystem::).  This is equivalent to having a location `\fBtype:=error\fR'
+at the end of each mount-map entry.
+.PP
+The default value of many of the selectors listed here can be
+overridden by an Amd command line switch or in an Amd configuration
+file.  see \*(L"Amd Configuration File\*(R".
+.PP
+These are the selectors currently implemented.
+.PP
+* Menu:
+.PP
+See also \*(L"arch Selector Variable\*(R"
+.PP
+See also \*(L"autodir Selector Variable\*(R"
+.PP
+See also \*(L"byte Selector Variable\*(R"
+.PP
+See also \*(L"cluster Selector Variable\*(R"
+.PP
+See also \*(L"domain Selector Variable\*(R"
+.PP
+See also \*(L"host Selector Variable\*(R"
+.PP
+See also \*(L"hostd Selector Variable\*(R"
+.PP
+See also \*(L"karch Selector Variable\*(R"
+.PP
+See also \*(L"os Selector Variable\*(R"
+.PP
+See also \*(L"osver Selector Variable\*(R"
+.PP
+See also \*(L"full_os Selector Variable\*(R"
+.PP
+See also \*(L"vendor Selector Variable\*(R"
+.PP
+See also \*(L"key Selector Variable\*(R"
+.PP
+See also \*(L"map Selector Variable\*(R"
+.PP
+See also \*(L"netnumber Selector Variable\*(R"
+.PP
+See also \*(L"network Selector Variable\*(R"
+.PP
+See also \*(L"path Selector Variable\*(R"
+.PP
+See also \*(L"wire Selector Variable\*(R"
+.PP
+See also \*(L"exists Selector Function\*(R"
+.PP
+See also \*(L"false Selector Function\*(R"
+.PP
+See also \*(L"netgrp Selector Function\*(R"
+.PP
+See also \*(L"netgrpd Selector Function\*(R"
+.PP
+See also \*(L"in_network Selector Function\*(R"
+.PP
+See also \*(L"true Selector Function\*(R"
+.PP
+\&\fB3.3.3.1 arch Selector Variable\fR
+.PP
+The machine architecture which was automatically determined at compile
+time.  The architecture type can be displayed by running the command
+`\fBamd \-v\fR'.  see \*(L"Supported Platforms\*(R".
+.PP
+\&\fB3.3.3.2 autodir Selector Variable\fR
+.PP
+The default directory under which to mount filesystems.  This may be
+changed by the `\fB\-a\fR' command line option.  see \*(L"fs Option\*(R".
+.PP
+\&\fB3.3.3.3 byte Selector Variable\fR
+.PP
+The machine's byte ordering.  This is either `\fBlittle\fR', indicating
+little-endian, or `\fBbig\fR', indicating big-endian.  One possible use is to
+share `\fBrwho\fR' databases (see \*(L"rwho servers\*(R").  Another is to share
+ndbm databases, however this use can be considered a courageous
+juggling act.
+.PP
+\&\fB3.3.3.4 cluster Selector Variable\fR
+.PP
+This is provided as a hook for the name of the local cluster.  This can
+be used to decide which servers to use for copies of replicated
+filesystems.  `\fB${cluster}\fR' defaults to the value of `\fB${domain}\fR' unless
+a different value is set with the `\fB\-C\fR' command line option.
+.PP
+\&\fB3.3.3.5 domain Selector Variable\fR
+.PP
+The local domain name as specified by the `\fB\-d\fR' command line option.
+see \*(L"host Selector Variable\*(R".
+.PP
+\&\fB3.3.3.6 host Selector Variable\fR
+.PP
+The local hostname as determined by \fIgethostname\fR\|(2).  If no domain name
+was specified on the command line and the hostname contains a period
+`\fB.\fR' then the string before the period is used as the host name, and the
+string after the period is assigned to `\fB${domain}\fR'.  For example, if
+the hostname is `\fBstyx.doc.ic.ac.uk\fR' then `\fBhost\fR' would be `\fBstyx\fR' and
+`\fBdomain\fR' would be `\fBdoc.ic.ac.uk\fR'.  `\fBhostd\fR' would be `\fBstyx.doc.ic.ac.uk\fR'.
+.PP
+\&\fB3.3.3.7 hostd Selector Variable\fR
+.PP
+This resolves to the `\fB${host}\fR' and `\fB${domain}\fR' concatenated with a `\fB.\fR'
+inserted between them if required.  If `\fB${domain}\fR' is an empty string
+then `\fB${host}\fR' and `\fB${hostd}\fR' will be identical.
+.PP
+\&\fB3.3.3.8 karch Selector Variable\fR
+.PP
+This is provided as a hook for the kernel architecture.  This is used on
+SunOS 4 and SunOS 5, for example, to distinguish between different
+`\fB/usr/kvm\fR' volumes.  `\fB${karch}\fR' defaults to the \*(L"machine\*(R" value gotten
+from \fIuname\fR\|(2).  If the \fIuname\fR\|(2) system call is not available, the value
+of `\fB${karch}\fR' defaults to that of `\fB${arch}\fR'.  Finally, a different
+value can be set with the `\fB\-k\fR' command line option.
+.PP
+\&\fB3.3.3.9 os Selector Variable\fR
+.PP
+The operating system.  Like the machine architecture, this is
+automatically determined at compile time.  The operating system name can
+be displayed by running the command `\fBamd \-v\fR'.  *Note Supported
+Platforms::.
+.PP
+\&\fB3.3.3.10 osver Selector Variable\fR
+.PP
+The operating system version.  Like the machine architecture, this is
+automatically determined at compile time.  The operating system name can
+be displayed by running the command `\fBamd \-v\fR'.  *Note Supported
+Platforms::.
+.PP
+\&\fB3.3.3.11 full_os Selector Variable\fR
+.PP
+The full name of the operating system, including its version.  This
+value is automatically determined at compile time.  The full operating
+system name and version can be displayed by running the command `amd
+\&\-v'.  see \*(L"Supported Platforms\*(R".
+.PP
+\&\fB3.3.3.12 vendor Selector Variable\fR
+.PP
+The name of the vendor of the operating system.  This value is
+automatically determined at compile time.  The name of the vendor can be
+displayed by running the command `\fBamd \-v\fR'.  see \*(L"Supported Platforms\*(R".
+.PP
+The following selectors are also provided.  Unlike the other
+selectors, they vary for each lookup.  Note that when the name from the
+kernel is expanded prior to a map lookup, these selectors are all
+defined as empty strings.
+.PP
+\&\fB3.3.3.13 key Selector Variable\fR
+.PP
+The name being resolved.  For example, if `\fB/home\fR' is an automount
+point, then accessing `\fB/home/foo\fR' would set `\fB${key}\fR' to the string
+`\fBfoo\fR'.  The key is prefixed by the \s-1PREF\s0 option set in the parent mount
+point.  The default prefix is an empty string.  If the prefix was
+`\fBblah/\fR' then `\fB${key}\fR' would be set to `\fBblah/foo\fR'.
+.PP
+\&\fB3.3.3.14 map Selector Variable\fR
+.PP
+The name of the mount map being used.
+.PP
+\&\fB3.3.3.15 netnumber Selector Variable\fR
+.PP
+This selector is identical to the `\fBin_network\fR' selector function, see
+see \*(L"in_network Selector Function\*(R".  It will match either the name or
+number of any network interface on which this host is connected to.
+The names and numbers of all attached interfaces are available from the
+output of `\fBamd \-v\fR'.
+.PP
+\&\fB3.3.3.16 network Selector Variable\fR
+.PP
+This selector is identical to the `\fBin_network\fR' selector function, see
+see \*(L"in_network Selector Function\*(R".  It will match either the name or
+number of any network interface on which this host is connected to.
+The names and numbers of all attached interfaces are available from the
+output of `\fBamd \-v\fR'.
+.PP
+\&\fB3.3.3.17 path Selector Variable\fR
+.PP
+The full pathname of the name being resolved.  For example `\fB/home/foo\fR'
+in the example above.
+.PP
+\&\fB3.3.3.18 wire Selector Variable\fR
+.PP
+This selector is identical to the `\fBin_network\fR' selector function, see
+see \*(L"in_network Selector Function\*(R".  It will match either the name or
+number of any network interface on which this host is connected to.
+The names and numbers of all attached interfaces are available from the
+output of `\fBamd \-v\fR'.
+.PP
+The following boolean functions are selectors which take an argument
+\&\s-1ARG. \s0 They return a value of true or false, and thus do not need to be
+compared with a value.  Each of these may be negated by prepending `\fB!\fR'
+to their name.
+.PP
+\&\fB3.3.3.19 exists Selector Function\fR
+.PP
+If the file listed by \s-1ARG\s0 exists (via \fIlstat\fR\|(2)), this function
+evaluates to true.  Otherwise it evaluates to false.
+.PP
+\&\fB3.3.3.20 false Selector Function\fR
+.PP
+Always evaluates to false.  \s-1ARG\s0 is ignored.
+.PP
+\&\fB3.3.3.21 netgrp Selector Function\fR
+.PP
+If the current host as determined by the value of `\fB${host}\fR' (e.g.,
+short host name) is a member of the netgroup \s-1ARG,\s0 this selector
+evaluates to true.  Otherwise it evaluates to false.
+.PP
+For example, suppose you have a netgroup `\fBppp-hosts\fR', and for
+reasons of performance, these have a local `\fB/home\fR' partition, while all
+other clients on the faster network can access a shared home directory.
+A common map to use for both might look like the following:
+.PP
+home/*  netgrp(ppp\-hosts);type:=link;fs:=/local/${key} \e
+!netgrp(ppp\-hosts);type:=nfs;rhost:=serv1;rfs:=/remote/${key}
+.PP
+\&\fB3.3.3.22 netgrpd Selector Function\fR
+.PP
+If the current host as determined by the value of `\fB${hostd}\fR' is a
+member of the netgroup \s-1ARG,\s0 this selector evaluates to true.  Otherwise
+it evaluates to false.
+.PP
+The `\fBnetgrpd\fR' function uses fully-qualified host names (`\fB${hostd}\fR')
+to match netgroup names, while the `\fBnetgrp\fR' function (*note netgrp
+Selector Function::) uses short host names (`\fB${host}\fR').
+.PP
+\&\fB3.3.3.23 in_network Selector Function\fR
+.PP
+If the current host has any network interface that is locally attached
+to the network specified in \s-1ARG \s0(either via name or number), this
+selector evaluates to true.  Otherwise it evaluates to false.
+.PP
+For example, suppose you have two servers that have an exportable
+`\fB/opt\fR' that smaller clients can \s-1NFS\s0 mount.  The two servers are say,
+`\fBserv1\fR' on network `\fBfoo\-net.site.com\fR' and `\fBserv2\fR' on network
+`\fB123.4.5.0\fR'.  You can write a map to be used by all clients that will
+attempt to mount the closest one as follows:
+.PP
+opt in_network(foo\-net.site.com);rhost:=serv1;rfs:=/opt \e
+in_network(123.4.5.0);rhost:=serv2;rfs:=/opt \e
+rhost:=fallback\-server
+.PP
+\&\fB3.3.3.24 true Selector Function\fR
+.PP
+Always evaluates to true.  \s-1ARG\s0 is ignored.
+.PP
+\&\fB3.3.4 Map Options\fR
+.PP
+Options are parsed concurrently with selectors.  The difference is that
+when an option is seen the string following the `\fB:=\fR' is recorded for
+later use.  As a minimum the \s-1TYPE\s0 option must be specified.  Each
+filesystem type has other options which must also be specified.  *Note
+Filesystem Types::, for details on the filesystem specific options.
+.PP
+Superfluous option specifications are ignored and are not reported
+as errors.
+.PP
+The following options apply to more than one filesystem type.
+.PP
+* Menu:
+.PP
+See also \*(L"addopts Option\*(R"
+.PP
+See also \*(L"delay Option\*(R"
+.PP
+See also \*(L"fs Option\*(R"
+.PP
+See also \*(L"opts Option\*(R"
+.PP
+See also \*(L"remopts Option\*(R"
+.PP
+See also \*(L"sublink Option\*(R"
+.PP
+See also \*(L"type Option\*(R"
+.PP
+\&\fB3.3.4.1 addopts Option\fR
+.PP
+This option adds additional options to default options normally
+specified in the `\fB/defaults\fR' entry or the defaults of the key entry
+being processed (see \*(L"opts Option\*(R").  Normally when you specify
+`\fBopts\fR' in both the `\fB/defaults\fR' and the map entry, the latter overrides
+the former completely.  But with `\fBaddopts\fR' it will append the options
+and override any conflicting ones.
+.PP
+`\fBaddopts\fR' also overrides the value of the `\fBremopts\fR' option (*note
+remopts Option::), which unless specified defaults to the value of
+`\fBopts\fR'.
+.PP
+Options which start with `\fBno\fR' will override those with the same name
+that do not start with `\fBno\fR' and vice verse.  Special handling is given
+to inverted options such as `\fBsoft\fR' and `\fBhard\fR', `\fBbg\fR' and `\fBfg\fR', `\fBro\fR' and
+`\fBrw\fR', etc.
+.PP
+For example, if the default options specified were
+opts:=rw,nosuid,intr,rsize=1024,wsize=1024,quota,posix
+.PP
+and the ones specified in a map entry were
+.PP
+addopts:=grpid,suid,ro,rsize=2048,quota,nointr
+.PP
+then the actual options used would be
+.PP
+wsize=1024,posix,grpid,suid,ro,rsize=2048,quota,nointr
+.PP
+\&\fB3.3.4.2 delay Option\fR
+.PP
+The delay, in seconds, before an attempt will be made to mount from the
+current location.  Auxiliary data, such as network address, file handles
+and so on are computed regardless of this value.
+.PP
+A delay can be used to implement the notion of primary and secondary
+file servers.  The secondary servers would have a delay of a few
+seconds, thus giving the primary servers a chance to respond first.
+.PP
+\&\fB3.3.4.3 fs Option\fR
+.PP
+The local mount point.  The semantics of this option vary between
+filesystems.
+.PP
+For \s-1NFS\s0 and \s-1UFS\s0 filesystems the value of `\fB${fs}\fR' is used as the
+local mount point.  For other filesystem types it has other meanings
+which are described in the section describing the respective filesystem
+type.  It is important that this string uniquely identifies the
+filesystem being mounted.  To satisfy this requirement, it should
+contain the name of the host on which the filesystem is resident and the
+pathname of the filesystem on the local or remote host.
+.PP
+The reason for requiring the hostname is clear if replicated
+filesystems are considered.  If a fileserver goes down and a
+replacement filesystem is mounted then the \*(L"local\*(R" mount point \*(L"must\*(R"
+be different from that of the filesystem which is hung.  Some encoding
+of the filesystem name is required if more than one filesystem is to be
+mounted from any given host.
+.PP
+If the hostname is first in the path then all mounts from a
+particular host will be gathered below a single directory.  If that
+server goes down then the hung mount points are less likely to be
+accidentally referenced, for example when \fIgetcwd\fR\|(3) traverses the
+namespace to find the pathname of the current directory.
+.PP
+The `\fBfs\fR' option defaults to `\fB${autodir}/${rhost}${rfs}\fR'.  In
+addition, `\fBrhost\fR' defaults to the local host name (`\fB${host}\fR') and `\fBrfs\fR'
+defaults to the value of `\fB${path}\fR', which is the full path of the
+requested file; `\fB/home/foo\fR' in the example above (see \*(L"Selectors\*(R").
+`\fB${autodir}\fR' defaults to `\fB/a\fR' but may be changed with the `\fB\-a\fR' command
+line option.  Sun's automounter defaults to `\fB/tmp_mnt\fR'.  Note that
+there is no `\fB/\fR' between the `\fB${rhost}\fR' and `\fB${rfs}\fR' since `\fB${rfs}\fR'
+begins with a `\fB/\fR'.
+.PP
+\&\fB3.3.4.4 opts Option\fR
+.PP
+The options to pass to the mount system call.  A leading `\fB\-\fR' is
+silently ignored.  The mount options supported generally correspond to
+those used by \fImount\fR\|(8) and are listed below.  Some additional
+pseudo-options are interpreted by Amd and are also listed.
+.PP
+Unless specifically overridden, each of the system default mount
+options applies.  Any options not recognized are ignored.  If no
+options list is supplied the string `\fBrw,defaults\fR' is used and all the
+system default mount options apply.  Options which are not applicable
+for a particular operating system are silently ignored.  For example,
+only 4.4BSD is known to implement the `\fBcompress\fR' and `\fBspongy\fR' options.
+.PP
+`\fBacdirmax=N\fR'
+Set the maximum directory attribute cache timeout to N.
+.PP
+`\fBacdirmin=N\fR'
+Set the minimum directory attribute cache timeout to N.
+.PP
+`\fBacregmax=N\fR'
+Set the maximum file attribute cache timeout to N.
+.PP
+`\fBacregmin=N\fR'
+Set the minimum file attribute cache timeout to N.
+.PP
+`\fBactimeo=N\fR'
+Set the overall attribute cache timeout to N.
+.PP
+`\fBauto\fR'
+`\fBignore\fR'
+Ignore this mount by \fIdf\fR\|(1).
+.PP
+`\fBcache\fR'
+Allow data to be cached from a remote server for this mount.
+.PP
+`\fBcompress\fR'
+Use \s-1NFS\s0 compression protocol.
+.PP
+`\fBdefperm\fR'
+Ignore the permission mode bits, and default file permissions to
+0555, \s-1UID 0,\s0 and \s-1GID 0. \s0 Useful for CD-ROMs formatted as \s-1ISO\-9660.\s0
+.PP
+`\fBdev\fR'
+Allow local special devices on this filesystem.
+.PP
+`\fBdumbtimr\fR'
+Turn off the dynamic retransmit timeout estimator.  This may be
+useful for \s-1UDP\s0 mounts that exhibit high retry rates, since it is
+possible that the dynamically estimated timeout interval is too
+short.
+.PP
+`\fBextatt\fR'
+Enable extended attributes in \s-1ISO\-9660\s0 file systems.
+.PP
+`\fBfsid\fR'
+Set \s-1ID\s0 of filesystem.
+.PP
+`\fBgens\fR'
+Enable generations in \s-1ISO\-9660\s0 file systems.  Generations allow
+you to see all versions of a given file.
+.PP
+`\fBgrpid\fR'
+Use \s-1BSD\s0 directory group-id semantics.
+.PP
+`\fBint\fR'
+`\fBintr\fR'
+Allow keyboard interrupts on hard mounts.
+.PP
+`\fBmulti\fR'
+Perform multi-component lookup on files.
+.PP
+`\fBmaxgroups\fR'
+Set the maximum number of groups to allow for this mount.
+.PP
+`\fBnfsv3\fR'
+Use \s-1NFS\s0 Version 3 for this mount.
+.PP
+`\fBnoac\fR'
+Turn off the attribute cache.
+.PP
+`\fBnoauto\fR'
+This option is used by the mount command in `\fB/etc/fstab\fR' or
+`\fB/etc/vfstab\fR' and means not to mount this file system when mount \-a
+is used.
+.PP
+`\fBnocache\fR'
+Do not allow data to be cached from a remote server for this mount.
+.PP
+`\fBnoconn\fR'
+Don't make a connection on datagram transports.
+.PP
+`\fBnocto\fR'
+No close-to-open consistency.
+.PP
+`\fBnodefperm\fR'
+Do not ignore the permission mode bits.  Useful for CD-ROMS
+formatted as \s-1ISO\-9660.\s0
+.PP
+`\fBnodev\fR'
+`\fBnodevs\fR'
+Don't allow local special devices on this filesystem.
+.PP
+`\fBnoint\fR'
+Do not allow keyboard interrupts for this mount
+.PP
+`\fBnorrip\fR'
+Turn off using of the Rock Ridge Interchange Protocol (\s-1RRIP\s0)
+extensions to \s-1ISO\-9660.\s0
+.PP
+`\fBnosub\fR'
+Disallow mounts beneath this mount.
+.PP
+`\fBnosuid\fR'
+Don't allow set-uid or set-gid executables on this filesystem.
+.PP
+`\fBnoversion\fR'
+Strip the extension `\fB;#\fR' from the version string of files recorded
+on an \s-1ISO\-9660\s0 CD-ROM.
+.PP
+`\fBoverlay\fR'
+Overlay this mount on top of an existing mount, if any.
+.PP
+`\fBpgthresh=N\fR'
+Set the paging threshold to N kilobytes.
+.PP
+`\fBport=N\fR'
+Set the \s-1NFS\s0 port to N.
+.PP
+`\fBposix\fR'
+Turn on \s-1POSIX\s0 static pathconf for mounts.
+.PP
+`\fBproto=S\fR'
+Use transport protocol S for \s-1NFS \s0(can be `\fB\*(L"tcp\*(R"\fR' or `\fB\*(L"udp\*(R"\fR').
+.PP
+`\fBquota\fR'
+Enable quota checking on this mount.
+.PP
+`\fBrdonly\fR'
+`\fBro\fR'
+Mount this filesystem readonly.
+.PP
+`\fBresvport\fR'
+Use a reserved port (smaller than 1024) for remote \s-1NFS\s0 mounts.
+Most systems assume that, but some allow for mounts to occur on
+non-reserved ports.   This causes problems when such a system
+tries to \s-1NFS\s0 mount one that requires reserved ports.  It is
+recommended that this option always be on.
+.PP
+`\fBretrans=n\fR'
+The number of \s-1NFS\s0 retransmits made before a user error is
+generated by a `\fBsoft\fR' mounted filesystem, and before a `\fBhard\fR'
+mounted filesystem reports `\s-1NFS\s0 server \*(L"yoyo\*(R" not responding still
+trying'.
+.PP
+`\fBretry\fR'
+Set the \s-1NFS\s0 retry counter.
+.PP
+`\fBrrip\fR'
+Uses the Rock Ridge Interchange Protocol (\s-1RRIP\s0) extensions to
+\&\s-1ISO\-9660.\s0
+.PP
+`\fBrsize=N\fR'
+The \s-1NFS\s0 read packet size.  You may need to set this if you are
+using \s-1NFS/UDP\s0 through a gateway or a slow link.
+.PP
+`\fBrw\fR'
+Allow reads and writes on this filesystem.
+.PP
+`\fBsoft\fR'
+Give up after \*(L"retrans\*(R" retransmissions.
+.PP
+`\fBspongy\fR'
+Like `\fBsoft\fR' for status requests, and `\fBhard\fR' for data transfers.
+.PP
+`\fBsuid\fR'
+Allow set-uid programs on this mount.
+.PP
+`\fBsymttl\fR'
+Turn of the symbolic link cache time-to-live.
+.PP
+`\fBsync\fR'
+Perform synchronous filesystem operations on this mount.
+.PP
+`\fBtcp\fR'
+Use \s-1TCP/IP\s0 instead of \s-1UDP/IP,\s0 ignored if the \s-1NFS\s0 implementation
+does not support \s-1TCP/IP\s0 mounts.
+.PP
+`\fBtimeo=N\fR'
+The \s-1NFS\s0 timeout, in tenth-seconds, before a request is
+retransmitted.
+.PP
+`\fBvers=N\fR'
+Use \s-1NFS\s0 protocol version number N (can be 2 or 3).
+.PP
+`\fBwsize=N\fR'
+The \s-1NFS\s0 write packet size.  You may need to set this if you are
+using \s-1NFS/UDP\s0 through a gateway or a slow link.
+.PP
+The following options are implemented by Amd, rather than being
+passed to the kernel.
+.PP
+`\fBnounmount\fR'
+Configures the mount so that its time-to-live will never expire.
+This is also the default for some filesystem types.
+.PP
+`\fBping=N\fR'
+The interval, in seconds, between keep-alive pings.  When four
+consecutive pings have failed the mount point is marked as hung.
+This interval defaults to 30 seconds.  If the ping interval is
+less than zero, no pings are sent and the host is assumed to be
+always up.  By default, pings are not sent for an \s-1NFS/TCP\s0 mount.
+.PP
+`\fBretry=N\fR'
+The number of times to retry the mount system call.
+.PP
+`\fButimeout=N\fR'
+The interval, in seconds, by which the mount's time-to-live is
+extended after an unmount attempt has failed.  In fact the
+interval is extended before the unmount is attempted to avoid
+thrashing.  The default value is 120 seconds (two minutes) or as
+set by the `\fB\-w\fR' command line option.
+.PP
+\&\fB3.3.4.5 remopts Option\fR
+.PP
+This option has the same use as `\fB${opts}\fR' but applies only when the
+remote host is on a non-local network.  For example, when using \s-1NFS\s0
+across a gateway it is often necessary to use smaller values for the
+data read and write sizes.  This can simply be done by specifying the
+small values in \s-1REMOPTS. \s0 When a non-local host is accessed, the
+smaller sizes will automatically be used.
+.PP
+Amd determines whether a host is local by examining the network
+interface configuration at startup.  Any interface changes made after
+Amd has been started will not be noticed.  The likely effect will be
+that a host may incorrectly be declared non-local.
+.PP
+Unless otherwise set, the value of `\fB${remopts}\fR' is the same as the
+value of `\fB${opts}\fR'.
+.PP
+\&\fB3.3.4.6 sublink Option\fR
+.PP
+The subdirectory within the mounted filesystem to which the reference
+should point.  This can be used to prevent duplicate mounts in cases
+where multiple directories in the same mounted filesystem are used.
+.PP
+\&\fB3.3.4.7 type Option\fR
+.PP
+The filesystem type to be used.  see \*(L"Filesystem Types\*(R", for a full
+description of each type.
+.SS "4 Amd Command Line Options"
+.IX Subsection "4 Amd Command Line Options"
+Many of Amd's parameters can be set from the command line.  The command
+line is also used to specify automount points and maps.
+.PP
+The general format of a command line is
+.PP
+amd [options] [{ directory map-name [\-map\-options] } ...]
+.PP
+For each directory and map-name given or specified in the `\fBamd.conf\fR'
+file, Amd establishes an automount point.  The \*(L"map-options\*(R" may be any
+sequence of options or selectors\*(--see \*(L"Location Format\*(R".  The
+\&\*(L"map-options\*(R" apply only to Amd's mount point.
+.PP
+`\fBtype:=toplvl;cache:=mapdefault;fs:=${map}\fR' is the default value for
+the map options.  Default options for a map are read from a special
+entry in the map whose key is the string `\fB/defaults\fR'.  When default
+options are given they are prepended to any options specified in the
+mount-map locations as explained in see \*(L"Map Defaults\*(R".
+.PP
+The \*(L"options\*(R" are any combination of those listed below.
+.PP
+Once the command line has been parsed, the automount points are
+mounted.  The mount points are created if they do not already exist, in
+which case they will be removed when Amd exits.  Finally, Amd
+disassociates itself from its controlling terminal and forks into the
+background.
+.PP
+Note: Even if Amd has been built with `\fB\-DDEBUG\fR' (via `configure
+\&\-\-enable\-debug'), it will still background itself and disassociate
+itself from the controlling terminal.  To use a debugger it is
+necessary to specify `\fB\-D nodaemon\fR' on the command line.  However, even
+with all of this, mounts and unmounts are performed in the background,
+and Amd will always fork before doing them.  Therefore, debugging what
+happens closely during un/mounts is more challenging.
+.PP
+_All_ of Amd's command options (save `\fB\-F\fR' and `\fB\-T\fR') can be specified
+in the `\fBamd.conf\fR' file. see \*(L"Amd Configuration File\*(R".  If Amd is
+invoked without any command line options, it will default to using the
+configuration file `\fB/etc/amd.conf\fR', if one exists.
+.PP
+* Menu:
+.PP
+Automount directory.: see \*(L"\-a Option\*(R"
+.PP
+Cache timeout interval.: see \*(L"\-c Option\*(R"
+.PP
+Domain name.: see \*(L"\-d Option\*(R"
+.PP
+Kernel architecture.: see \*(L"\-k Option\*(R"
+.PP
+Log file.: see \*(L"\-l Option\*(R"
+.PP
+Hostname normalization.: see \*(L"\-n Option\*(R"
+.PP
+Operating system version.: see \*(L"\-o Option\*(R"
+.PP
+Output process id.: see \*(L"\-p Option\*(R"
+.PP
+Restart existing mounts.: see \*(L"\-r Option\*(R"
+.PP
+Kernel \s-1RPC\s0 timeout.: see \*(L"\-t Option\*(R"
+.PP
+Version information.: see \*(L"\-v Option\*(R"
+.PP
+Wait interval after failed unmount.: see \*(L"\-w Option\*(R"
+.PP
+Log options.: see \*(L"\-x Option\*(R"
+.PP
+\&\s-1NIS\s0 domain.: see \*(L"\-y Option\*(R"
+.PP
+Cluster name.: see \*(L"\-C\-Option\*(R"
+.PP
+Debug flags.: see \*(L"\-D\-Option\*(R"
+.PP
+Amd configuration file.: see \*(L"\-F Option\*(R"
+.PP
+Show brief help.: see \*(L"\-H Option\*(R"
+.PP
+Operating system name.: see \*(L"\-O\-Option\*(R"
+.PP
+Lock executable pages in memory.: see \*(L"\-S Option\*(R"
+.PP
+Set tag for configuration file.: see \*(L"\-T\-Option\*(R"
+.PP
+\&\fB4.1 `\-a' \s-1DIRECTORY\s0\fR
+.PP
+Specifies the default mount directory.  This option changes the variable
+`\fB${autodir}\fR' which otherwise defaults to `\fB/a\fR'.  For example, some sites
+prefer `\fB/amd\fR' or `\fB/n\fR'.
+.PP
+amd \-a /amd ...
+.PP
+\&\fB4.2 `\-c' CACHE-INTERVAL\fR
+.PP
+Selects the period, in seconds, for which a name is cached by Amd.  If
+no reference is made to the volume in this period, Amd discards the
+volume name to filesystem mapping.
+.PP
+Once the last reference to a filesystem has been removed, Amd
+attempts to unmount the filesystem.  If the unmount fails the interval
+is extended by a further period as specified by the `\fB\-w\fR' command line
+option or by the `\fButimeout\fR' mount option.
+.PP
+The default \*(L"cache-interval\*(R" is 300 seconds (five minutes).
+.PP
+\&\fB4.3 `\-d' \s-1DOMAIN\s0\fR
+.PP
+Specifies the host's domain.  This sets the internal variable
+`\fB${domain}\fR' and affects the `\fB${hostd}\fR' variable.
+.PP
+If this option is not specified and the hostname already contains the
+local domain then that is used, otherwise the default value of
+`\fB${domain}\fR' is `\fBunknown.domain\fR'.
+.PP
+For example, if the local domain was `\fBdoc.ic.ac.uk\fR', Amd could be
+started as follows:
+.PP
+amd \-d doc.ic.ac.uk ...
+.PP
+\&\fB4.4 `\-k' KERNEL-ARCHITECTURE\fR
+.PP
+Specifies the kernel architecture of the system.  This is usually the
+output of `\fBuname \-m\fR' (the \*(L"machine\*(R" value gotten from \fIuname\fR\|(2)).  If
+the \fIuname\fR\|(2) system call is not available, the value of `\fB${karch}\fR'
+defaults to that of `\fB${arch}\fR'.
+.PP
+The only effect of this option is to set the variable `\fB${karch}\fR'.
+.PP
+This option would be used as follows:
+.PP
+amd \-k `arch \-k` ...
+.PP
+\&\fB4.5 `\-l' LOG-OPTION\fR
+.PP
+Selects the form of logging to be made.  Several special \*(L"log-options\*(R"
+are recognized.
+.PP
+1. If \*(L"log-option\*(R" is the string `\fBsyslog\fR', Amd will use the \fIsyslog\fR\|(3)
+mechanism.  If your system supports syslog facilities, then the
+default facility used is `\fB\s-1LOG_DAEMON\s0\fR'.
+.PP
+2. When using syslog, if you wish to change the facility, append its
+name to the log option name, delimited by a single colon.  For
+example, if \*(L"log-options\*(R" is the string `\fBsyslog:local7\fR' then Amd
+will log messages via \fIsyslog\fR\|(3) using the `\fB\s-1LOG_LOCAL7\s0\fR' facility.
+If the facility name specified is not recognized, Amd will default
+to `\fB\s-1LOG_DAEMON\s0\fR'.  Note: while you can use any syslog facility
+available on your system, it is generally a bad idea to use those
+reserved for other services such as `\fBkern\fR', `\fBlpr\fR', `\fBcron\fR', etc.
+.PP
+3. If \*(L"log-option\*(R" is the string `\fB/dev/stderr\fR', Amd will use standard
+error, which is also the default target for log messages.  To
+implement this, Amd simulates the effect of the `\fB/dev/fd\fR' driver.
+.PP
+Any other string is taken as a filename to use for logging.  Log
+messages are appended to the file if it already exists, otherwise a new
+file is created.  The file is opened once and then held open, rather
+than being re-opened for each message.
+.PP
+Normally, when long-running daemons hold an open file descriptor on a
+log file, it is impossible to \*(L"rotate\*(R" the log file and compress older
+logs on a daily basis.  The daemon needs to be told to discard (via
+\&\fIclose\fR\|(2)) its file handle, and re-open the log file.  This is done
+using `\fBamq \-l\fR' log-option. see \*(L"Amq \-l option\*(R".
+.PP
+If the `\fBsyslog\fR' option is specified but the system does not support
+syslog or if the named file cannot be opened or created, Amd will use
+standard error.  Error messages generated before Amd has finished
+parsing the command line are printed on standard error.
+.PP
+Since Amd tends to generate a lot of logging information (especially
+if debugging was turned on), and due to it being an important program
+running on the system, it is usually best to log to a separate disk
+file.  In that case Amd would be started as follows:
+.PP
+amd \-l /var/log/amd ...
+.PP
+\&\fB4.6 `\-n'\fR
+.PP
+Normalizes the remote hostname before using it.  Normalization is done
+by replacing the value of `\fB${rhost}\fR' with the (generally fully
+qualified) primary name returned by a hostname lookup.
+.PP
+This option should be used if several names are used to refer to a
+single host in a mount map.
+.PP
+\&\fB4.7 `\-o' OP-SYS-VER\fR
+.PP
+Overrides the compiled-in version number of the operating system, with
+OP-SYS-VER.  Useful when the built-in version is not desired for
+backward compatibility reasons.  For example, if the built-in version is
+`\fB2.5.1\fR', you can override it to `\fB5.5.1\fR', and use older maps that were
+written with the latter in mind.
+.PP
+\&\fB4.8 `\-p'\fR
+.PP
+Causes Amd's process id to be printed on standard output.  This can be
+redirected to a suitable file for use with kill:
+.PP
+amd \-p > /var/run/amd.pid ...
+.PP
+This option only has an affect if Amd is running in daemon mode.  If
+Amd is started with the `\fB\-D nodaemon\fR' debug flag, this option is
+ignored.
+.PP
+\&\fB4.9 `\-r'\fR
+.PP
+Tells Amd to restart existing mounts (see \*(L"Inheritance Filesystem\*(R").
+.PP
+\&\fB4.10 `\-t' \s-1TIMEOUT.RETRANSMIT\s0\fR
+.PP
+Specifies the \s-1RPC \s0\*(L"timeout\*(R" interval and the \*(L"retransmit\*(R" counter used
+by the kernel to communicate to Amd.  These are used to set the `\fBtimeo\fR'
+and `\fBretrans\fR' mount options, respectively.  The default timeout is 0.8
+seconds, and the default number of retransmissions is 11.
+.PP
+Amd relies on the kernel \s-1RPC\s0 retransmit mechanism to trigger mount
+retries.  The values of these parameters change the overall retry
+interval.  Too long an interval gives poor interactive response; too
+short an interval causes excessive retries.
+.PP
+\&\fB4.11 `\-v'\fR
+.PP
+Print version information on standard error and then exit.  The output
+is of the form:
+.PP
+Copyright (c) 1997\-1999 Erez Zadok
+Copyright (c) 1990 Jan-Simon Pendry
+Copyright (c) 1990 Imperial College of Science, Technology & Medicine
+Copyright (c) 1990 The Regents of the University of California.
+am-utils version 6.0a15 (build 61).
+Built by ezk@cs.columbia.edu on date Wed Oct 22 15:21:03 \s-1EDT 1997.\s0
+cpu=sparc (big-endian), arch=sun4, karch=sun4u.
+full_os=solaris2.5.1, os=sos5, osver=5.5.1, vendor=sun.
+Map support for: root, passwd, union, nisplus, nis, ndbm, file, error.
+\&\s-1AMFS:\s0 nfs, link, nfsx, nfsl, host, linkx, program, union, inherit,
+ufs, lofs, hsfs, pcfs, auto, direct, toplvl, error.
+\&\s-1FS:\s0 autofs, cachefs, cdfs, lofs, nfs, nfs3, pcfs, tfs, tmpfs, ufs.
+Network 1: wire=\*(L"mcl\-lab\-net.cs.columbia.edu\*(R" (netnumber=128.59.13).
+Network 2: wire=\*(L"14\-net.cs.columbia.edu\*(R" (netnumber=128.59.14).
+Network 3: wire=\*(L"old\-net.cs.columbia.edu\*(R" (netnumber=128.59.16).
+.PP
+The information includes the version number, number of times Amd was
+compiled on the local system, release date and name of the release.
+Following come the cpu type, byte ordering, and the architecture and
+kernel architecture as `\fB${arch}\fR' and `\fB${karch}\fR', respectively.  The
+next line lists the operating system full name, short name, version,
+and vendor.  These four values correspond to the variables
+`\fB${full_os}\fR', `\fB${os}\fR', `\fB${osver}\fR', and `\fB${vendor}\fR', respectively.
+see \*(L"Supported Platforms\*(R".
+.PP
+Then come a list of map types supported, filesystems internally
+supported by Amd (\s-1AMFS\s0), and generic filesystems available (\s-1FS\s0).
+Finally all known networks (if any) of this host are listed by name and
+number.  They are available via the variables `\fB${wire}\fR' or
+`\fB${network}\fR', and `\fB${netnumber}\fR' (see \*(L"Selectors\*(R") or the `\fBin_network\fR'
+selector function (see \*(L"in_network Selector Function\*(R").
+.PP
+\&\fB4.12 `\-w' WAIT-TIMEOUT\fR
+.PP
+Selects the interval in seconds between unmount attempts after the
+initial time-to-live has expired.
+.PP
+This defaults to 120 seconds (two minutes).
+.PP
+\&\fB4.13 `\-x' \s-1OPTS\s0\fR
+.PP
+Specifies the type and verbosity of log messages.  \*(L"opts\*(R" is a comma
+separated list selected from the following options:
+.PP
+`\fBfatal\fR'
+Fatal errors
+.PP
+`\fBerror\fR'
+Non-fatal errors
+.PP
+`\fBuser\fR'
+Non-fatal user errors
+.PP
+`\fBwarn\fR'
+Recoverable errors
+.PP
+`\fBwarning\fR'
+Alias for `\fBwarn\fR'
+.PP
+`\fBinfo\fR'
+Information messages
+.PP
+`\fBmap\fR'
+Mount map usage
+.PP
+`\fBstats\fR'
+Additional statistics
+.PP
+`\fBall\fR'
+All of the above
+.PP
+Initially a set of default logging flags is enabled.  This is as if
+`\fB\-x all,nomap,nostats\fR' had been selected.  The command line is parsed
+and logging is controlled by the `\fB\-x\fR' option.  The very first set of
+logging flags is saved and can not be subsequently disabled using Amq.
+This default set of options is useful for general production use.
+.PP
+The `\fBinfo\fR' messages include details of what is mounted and unmounted
+and when filesystems have timed out.  If you want to have the default
+set of messages without the `\fBinfo\fR' messages then you simply need `\-x
+noinfo'.  The messages given by `\fBuser\fR' relate to errors in the mount
+maps, so these are useful when new maps are installed.  The following
+table lists the syslog priorities used for each of the message types.
+.PP
+`\fBfatal\fR'
+`\fB\s-1LOG_CRIT\s0\fR'
+.PP
+`\fBerror\fR'
+`\fB\s-1LOG_ERR\s0\fR'
+.PP
+`\fBuser\fR'
+`\fB\s-1LOG_WARNING\s0\fR'
+.PP
+`\fBwarning\fR'
+`\fB\s-1LOG_WARNING\s0\fR'
+.PP
+`\fBinfo\fR'
+`\fB\s-1LOG_INFO\s0\fR'
+.PP
+`\fBdebug\fR'
+`\fB\s-1LOG_DEBUG\s0\fR'
+.PP
+`\fBmap\fR'
+`\fB\s-1LOG_DEBUG\s0\fR'
+.PP
+`\fBstats\fR'
+`\fB\s-1LOG_INFO\s0\fR'
+.PP
+The options can be prefixed by the string `\fBno\fR' to indicate that this
+option should be turned off.  For example, to obtain all but `\fBinfo\fR'
+messages the option `\fB\-x all,noinfo\fR' would be used.
+.PP
+If Amd was built with debugging enabled the `\fBdebug\fR' option is
+automatically enabled regardless of the command line options.
+.PP
+\&\fB4.14 `\-y' NIS-DOMAIN\fR
+.PP
+Selects an alternate \s-1NIS\s0 domain.  This is useful for debugging and
+cross-domain shared mounting.  If this flag is specified, Amd
+immediately attempts to bind to a server for this domain.
+.PP
+\&\fB4.15 `\-C' CLUSTER-NAME\fR
+.PP
+Specifies the name of the cluster of which the local machine is a
+member.  The only effect is to set the variable `\fB${cluster}\fR'.  The
+\&\*(L"cluster-name\*(R" is will usually obtained by running another command
+which uses a database to map the local hostname into a cluster name.
+`\fB${cluster}\fR' can then be used as a selector to restrict mounting of
+replicated data.  If this option is not given, `\fB${cluster}\fR' has the
+same value as `\fB${domain}\fR'.  This would be used as follows:
+.PP
+amd \-C `clustername` ...
+.PP
+\&\fB4.16 `\-D' \s-1OPTS\s0\fR
+.PP
+Controls the verbosity and coverage of the debugging trace; \*(L"opts\*(R" is a
+comma separated list of debugging options.  The `\fB\-D\fR' option is only
+available if Amd was compiled with `\fB\-DDEBUG\fR', or configured with
+`\fBconfigure \-\-enable\-debug\fR'.  The memory debugging facilities (`\fBmem\fR')
+are only available if Amd was compiled with `\fB\-DDEBUG_MEM\fR' (in addition
+to `\fB\-DDEBUG\fR'), or configured with `\fBconfigure \-\-enable\-debug=mem\fR'.
+.PP
+The most common options to use are `\fB\-D trace\fR' and `\fB\-D test\fR' (which
+turns on all the useful debug options).  As usual, every option can be
+prefixed with `\fBno\fR' to turn it off.
+.PP
+`\fBall\fR'
+all options
+.PP
+`\fBamq\fR'
+register for amq
+.PP
+`\fBdaemon\fR'
+enter daemon mode
+.PP
+`\fBfork\fR'
+fork server
+.PP
+`\fBfull\fR'
+program trace
+.PP
+`\fBinfo\fR'
+info service specific debugging (hesiod, nis, etc.)  In the case of
+hesiod maps, turns on the hesiod \s-1RES_DEBUG\s0 internal debugging
+option.
+.PP
+`\fBmem\fR'
+trace memory allocations
+.PP
+`\fBmtab\fR'
+use local `\fB./mtab\fR' file
+.PP
+`\fBstr\fR'
+debug string munging
+.PP
+`\fBtest\fR'
+full debug but no daemon
+.PP
+`\fBtrace\fR'
+trace \s-1RPC\s0 protocol and \s-1NFS\s0 mount arguments
+.PP
+You may also refer to the program source for a more detailed
+explanation of the available options.
+.PP
+\&\fB4.17 `\-F' CONF-FILE\fR
+.PP
+Specify an Amd configuration file CONF-FILE to use.  For a description
+of the format and syntax, see \*(L"Amd Configuration File\*(R".  This
+configuration file is used to specify any options in lieu of typing
+many of them on the command line.  The `\fBamd.conf\fR' file includes
+directives for every command line option Amd has, and many more that
+are only available via the configuration file facility.  The
+configuration file specified by this option is processed after all other
+options had been processed, regardless of the actual location of this
+option on the command line.
+.PP
+\&\fB4.18 `\-H'\fR
+.PP
+Print a brief help and usage string.
+.PP
+\&\fB4.19 `\-O' OP-SYS-NAME\fR
+.PP
+Overrides the compiled-in name of the operating system, with
+OP-SYS-NAME.  Useful when the built-in name is not desired for backward
+compatibility reasons.  For example, if the build in name is `\fBsunos5\fR',
+you can override it to the old name `\fBsos5\fR', and use older maps which
+were written with the latter in mind.
+.PP
+\&\fB4.20 `\-S'\fR
+.PP
+Do _not_ lock the running executable pages of Amd into memory.  To
+improve Amd's performance, systems that support the \fIplock\fR\|(3) call lock
+the Amd process into memory.  This way there is less chance the
+operating system will schedule, page out, and swap the Amd process as
+needed.  This tends to improve Amd's performance, at the cost of
+reserving the memory used by the Amd process (making it unavailable for
+other processes).  If this behavior is not desired, use the `\fB\-S\fR' option.
+.PP
+\&\fB4.21 `\-T' \s-1TAG\s0\fR
+.PP
+Specify a tag to use with `\fBamd.conf\fR'.  All map entries tagged with \s-1TAG\s0
+will be processed.  Map entries that are not tagged are always
+processed.  Map entries that are tagged with a tag other than \s-1TAG\s0 will
+not be processed.
+.SS "5 Filesystem Types"
+.IX Subsection "5 Filesystem Types"
+To mount a volume, Amd must be told the type of filesystem to be used.
+Each filesystem type typically requires additional information such as
+the fileserver name for \s-1NFS.\s0
+.PP
+From the point of view of Amd, a \*(L"filesystem\*(R" is anything that can
+resolve an incoming name lookup.  An important feature is support for
+multiple filesystem types.  Some of these filesystems are implemented
+in the local kernel and some on remote fileservers, whilst the others
+are implemented internally by Amd.
+.PP
+The two common filesystem types are \s-1UFS\s0 and \s-1NFS. \s0 Four other user
+accessible filesystems (`\fBlink\fR', `\fBprogram\fR', `\fBauto\fR' and `\fBdirect\fR') are
+also implemented internally by Amd and these are described below.
+There are two additional filesystem types internal to Amd which are not
+directly accessible to the user (`\fBinherit\fR' and `\fBerror\fR').  Their use is
+described since they may still have an effect visible to the user.
+.PP
+* Menu:
+.PP
+A single \s-1NFS\s0 filesystem.: see \*(L"Network Filesystem\*(R"
+.PP
+\&\s-1NFS\s0 mount a host's entire export tree.: see \*(L"Network Host Filesystem\*(R"
+.PP
+An atomic group of \s-1NFS\s0 filesystems.: see \*(L"Network Filesystem Group\*(R"
+.PP
+Native disk filesystem.: see \*(L"Unix Filesystem\*(R"
+.PP
+Caching from remote server filesystem.: see \*(L"Caching Filesystem\*(R"
+.PP
+\&\s-1ISO9660 CD ROM.:\s0 see \*(L"CD-ROM Filesystem\*(R"
+.PP
+Local loopback-mount filesystem.: see \*(L"Loopback Filesystem\*(R"
+.PP
+A memory or RAM-based filesystem.: see \*(L"\s-1RAM\s0 Filesystem\*(R"\*(L" in \*(R"Memory
+.PP
+4.4BSD's loopback-mount filesystem.: see \*(L"Null Filesystem\*(R"
+.PP
+MS-DOS Floppy filesystem.: see \*(L"Floppy Filesystem\*(R"
+.PP
+The directory merging filesystem.: see \*(L"Translucent Filesystem\*(R"
+.PP
+Sun's tmpfs filesystem.: see \*(L"Shared Memory+Swap Filesystem\*(R"
+.PP
+4.4BSD's umapfs filesystem.: see \*(L"User \s-1ID\s0 Mapping Filesystem\*(R"
+.PP
+Generic Program mounts.: see \*(L"Program Filesystem\*(R"
+.PP
+Local link.: see \*(L"Symbolic Link Filesystem\*(R"
+.PP
+Local link referencing existing filesystem.: see \*(L"Symbolic Link Filesystem \s-1II\*(R"\s0
+.PP
+Link if path exists, \s-1NFS\s0 otherwise.: see \*(L"NFS-Link Filesystem\*(R"
+.PP
+See also \*(L"Automount Filesystem\*(R"
+.PP
+See also \*(L"Direct Automount Filesystem\*(R"
+.PP
+See also \*(L"Union Filesystem\*(R"
+.PP
+See also \*(L"Error Filesystem\*(R"
+.PP
+See also \*(L"Top-level Filesystem\*(R"
+.PP
+Sun's kernel-based automounter filesystem.: see \*(L"Autofs Filesystem\*(R"
+.PP
+See also \*(L"Root Filesystem\*(R"
+.PP
+See also \*(L"Inheritance Filesystem\*(R"
+.PP
+\&\fB5.1 Network Filesystem (`nfs')\fR
+.PP
+The \*(L"nfs\*(R" (`\fBtype:=nfs\fR') filesystem type provides access to Sun's \s-1NFS.\s0
+.PP
+The following options must be specified:
+.PP
+`\fBrhost\fR'
+the remote fileserver.  This must be an entry in the hosts
+database.  \s-1IP\s0 addresses are not accepted.  The default value is
+taken from the local host name (`\fB${host}\fR') if no other value is
+specified.
+.PP
+`\fBrfs\fR'
+the remote filesystem.  If no value is specified for this option,
+an internal default of `\fB${path}\fR' is used.
+.PP
+\&\s-1NFS\s0 mounts require a two stage process.  First, the \*(L"file handle\*(R" of
+the remote file system must be obtained from the server.  Then a mount
+system call must be done on the local system.  Amd keeps a cache of
+file handles for remote file systems.  The cache entries have a
+lifetime of a few minutes.
+.PP
+If a required file handle is not in the cache, Amd sends a request
+to the remote server to obtain it.  Amd \*(L"does not\*(R" wait for a response;
+it notes that one of the locations needs retrying, but continues with
+any remaining locations.  When the file handle becomes available, and
+assuming none of the other locations was successfully mounted, Amd will
+retry the mount.  This mechanism allows several \s-1NFS\s0 filesystems to be
+mounted in parallel.  The first one which responds with a valid file
+handle will be used.
+.PP
+An \s-1NFS\s0 entry might be:
+.PP
+jsp  host!=charm;type:=nfs;rhost:=charm;rfs:=/home/charm;sublink:=jsp
+.PP
+The mount system call and any unmount attempts are always done in a
+new task to avoid the possibility of blocking Amd.
+.PP
+\&\fB5.2 Network Host Filesystem (`host')\fR
+.PP
+The \*(L"host\*(R" (`\fBtype:=host\fR') filesystem allows access to the entire export
+tree of an \s-1NFS\s0 server.  The implementation is layered above the `\fBnfs\fR'
+implementation so keep-alives work in the same way.  The only option
+which needs to be specified is `\fBrhost\fR' which is the name of the
+fileserver to mount.
+.PP
+The `\fBhost\fR' filesystem type works by querying the mount daemon on the
+given fileserver to obtain its export list.  Amd then obtains
+filehandles for each of the exported filesystems.  Any errors at this
+stage cause that particular filesystem to be ignored.  Finally each
+filesystem is mounted.  Again, errors are logged but ignored.  One
+common reason for mounts to fail is that the mount point does not exist.
+Although Amd attempts to automatically create the mount point, it may
+be on a remote filesystem to which Amd does not have write permission.
+.PP
+When an attempt to unmount a `\fBhost\fR' filesystem mount fails, Amd
+remounts any filesystems which had successfully been unmounted.  To do
+this Amd queries the mount daemon again and obtains a fresh copy of the
+export list.  Amd then tries to mount any exported filesystems which
+are not currently mounted.
+.PP
+Sun's automounter provides a special `\fB\-hosts\fR' map.  To achieve the
+same effect with Amd requires two steps.  First a mount map must be
+created as follows:
+.PP
+*       type:=host;rhost:=${key};fs:=${autodir}/${rhost}/root
+.PP
+and then start Amd with the following command
+.PP
+amd /net net.map
+.PP
+where `\fBnet.map\fR' is the name of map described above.  Note that the
+value of `\fB${fs}\fR' is overridden in the map.  This is done to avoid a
+clash between the mount tree and any other filesystem already mounted
+from the same fileserver.
+.PP
+If different mount options are needed for different hosts then
+additional entries can be added to the map, for example
+.PP
+host2       opts:=ro,nosuid,soft
+.PP
+would soft mount `\fBhost2\fR' read-only.
+.PP
+\&\fB5.3 Network Filesystem Group (`nfsx')\fR
+.PP
+The \*(L"nfsx\*(R" (`\fBtype:=nfsx\fR') filesystem allows a group of filesystems to
+be mounted from a single \s-1NFS\s0 server.  The implementation is layered
+above the `\fBnfs\fR' implementation so keep-alives work in the same way.
+.PP
+The options are the same as for the `\fBnfs\fR' filesystem with one
+difference.
+.PP
+The following options must be specified:
+.PP
+`\fBrhost\fR'
+the remote fileserver.  This must be an entry in the hosts
+database.  \s-1IP\s0 addresses are not accepted.  The default value is
+taken from the local host name (`\fB${host}\fR') if no other value is
+specified.
+.PP
+`\fBrfs\fR'
+as a list of filesystems to mount.  The list is in the form of a
+comma separated strings.
+.PP
+For example:
+.PP
+pub  type:=nfsx;rhost:=gould;\e
+rfs:=/public,/,graphics,usenet;fs:=${autodir}/${rhost}/root
+.PP
+The first string defines the root of the tree, and is applied as a
+prefix to the remaining members of the list which define the individual
+filesystems.  The first string is _not_ used as a filesystem name.  A
+parallel operation is used to determine the local mount points to
+ensure a consistent layout of a tree of mounts.
+.PP
+Here, the _three_ filesystems, `\fB/public\fR', `\fB/public/graphics\fR' and
+`\fB/public/usenet\fR', would be mounted.
+.PP
+A local mount point, `\fB${fs}\fR', _must_ be specified.  The default
+local mount point will not work correctly in the general case.  A
+suggestion is to use `\fBfs:=${autodir}/${rhost}/root\fR'.
+.PP
+\&\fB5.4 Unix Filesystem (`ufs', `xfs', or `efs')\fR
+.PP
+The \*(L"ufs\*(R" (`\fBtype:=ufs\fR') filesystem type provides access to the system's
+standard disk filesystem\*(--usually a derivative of the Berkeley Fast
+Filesystem.
+.PP
+The following option must be specified:
+.PP
+`\fBdev\fR'
+the block special device to be mounted.
+.PP
+A \s-1UFS\s0 entry might be:
+.PP
+jsp   host==charm;type:=ufs;dev:=/dev/sd0d;sublink:=jsp
+.PP
+\&\s-1UFS\s0 is the default Unix disk-based file system, which Am-utils picks
+up during the autoconfiguration phase.  Some systems have more than one
+type, such as \s-1IRIX,\s0 that comes with \s-1EFS \s0(Extent File System) and \s-1XFS
+\&\s0(Extended File System).  In those cases, you may explicitly set the file
+system type, by using entries such:
+.PP
+ez1   type:=efs;dev:=/dev/xd0a
+ez2   type:=xfs;dev:=/dev/sd3c
+.PP
+\&\fB5.5 Caching Filesystem (`cachefs')\fR
+.PP
+The \*(L"cachefs\*(R" (`\fBtype:=cachefs\fR') filesystem caches files from one
+location onto another, presumably providing faster access.  It is
+particularly useful to cache from a larger and remote (slower) \s-1NFS\s0
+partition to a smaller and local (faster) \s-1UFS\s0 directory.
+.PP
+The following options must be specified:
+.PP
+`\fBcachedir\fR'
+the directory where the cache is stored.
+.PP
+`\fBrfs\fR'
+the path name to the \*(L"back file system\*(R" to be cached from.
+.PP
+`\fBfs\fR'
+the \*(L"front file system\*(R" mount point to the cached files, where Amd
+will set a symbolic link pointing to.
+.PP
+A CacheFS entry for, say, the `\fB/import\fR' Amd mount point, might be:
+.PP
+copt  type:=cachefs;cachedir:=/cache;rfs:=/import/opt;fs:=/n/import/copt
+.PP
+Access to the pathname `\fB/import/copt\fR' will follow a symbolic link to
+`\fB/n/import/copt\fR'.  The latter is the mount point for a caching file
+system, that caches from `\fB/import/opt\fR' to `\fB/cache\fR'.
+.PP
+Caveats:
+1. This file system is currently only implemented for Solaris 2.x!
+.PP
+2. Before being used for the first time, the cache directory must be
+initialized with `\fBcfsadmin \-c \s-1CACHEDIR\s0\fR'.  See the manual page for
+cfsadmin(1M) for more information.
+.PP
+3. The \*(L"back file system\*(R" mounted must be a complete file system, not
+a subdirectory thereof; otherwise you will get an error \*(L"Invalid
+Argument\*(R".
+.PP
+4. If Amd aborts abnormally, the state of the cache may be
+inconsistent, requiring running the command `fsck \-F cachefs
+\&\s-1CACHEDIR\s0'.  Otherwise you will get the error \*(L"No Space Left on
+Device\*(R".
+.PP
+\&\fB5.6 CD-ROM Filesystem (`cdfs')\fR
+.PP
+The \*(L"cdfs\*(R" (`\fBtype:=cdfs\fR') filesystem mounts a CD-ROM with an \s-1ISO9660\s0
+format filesystem on it.
+.PP
+The following option must be specified:
+.PP
+`\fBdev\fR'
+the block special device to be mounted.
+.PP
+Some operating systems will fail to mount read-only CDs unless the
+`\fBro\fR' option is specified.  A cdfs entry might be:
+.PP
+cdfs      os==sunos4;type:=cdfs;dev:=/dev/sr0 \e
+os==sunos5;addopts:=ro;type:=cdfs;dev:=/dev/dsk/c0t6d0s2
+.PP
+\&\fB5.7 Loopback Filesystem (`lofs')\fR
+.PP
+The \*(L"lofs\*(R" (`\fBtype:=lofs\fR') filesystem is also called the loopback
+filesystem.  It mounts a local directory on another, thus providing
+mount-time binding to another location (unlike symbolic links).
+.PP
+The loopback filesystem is particularly useful within the context of
+a chroot-ed directory (via \fIchroot\fR\|(2)), to provide access to directories
+otherwise inaccessible.
+.PP
+The following option must be specified:
+.PP
+`\fBrfs\fR'
+the pathname to be mounted on top of `\fB${fs}\fR'.
+.PP
+Usually, the \s-1FTP\s0 server runs in a chroot-ed environment, for security
+reasons.  In this example, lofs is used to provide a subdirectory within
+a user's home directory, also available for public ftp.
+.PP
+lofs      type:=lofs;rfs:=/home/ezk/myftpdir;fs:=/usr/ftp/pub/ezk
+.PP
+\&\fB5.8 Memory/RAM Filesystem (`mfs')\fR
+.PP
+The \*(L"mfs\*(R" (`\fBtype:=mfs\fR') filesystem is available in 4.4BSD, Linux, and
+other systems.  It creates a filesystem in a portion of the system's
+memory, thus providing very fast file (volatile) access.
+.PP
+\&\s-1XXX: THIS FILESYSTEM IS NOT IMPLEMENTED YET\s0!
+.PP
+\&\fB5.9 Null Filesystem (`nullfs')\fR
+.PP
+The \*(L"nullfs\*(R" (`\fBtype:=nullfs\fR') filesystem is available from 4.4BSD, and
+is very similar to the loopback filesystem, \*(L"lofs\*(R".
+.PP
+\&\s-1XXX: THIS FILESYSTEM IS NOT IMPLEMENTED YET\s0!
+.PP
+\&\fB5.10 Floppy Filesystem (`pcfs')\fR
+.PP
+The \*(L"pcfs\*(R" (`\fBtype:=pcfs\fR') filesystem mounts a floppy previously
+formatted for the MS-DOS format.
+.PP
+The following option must be specified:
+.PP
+`\fBdev\fR'
+the block special device to be mounted.
+.PP
+A pcfs entry might be:
+.PP
+pcfs      os==sunos4;type:=pcfs;dev:=/dev/fd0 \e
+os==sunos5;type:=pcfs;dev:=/dev/diskette
+.PP
+\&\fB5.11 Translucent Filesystem (`tfs')\fR
+.PP
+The \*(L"tfs\*(R" (`\fBtype:=tfs\fR') filesystem is an older version of the 4.4BSD
+\&\*(L"unionfs\*(R".
+.PP
+\&\s-1XXX: THIS FILESYSTEM IS NOT IMPLEMENTED YET\s0!
+.PP
+\&\fB5.12 Shared Memory+Swap Filesystem (`tmpfs')\fR
+.PP
+The \*(L"tmpfs\*(R" (`\fBtype:=tmpfs\fR') filesystem shares memory between a the swap
+device and the rest of the system.  It is generally used to provide a
+fast access `\fB/tmp\fR' directory, one that uses memory that is otherwise
+unused.  This filesystem is available in SunOS 4.x and 5.x.
+.PP
+\&\s-1XXX: THIS FILESYSTEM IS NOT IMPLEMENTED YET\s0!
+.PP
+\&\fB5.13 User \s-1ID\s0 Mapping Filesystem (`umapfs')\fR
+.PP
+The \*(L"umapfs\*(R" (`\fBtype:=umapfs\fR') filesystem maps User IDs of file
+ownership, and is available from 4.4BSD.
+.PP
+\&\s-1XXX: THIS FILESYSTEM IS NOT IMPLEMENTED YET\s0!
+.PP
+\&\fB5.14 Program Filesystem (`program')\fR
+.PP
+The \*(L"program\*(R" (`\fBtype:=program\fR') filesystem type allows a program to be
+run whenever a mount or unmount is required.  This allows easy addition
+of support for other filesystem types, such as \s-1MIT\s0's Remote Virtual
+Disk (\s-1RVD\s0) which has a programmatic interface via the commands
+`\fBrvdmount\fR' and `\fBrvdunmount\fR'.
+.PP
+The following options must be specified:
+.PP
+`\fBmount\fR'
+the program which will perform the mount.
+.PP
+`\fBunmount\fR'
+the program which will perform the unmount.
+.PP
+The exit code from these two programs is interpreted as a Unix error
+code.  As usual, exit code zero indicates success.  To execute the
+program Amd splits the string on whitespace to create an array of
+substrings.  Single quotes `'' can be used to quote whitespace if that
+is required in an argument.  There is no way to escape or change the
+quote character.
+.PP
+To run the program `\fBrvdmount\fR' with a host name and filesystem as
+arguments would be specified by
+`\fBfs:=${autodir}${path};mount:=\*(L"/etc/rvdmount rvdmount fserver ${fs}\*(R"\fR'.
+.PP
+The first element in the array is taken as the pathname of the
+program to execute.  The other members of the array form the argument
+vector to be passed to the program, \*(L"including argument zero\*(R".  This
+means that the split string must have at least two elements.  The
+program is directly executed by Amd, not via a shell.  This means that
+scripts must begin with a `\fB#!\fR' interpreter specification.
+.PP
+If a filesystem type is to be heavily used, it may be worthwhile
+adding a new filesystem type into Amd, but for most uses the program
+filesystem should suffice.
+.PP
+When the program is run, standard input and standard error are
+inherited from the current values used by Amd.  Standard output is a
+duplicate of standard error.  The value specified with the `\fB\-l\fR' command
+line option has no effect on standard error.
+.PP
+\&\fB5.15 Symbolic Link Filesystem (`link')\fR
+.PP
+Each filesystem type creates a symbolic link to point from the volume
+name to the physical mount point.  The `\fBlink\fR' filesystem does the same
+without any other side effects.  This allows any part of the machines
+name space to be accessed via Amd.
+.PP
+One common use for the symlink filesystem is `\fB/homes\fR' which can be
+made to contain an entry for each user which points to their
+(auto-mounted) home directory.  Although this may seem rather expensive,
+it provides a great deal of administrative flexibility.
+.PP
+The following option must be defined:
+.PP
+`\fBfs\fR'
+The value of \s-1FS\s0 option specifies the destination of the link, as
+modified by the \s-1SUBLINK\s0 option.  If \s-1SUBLINK\s0 is non-null, it is
+appended to `\fB${fs}\fR'`\fB/\fR' and the resulting string is used as the
+target.
+.PP
+The `\fBlink\fR' filesystem can be thought of as identical to the `\fBufs\fR'
+filesystem but without actually mounting anything.
+.PP
+An example entry might be:
+.PP
+jsp   host==charm;type:=link;fs:=/home/charm;sublink:=jsp
+which would return a symbolic link pointing to `\fB/home/charm/jsp\fR'.
+.PP
+\&\fB5.16 Symbolic Link Filesystem \s-1II \s0(`linkx')\fR
+.PP
+The \*(L"linkx\*(R" (`\fBtype:=linkx\fR') filesystem type is identical to `\fBlink\fR' with
+the exception that the target of the link must exist.  Existence is
+checked with the \fIlstat\fR\|(2) system call.
+.PP
+The `\fBlinkx\fR' filesystem type is particularly useful for wildcard map
+entries.  In this case, a list of possible targets can be given and Amd
+will choose the first one which exists on the local machine.
+.PP
+\&\fB5.17 NFS-Link Filesystem (`nfsl')\fR
+.PP
+The \*(L"nfsl\*(R" (`\fBtype:=nfsl\fR') filesystem type is a combination of two
+others: `\fBlink\fR' and `\fBnfs\fR'.  If the local host name is equal to the value
+of `\fB${rhost}\fR', or if the target pathname listed in `\fB${fs}\fR' exists,
+`\fBnfsl\fR' will behave exactly as `\fBtype:=link\fR', and refer to the target as
+a symbolic link.  If the local host name is not equal to the value of
+`\fB${rhost}\fR', or if the target of the link does not exist, Amd will treat
+it as `\fBtype:=nfs\fR', and will mount a remote pathname for it.
+.PP
+The `\fBnfsl\fR' filesystem type is particularly useful as a shorthand for
+the more cumbersome and yet one of the most popular Amd entries.  For
+example, you can simplify all map entries that look like:
+.PP
+zing    \-fs:=/n/shekel/u/zing \e
+host!=shekel;type:=nfs;rhost:=shekel;rfs:=${fs} \e
+host==shekel;type:=link
+.PP
+or
+.PP
+zing    \-fs:=/n/shekel/u/zing \e
+exists(${fs});type:=link \e
+!exists(${fs});type:=nfs;rhost:=shekel;rfs:=${fs}
+.PP
+into a shorter form
+.PP
+zing    type:=nfsl;fs:=/n/shekel/u/zing;rhost:=shekel;rfs:=${fs}
+.PP
+Not just does it make the maps smaller and simpler, but it avoids
+possible mistakes that often happen when forgetting to set up the two
+entries (one for `\fBtype:=nfs\fR' and the other for `\fBtype:=link\fR') necessary
+to perform transparent mounts of existing or remote mounts.
+.PP
+\&\fB5.18 Automount Filesystem (`auto')\fR
+.PP
+The \*(L"auto\*(R" (`\fBtype:=auto\fR') filesystem type creates a new automount point
+below an existing automount point.  Top-level automount points appear
+as system mount points.  An automount mount point can also appear as a
+sub-directory of an existing automount point.  This allows some
+additional structure to be added, for example to mimic the mount tree of
+another machine.
+.PP
+The following options may be specified:
+.PP
+`\fBcache\fR'
+specifies whether the data in this mount-map should be cached.
+The default value is `\fBnone\fR', in which case no caching is done in
+order to conserve memory.
+.PP
+However, better performance and reliability can be obtained by
+caching some or all of a mount-map.
+.PP
+If the cache option specifies `\fBall\fR', the entire map is enumerated
+when the mount point is created.
+.PP
+If the cache option specifies `\fBinc\fR', caching is done incrementally
+as and when data is required.  Some map types do not support cache
+mode `\fBall\fR', in which case `\fBinc\fR' is used whenever `\fBall\fR' is
+requested.
+.PP
+Caching can be entirely disabled by using cache mode `\fBnone\fR'.
+.PP
+If the cache option specifies `\fBregexp\fR' then the entire map will be
+enumerated and each key will be treated as an egrep-style regular
+expression.  The order in which a cached map is searched does not
+correspond to the ordering in the source map so the regular
+expressions should be mutually exclusive to avoid confusion.
+.PP
+Each mount map type has a default cache type, usually `\fBinc\fR', which
+can be selected by specifying `\fBmapdefault\fR'.
+.PP
+The cache mode for a mount map can only be selected on the command
+line.  Starting Amd with the command:
+.PP
+amd /homes hesiod.homes \-cache:=inc
+.PP
+will cause `\fB/homes\fR' to be automounted using the \*(L"Hesiod\*(R" name
+server with local incremental caching of all successfully resolved
+names.
+.PP
+All cached data is forgotten whenever Amd receives a `\fB\s-1SIGHUP\s0\fR'
+signal and, if cache `\fBall\fR' mode was selected, the cache will be
+reloaded.  This can be used to inform Amd that a map has been
+updated.  In addition, whenever a cache lookup fails and Amd needs
+to examine a map, the map's modify time is examined.  If the cache
+is out of date with respect to the map then it is flushed as if a
+`\fB\s-1SIGHUP\s0\fR' had been received.
+.PP
+An additional option (`\fBsync\fR') may be specified to force Amd to
+check the map's modify time whenever a cached entry is being used.
+For example, an incremental, synchronized cache would be created
+by the following command:
+.PP
+amd /homes hesiod.homes \-cache:=inc,sync
+.PP
+`\fBfs\fR'
+specifies the name of the mount map to use for the new mount point.
+.PP
+Arguably this should have been specified with the `\fB${rfs}\fR' option
+but we are now stuck with it due to historical accident.
+.PP
+`\fBpref\fR'
+alters the name that is looked up in the mount map.  If `\fB${pref}\fR',
+the \*(L"prefix\*(R", is non-null then it is prepended to the name
+requested by the kernel \*(L"before\*(R" the map is searched.
+.PP
+The server `\fBdylan.doc.ic.ac.uk\fR' has two user disks: `\fB/dev/dsk/2s0\fR'
+and `\fB/dev/dsk/5s0\fR'.  These are accessed as `\fB/home/dylan/dk2\fR' and
+`\fB/home/dylan/dk5\fR' respectively.  Since `\fB/home\fR' is already an automount
+point, this naming is achieved with the following map entries:
+.PP
+dylan        type:=auto;fs:=${map};pref:=${key}/
+dylan/dk2    type:=ufs;dev:=/dev/dsk/2s0
+dylan/dk5    type:=ufs;dev:=/dev/dsk/5s0
+.PP
+\&\fB5.19 Direct Automount Filesystem (`direct')\fR
+.PP
+The \*(L"direct\*(R" (`\fBtype:=direct\fR') filesystem is almost identical to the
+automount filesystem.  Instead of appearing to be a directory of mount
+points, it appears as a symbolic link to a mounted filesystem.  The
+mount is done at the time the link is accessed.  *Note Automount
+Filesystem::, for a list of required options.
+.PP
+Direct automount points are created by specifying the `\fBdirect\fR'
+filesystem type on the command line:
+.PP
+amd ... /usr/man auto.direct \-type:=direct
+.PP
+where `\fBauto.direct\fR' would contain an entry such as:
+.PP
+usr/man    \-type:=nfs;rfs:=/usr/man \e
+rhost:=man\-server1  rhost:=man\-server2
+.PP
+In this example, `\fBman\-server1\fR' and `\fBman\-server2\fR' are file servers
+which export copies of the manual pages.  Note that the key which is
+looked up is the name of the automount point without the leading `\fB/\fR'.
+.PP
+\&\fB5.20 Union Filesystem (`union')\fR
+.PP
+The \*(L"union\*(R" (`\fBtype:=union\fR') filesystem type allows the contents of
+several directories to be merged and made visible in a single
+directory.  This can be used to overcome one of the major limitations
+of the Unix mount mechanism which only allows complete directories to
+be mounted.
+.PP
+For example, supposing `\fB/tmp\fR' and `\fB/var/tmp\fR' were to be merged into
+a new directory called `\fB/mtmp\fR', with files in `\fB/var/tmp\fR' taking
+precedence.  The following command could be used to achieve this effect:
+.PP
+amd ... /mtmp union:/tmp:/var/tmp \-type:=union
+.PP
+Currently, the unioned directories must _not_ be automounted.  That
+would cause a deadlock.  This seriously limits the current usefulness of
+this filesystem type and the problem will be addressed in a future
+release of Amd.
+.PP
+Files created in the union directory are actually created in the last
+named directory.  This is done by creating a wildcard entry which points
+to the correct directory.  The wildcard entry is visible if the union
+directory is listed, so allowing you to see which directory has
+priority.
+.PP
+The files visible in the union directory are computed at the time
+Amd is started, and are not kept up-to-date with respect to the
+underlying directories.  Similarly, if a link is removed, for example
+with the `\fBrm\fR' command, it will be lost forever.
+.PP
+\&\fB5.21 Error Filesystem (`error')\fR
+.PP
+The \*(L"error\*(R" (`\fBtype:=error\fR') filesystem type is used internally as a
+catch-all in the case where none of the other filesystems was selected,
+or some other error occurred.  Lookups and mounts always fail with \*(L"No
+such file or directory\*(R".  All other operations trivially succeed.
+.PP
+The error filesystem is not directly accessible.
+.PP
+\&\fB5.22 Top-level Filesystem (`toplvl')\fR
+.PP
+The \*(L"toplvl\*(R" (`\fBtype:=toplvl\fR') filesystems is derived from the `\fBauto\fR'
+filesystem and is used to mount the top-level automount nodes.
+Requests of this type are automatically generated from the command line
+arguments and can also be passed in by using the `\fB\-M\fR' option of the
+\&\*(L"Amq\*(R" command.  That option is insecure, and is unavailable unless
+am-utils was configured with `\fB\-\-with\-amq\-mount\fR'.
+.PP
+\&\fB5.23 Root Filesystem (`root')\fR
+.PP
+The \*(L"root\*(R" (`\fBtype:=root\fR') filesystem type acts as an internal
+placeholder onto which Amd can pin `\fBtoplvl\fR' mounts.  Only one node of
+this type need ever exist and one is created automatically during
+startup.  The effect of having more than one root node is undefined.
+.PP
+The root filesystem is not directly accessible.
+.PP
+\&\fB5.24 Autofs Filesystem (`autofs')\fR
+.PP
+The \*(L"autofs\*(R" (`\fBtype:=autofs\fR') filesystem uses Sun's kernel-based
+automounter supporting filesystem for Amd's mount points.  Hence it is
+another type of top level filesystem.
+.PP
+The autofs filesystem is not directly accessible from Amd maps, but
+only from the `\fBamd.conf\fR' file (see \*(L"mount_type Parameter\*(R").
+.PP
+Note that Autofs support is still very early.  See the distribution
+file `\fB\s-1README\s0.autofs\fR' for detail of what works and what does not.
+.PP
+\&\fB5.25 Inheritance Filesystem (`inherit')\fR
+.PP
+The \*(L"inheritance\*(R" (`\fBtype:=inherit\fR') filesystem is not directly
+accessible.  Instead, internal mount nodes of this type are
+automatically generated when Amd is started with the `\fB\-r\fR' option.  At
+this time the system mount table is scanned to locate any filesystems
+which are already mounted.  If any reference to these filesystems is
+made through Amd then instead of attempting to mount it, Amd simulates
+the mount and \*(L"inherits\*(R" the filesystem.  This allows a new version of
+Amd to be installed on a live system simply by killing the old daemon
+with `\fB\s-1SIGTERM\s0\fR' and starting the new one.
+.PP
+This filesystem type is not generally visible externally, but it is
+possible that the output from `\fBamq \-m\fR' may list `\fBinherit\fR' as the
+filesystem type.  This happens when an inherit operation cannot be
+completed for some reason, usually because a fileserver is down.
+.SS "6 Amd Configuration File"
+.IX Subsection "6 Amd Configuration File"
+The `\fBamd.conf\fR' file is the configuration file for Amd, as part of the
+am-utils suite.  This file contains runtime configuration information
+for the Amd automounter program.
+.PP
+* Menu:
+.PP
+See also \*(L"File Format\*(R"
+.PP
+See also \*(L"The Global Section\*(R"
+.PP
+See also \*(L"Regular Map Sections\*(R"
+.PP
+See also \*(L"Common Parameters\*(R"
+.PP
+See also \*(L"Global Parameters\*(R"
+.PP
+See also \*(L"Regular Map Parameters\*(R"
+.PP
+See also \*(L"amd.conf Examples\*(R"
+.PP
+\&\fB6.1 File Format\fR
+.PP
+The `\fBamd.conf\fR' file consists of sections and parameters.  A section
+begins with the name of the section in square brackets `\fB[]\fR' and
+continues until the next section begins or the end of the file is
+reached.  Sections contain parameters of the form `\fBname = value\fR'.
+.PP
+The file is line-based \*(-- that is, each newline-terminated line
+represents either a comment, a section name or a parameter.  No
+line-continuation syntax is available.
+.PP
+Section names, parameter names and their values are case sensitive.
+.PP
+Only the first equals sign in a parameter is significant.  Whitespace
+before or after the first equals sign is discarded.  Leading, trailing
+and internal whitespace in section and parameter names is irrelevant.
+Leading and trailing whitespace in a parameter value is discarded.
+Internal whitespace within a parameter value is not allowed, unless the
+whole parameter value is quoted with double quotes as in `name = \*(L"some
+value\*(R"'.
+.PP
+Any line beginning with a pound sign `\fB#\fR' is ignored, as are lines
+containing only whitespace.
+.PP
+The values following the equals sign in parameters are all either a
+string (no quotes needed if string does not include spaces) or a
+boolean, which may be given as `\fByes\fR'/`\fBno\fR'.  Case is significant in all
+values.  Some items such as cache timeouts are numeric.
+.PP
+\&\fB6.2 The Global Section\fR
+.PP
+The global section must be specified as `\fB[global]\fR'.  Parameters in this
+section either apply to Amd as a whole, or to all other regular map
+sections which follow.  There should be only one global section defined
+in one configuration file.
+.PP
+It is highly recommended that this section be specified first in the
+configuration file.  If it is not, then regular map sections which
+precede it will not use global values defined later.
+.PP
+\&\fB6.3 Regular Map Sections\fR
+.PP
+Parameters in regular (non-global) sections apply to a single map entry.
+For example, if the map section `\fB[/homes]\fR' is defined, then all
+parameters following it will be applied to the `\fB/homes\fR' Amd-managed
+mount point.
+.PP
+\&\fB6.4 Common Parameters\fR
+.PP
+These parameters can be specified either in the global or a map-specific
+section.  Entries specified in a map-specific section override the
+default value or one defined in the global section.   If such a common
+parameter is specified only in the global section, it is applicable to
+all regular map sections that follow.
+.PP
+* Menu:
+.PP
+See also \*(L"browsable_dirs Parameter\*(R"
+.PP
+See also \*(L"map_options Parameter\*(R"
+.PP
+See also \*(L"map_type Parameter\*(R"
+.PP
+See also \*(L"mount_type Parameter\*(R"
+.PP
+See also \*(L"search_path Parameter\*(R"
+.PP
+\&\fB6.4.1 browsable_dirs Parameter\fR
+.PP
+(type=string, default=`\fBno\fR').  If `\fByes\fR', then Amd's top-level mount
+points will be browsable to \fIreaddir\fR\|(3) calls.  This means you could run
+for example \fIls\fR\|(1) and see what keys are available to mount in that
+directory.  Not all entries are made visible to \fIreaddir\fR\|(3): the
+`\fB/defaults\fR' entry, wildcard entries, and those with a `\fB/\fR' in them are
+not included.  If you specify `\fBfull\fR' to this option, all but the
+`\fB/defaults\fR' entry will be visible.  Note that if you run a command
+which will attempt to \fIstat\fR\|(2) the entries, such as often done by `ls
+\&\-l' or `\fBls \-F\fR', Amd will attempt to mount every entry in that map.
+This is often called a \*(L"mount storm\*(R".
+.PP
+\&\fB6.4.2 map_options Parameter\fR
+.PP
+(type=string, default no options).  This option is the same as
+specifying map options on the command line to Amd, such as `\fBcache:=all\fR'.
+.PP
+\&\fB6.4.3 map_type Parameter\fR
+.PP
+(type=string, default search all map types).  If specified, Amd will
+initialize the map only for the type given.  This is useful to avoid the
+default map search type used by Amd which takes longer and can have
+undesired side-effects such as initializing \s-1NIS\s0 even if not used.
+Possible values are
+.PP
+`\fBfile\fR'
+plain files
+.PP
+`\fBhesiod\fR'
+Hesiod name service from \s-1MIT\s0
+.PP
+`\fBldap\fR'
+Lightweight Directory Access Protocol
+.PP
+`\fBndbm\fR'
+(New) dbm style hash files
+.PP
+`\fBnis\fR'
+Network Information Services (version 2)
+.PP
+`\fBnisplus\fR'
+Network Information Services Plus (version 3)
+.PP
+`\fBpasswd\fR'
+local password files
+.PP
+`\fBunion\fR'
+union maps
+.PP
+\&\fB6.4.4 mount_type Parameter\fR
+.PP
+(type=string, default=`\fBnfs\fR').  All Amd mount types default to \s-1NFS.\s0
+That is, Amd is an \s-1NFS\s0 server on the map mount points, for the local
+host it is running on.  If `\fBautofs\fR' is specified, Amd will be an autofs
+server for those mount points.
+.PP
+\&\fB6.4.5 search_path Parameter\fR
+.PP
+(type=string, default no search path).  This provides a
+(colon-delimited) search path for file maps.  Using a search path,
+sites can allow for local map customizations and overrides, and can
+distributed maps in several locations as needed.
+.PP
+\&\fB6.5 Global Parameters\fR
+.PP
+The following parameters are applicable to the `\fB[global]\fR' section only.
+.PP
+* Menu:
+.PP
+See also \*(L"arch Parameter\*(R"
+.PP
+See also \*(L"auto_dir Parameter\*(R"
+.PP
+See also \*(L"cache_duration Parameter\*(R"
+.PP
+See also \*(L"cluster Parameter\*(R"
+.PP
+See also \*(L"debug_options Parameter\*(R"
+.PP
+See also \*(L"dismount_interval Parameter\*(R"
+.PP
+See also \*(L"full_os Parameter\*(R"
+.PP
+See also \*(L"fully_qualified_hosts Parameter\*(R"
+.PP
+See also \*(L"hesiod_base Parameter\*(R"
+.PP
+See also \*(L"karch Parameter\*(R"
+.PP
+See also \*(L"ldap_base Parameter\*(R"
+.PP
+See also \*(L"ldap_cache_maxmem Parameter\*(R"
+.PP
+See also \*(L"ldap_cache_seconds Parameter\*(R"
+.PP
+See also \*(L"ldap_hostports Parameter\*(R"
+.PP
+See also \*(L"local_domain Parameter\*(R"
+.PP
+See also \*(L"log_file Parameter\*(R"
+.PP
+See also \*(L"log_options Parameter\*(R"
+.PP
+See also \*(L"nfs_retransmit_counter Parameter\*(R"
+.PP
+See also \*(L"nfs_retry_interval Parameter\*(R"
+.PP
+See also \*(L"nis_domain Parameter\*(R"
+.PP
+See also \*(L"normalize_hostnames Parameter\*(R"
+.PP
+See also \*(L"os Parameter\*(R"
+.PP
+See also \*(L"osver Parameter\*(R"
+.PP
+See also \*(L"pid_file Parameter\*(R"
+.PP
+See also \*(L"plock Parameter\*(R"
+.PP
+See also \*(L"portmap_program Parameter\*(R"
+.PP
+See also \*(L"print_pid Parameter\*(R"
+.PP
+See also \*(L"print_version Parameter\*(R"
+.PP
+See also \*(L"restart_mounts Parameter\*(R"
+.PP
+See also \*(L"selectors_on_default Parameter\*(R"
+.PP
+See also \*(L"show_statfs_entries Parameter\*(R"
+.PP
+See also \*(L"unmount_on_exit Parameter\*(R"
+.PP
+See also \*(L"vendor Parameter\*(R"
+.PP
+\&\fB6.5.1 arch Parameter\fR
+.PP
+(type=string, default to compiled in value).  Allows you to override the
+value of the arch Amd variable.
+.PP
+\&\fB6.5.2 auto_dir Parameter\fR
+.PP
+(type=string, default=`\fB/a\fR').  Same as the `\fB\-a\fR' option to Amd.  This
+sets the private directory where Amd will create sub-directories for
+its real mount points.
+.PP
+\&\fB6.5.3 cache_duration Parameter\fR
+.PP
+(type=numeric, default=300).  Same as the `\fB\-c\fR' option to Amd.  Sets the
+duration in seconds that looked up map entries remain in the cache.
+.PP
+\&\fB6.5.4 cluster Parameter\fR
+.PP
+(type=string, default no cluster).  Same as the `\fB\-C\fR' option to Amd.
+Specifies the alternate HP-UX cluster to use.
+.PP
+\&\fB6.5.5 debug_options Parameter\fR
+.PP
+(type=string, default no debug options).  Same as the `\fB\-D\fR' option to
+Amd.  Specify any debugging options for Amd.  Works only if am-utils
+was configured for debugging using the `\fB\-\-enable\-debug\fR' option.  The
+`\fBmem\fR' option, as well as all other options, can be turned on via
+`\fB\-\-enable\-debug=mem\fR'.  Otherwise debugging options are ignored.
+Options are comma delimited, and can be preceded by the string `\fBno\fR' to
+negate their meaning.  You can get the list of supported debugging and
+logging options by running `\fBamd \-H\fR'.  Possible values are:
+.PP
+`\fBall\fR'
+all options
+.PP
+`\fBamq\fR'
+register for amq
+.PP
+`\fBdaemon\fR'
+enter daemon mode
+.PP
+`\fBfork\fR'
+fork server
+.PP
+`\fBfull\fR'
+program trace
+.PP
+`\fBmem\fR'
+trace memory allocations
+.PP
+`\fBmtab\fR'
+use local `\fB./mtab\fR' file
+.PP
+`\fBstr\fR'
+debug string munging
+.PP
+`\fBtest\fR'
+full debug but no daemon
+.PP
+`\fBtrace\fR'
+trace \s-1RPC\s0 protocol and \s-1NFS\s0 mount arguments
+.PP
+\&\fB6.5.6 dismount_interval Parameter\fR
+.PP
+(type=numeric, default=120).  Same as the `\fB\-w\fR' option to Amd.  Specify
+in seconds, the time between attempts to dismount file systems that
+have exceeded their cached times.
+.PP
+\&\fB6.5.7 full_os Parameter\fR
+.PP
+(type=string, default to compiled in value).  The full name of the
+operating system, along with its version.  Allows you to override the
+compiled-in full name and version of the operating system.  Useful when
+the compiled-in name is not desired.  For example, the full operating
+system name on linux comes up as `\fBlinux\fR', but you can override it to
+`\fBlinux\-2.2.5\fR'.
+.PP
+\&\fB6.5.8 fully_qualified_hosts Parameter\fR
+.PP
+(type=string, default=`\fBno\fR').  If `\fByes\fR', Amd will perform \s-1RPC\s0
+authentication using fully-qualified host names.  This is necessary for
+some systems, and especially when performing cross-domain mounting.  For
+this function to work, the Amd variable `\fB${hostd}\fR' is used, requiring
+that `\fB${domain}\fR' not be null.
+.PP
+\&\fB6.5.9 hesiod_base Parameter\fR
+.PP
+(type=string, default=`\fBautomount\fR').  Specify the base name for hesiod
+maps.
+.PP
+\&\fB6.5.10 karch Parameter\fR
+.PP
+(type=string, default to karch of the system).  Same as the `\fB\-k\fR' option
+to Amd.  Allows you to override the kernel-architecture of your system.
+Useful for example on Sun (Sparc) machines, where you can build one Amd
+binary, and run it on multiple machines, yet you want each one to get
+the correct karch variable set (for example, sun4c, sun4m, sun4u, etc.)
+Note that if not specified, Amd will use \fIuname\fR\|(2) to figure out the
+kernel architecture of the machine.
+.PP
+\&\fB6.5.11 ldap_base Parameter\fR
+.PP
+(type=string, default not set).  Specify the base name for \s-1LDAP.\s0
+.PP
+\&\fB6.5.12 ldap_cache_maxmem Parameter\fR
+.PP
+(type=numeric, default=131072).  Specify the maximum memory Amd should
+use to cache \s-1LDAP\s0 entries.
+.PP
+\&\fB6.5.13 ldap_cache_seconds Parameter\fR
+.PP
+(type=numeric, default=0).  Specify the number of seconds to keep
+entries in the cache.
+.PP
+\&\fB6.5.14 ldap_hostports Parameter\fR
+.PP
+(type=string, default not set).  Specify LDAP-specific values such as
+country and organization.
+.PP
+\&\fB6.5.15 local_domain Parameter\fR
+.PP
+(type=string, default no sub-domain).  Same as the `\fB\-d\fR' option to Amd.
+Specify the local domain name.  If this option is not given the domain
+name is determined from the hostname, by removing the first component
+of the fully-qualified host name.
+.PP
+\&\fB6.5.16 log_file Parameter\fR
+.PP
+(type=string, default=`\fBstderr\fR').  Same as the `\fB\-l\fR' option to Amd.
+Specify a file name to log Amd events to.  If the string `\fB/dev/stderr\fR'
+is specified, Amd will send its events to the standard error file
+descriptor.
+.PP
+If the string `\fBsyslog\fR' is given, Amd will record its events with the
+system logger \fIsyslogd\fR\|(8).  If your system supports syslog facilities,
+then the default facility used is `\fB\s-1LOG_DAEMON\s0\fR'.
+.PP
+When using syslog, if you wish to change the facility, append its
+name to the option name, delimited by a single colon.  For example, if
+it is the string `\fBsyslog:local7\fR' then Amd will log messages via
+\&\fIsyslog\fR\|(3) using the `\fB\s-1LOG_LOCAL7\s0\fR' facility.  If the facility name
+specified is not recognized, Amd will default to `\fB\s-1LOG_DAEMON\s0\fR'.  Note:
+while you can use any syslog facility available on your system, it is
+generally a bad idea to use those reserved for other services such as
+`\fBkern\fR', `\fBlpr\fR', `\fBcron\fR', etc.
+.PP
+\&\fB6.5.17 log_options Parameter\fR
+.PP
+(type=string, default no logging options).  Same as the `\fB\-x\fR' option to
+Amd.  Specify any logging options for Amd.  Options are comma
+delimited, and can be preceded by the string `\fBno\fR' to negate their
+meaning.  The `\fBdebug\fR' logging option is only available if am-utils was
+configured with `\fB\-\-enable\-debug\fR'.  You can get the list of supported
+debugging options by running `\fBamd \-H\fR'.  Possible values are:
+.PP
+`\fBall\fR'
+all messages
+.PP
+`\fBdebug\fR'
+debug messages
+.PP
+`\fBerror\fR'
+non-fatal system errors
+.PP
+`\fBfatal\fR'
+fatal errors
+.PP
+`\fBinfo\fR'
+information
+.PP
+`\fBmap\fR'
+map errors
+.PP
+`\fBstats\fR'
+additional statistical information
+.PP
+`\fBuser\fR'
+non-fatal user errors
+.PP
+`\fBwarn\fR'
+warnings
+.PP
+`\fBwarning\fR'
+warnings
+.PP
+\&\fB6.5.18 nfs_retransmit_counter Parameter\fR
+.PP
+(type=numeric, default=11).  Same as the retransmit part of the `\fB\-t\fR'
+timeout.retransmit option to Amd.  Specifies the number of \s-1NFS\s0
+retransmissions that the kernel will use to communicate with Amd.
+see \*(L"\-t Option\*(R".
+.PP
+\&\fB6.5.19 nfs_retry_interval Parameter\fR
+.PP
+(type=numeric, default=8).  Same as the timeout part of the `\fB\-t\fR'
+timeout.retransmit option to Amd.  Specifies the \s-1NFS\s0 timeout interval,
+in _tenths_ of seconds, between \s-1NFS/RPC\s0 retries (for \s-1UDP\s0 only).  This
+is the value that the kernel will use to communicate with Amd.  *Note
+\&\-t Option::.
+.PP
+Amd relies on the kernel \s-1RPC\s0 retransmit mechanism to trigger mount
+retries.  The values of the nfs_retransmit_counter and the
+nfs_retry_interval parameters change the overall retry interval.  Too
+long an interval gives poor interactive response; too short an interval
+causes excessive retries.
+.PP
+\&\fB6.5.20 nis_domain Parameter\fR
+.PP
+(type=string, default to local \s-1NIS\s0 domain name).  Same as the `\fB\-y\fR'
+option to Amd.  Specify an alternative \s-1NIS\s0 domain from which to fetch
+the \s-1NIS\s0 maps.  The default is the system domain name.  This option is
+ignored if \s-1NIS\s0 support is not available.
+.PP
+\&\fB6.5.21 normalize_hostnames Parameter\fR
+.PP
+(type=boolean, default=`\fBno\fR').  Same as the `\fB\-n\fR' option to Amd.  If
+`\fByes\fR', then the name referred to by `\fB${rhost}\fR' is normalized relative
+to the host database before being used.  The effect is to translate
+aliases into \*(L"official\*(R" names.
+.PP
+\&\fB6.5.22 os Parameter\fR
+.PP
+(type=string, default to compiled in value).  Same as the `\fB\-O\fR' option
+to Amd.  Allows you to override the compiled-in name of the operating
+system.  Useful when the built-in name is not desired for backward
+compatibility reasons.  For example, if the built-in name is `\fBsunos5\fR',
+you can override it to `\fBsos5\fR', and use older maps which were written
+with the latter in mind.
+.PP
+\&\fB6.5.23 osver Parameter\fR
+.PP
+(type=string, default to compiled in value).  Same as the `\fB\-o\fR' option
+to Amd.  Allows you to override the compiled-in version number of the
+operating system.  Useful when the built-in version is not desired for
+backward compatibility reasons.  For example, if the build in version
+is `\fB2.5.1\fR', you can override it to `\fB5.5.1\fR', and use older maps that
+were written with the latter in mind.
+.PP
+\&\fB6.5.24 pid_file Parameter\fR
+.PP
+(type=string, default=`\fB/dev/stdout\fR').  Specify a file to store the
+process \s-1ID\s0 of the running daemon into.  If not specified, Amd will
+print its process id onto the standard output.  Useful for killing Amd
+after it had run.  Note that the \s-1PID\s0 of a running Amd can also be
+retrieved via Amq (see \*(L"Amq \-p option\*(R").
+.PP
+This file is used only if the `\fBprint_pid\fR' option is on (*note
+print_pid Parameter::).
+.PP
+\&\fB6.5.25 plock Parameter\fR
+.PP
+(type=boolean, default=`\fByes\fR').  Same as the `\fB\-S\fR' option to Amd.  If
+`\fByes\fR', lock the running executable pages of Amd into memory.  To
+improve Amd's performance, systems that support the \fIplock\fR\|(3) call can
+lock the Amd process into memory.  This way there is less chance the
+operating system will schedule, page out, and swap the Amd process as
+needed.  This improves Amd's performance, at the cost of reserving the
+memory used by the Amd process (making it unavailable for other
+processes).
+.PP
+\&\fB6.5.26 portmap_program Parameter\fR
+.PP
+(type=numeric, default=300019).  Specify an alternate Port-mapper \s-1RPC\s0
+program number, other than the official number.  This is useful when
+running multiple Amd processes.  For example, you can run another Amd
+in \*(L"test\*(R" mode, without affecting the primary Amd process in any way.
+For safety reasons, the alternate program numbers that can be specified
+must be in the range 300019\-300029, inclusive.  Amq has an option `\fB\-P\fR'
+which can be used to specify an alternate program number of an Amd to
+contact.  In this way, amq can fully control any number of Amd
+processes running on the same host.
+.PP
+\&\fB6.5.27 print_pid Parameter\fR
+.PP
+(type=boolean, default=`\fBno\fR').  Same as the `\fB\-p\fR' option to Amd.  If
+`\fByes\fR', Amd will print its process \s-1ID\s0 upon starting.
+.PP
+\&\fB6.5.28 print_version Parameter\fR
+.PP
+(type=boolean, default=`\fBno\fR').  Same as the `\fB\-v\fR' option to Amd, but the
+version prints and Amd continues to run.  If `\fByes\fR', Amd will print its
+version information string, which includes some configuration and
+compilation values.
+.PP
+\&\fB6.5.29 restart_mounts Parameter\fR
+.PP
+(type=boolean, default=`\fBno\fR').  Same as the `\fB\-r\fR' option to Amd.  If
+`\fByes\fR' Amd will scan the mount table to determine which file systems are
+currently mounted.  Whenever one of these would have been auto-mounted,
+Amd inherits it.
+.PP
+\&\fB6.5.30 selectors_on_default Parameter\fR
+.PP
+(type=boolean, default=`\fBno\fR').  If `\fByes\fR', then the `\fB/defaults\fR' entry of
+maps will be looked for and any selectors processed before setting
+defaults for all other keys in that map.  Useful when you want to set
+different options for a complete map based on some parameters.  For
+example, you may want to better the \s-1NFS\s0 performance over slow
+slip-based networks as follows:
+.PP
+/defaults \e
+wire==slip\-net;opts:=intr,rsize=1024,wsize=1024 \e
+wire!=slip\-net;opts:=intr,rsize=8192,wsize=8192
+.PP
+\&\fB6.5.31 show_statfs_entries Parameter\fR
+.PP
+(type=boolean), default=`\fBno\fR').  If `\fByes\fR', then all maps which are
+browsable will also show the number of entries (keys) they have when
+\&\fIdf\fR\|(1) runs. (This is accomplished by returning non-zero values to the
+\&\fIstatfs\fR\|(2) system call).
+.PP
+\&\fB6.5.32 unmount_on_exit Parameter\fR
+.PP
+(type=boolean), default=`\fBno\fR').  If `\fByes\fR', then Amd will attempt to
+unmount all file systems which it knows about.  Normally it leaves all
+(esp. \s-1NFS\s0) mounted file systems intact.  Note that Amd does not know
+about file systems mounted before it starts up, unless the
+`\fBrestart_mounts\fR' option is used (see \*(L"restart_mounts Parameter\*(R").
+.PP
+\&\fB6.5.33 vendor Parameter\fR
+.PP
+(type=string, default to compiled in value).  The name of the vendor of
+the operating system.  Overrides the compiled-in vendor name.  Useful
+when the compiled-in name is not desired.  For example, most Intel based
+systems set the vendor name to `\fBunknown\fR', but you can set it to
+`\fBredhat\fR'.
+.PP
+\&\fB6.6 Regular Map Parameters\fR
+.PP
+The following parameters are applicable only to regular map sections.
+.PP
+* Menu:
+.PP
+See also \*(L"map_name Parameter\*(R"
+.PP
+See also \*(L"tag Parameter\*(R"
+.PP
+\&\fB6.6.1 map_name Parameter\fR
+.PP
+(type=string, must be specified).  Name of the map where the keys are
+located.
+.PP
+\&\fB6.6.2 tag Parameter\fR
+.PP
+(type=string, default no tag).  Each map entry in the configuration file
+can be tagged.  If no tag is specified, that map section will always be
+processed by Amd.  If it is specified, then Amd will process the map if
+the `\fB\-T\fR' option was given to Amd, and the value given to that
+command-line option matches that in the map section.
+.PP
+\&\fB6.7 amd.conf Examples\fR
+.PP
+The following is the actual `\fBamd.conf\fR' file I use at the Computer
+Science Department of Columbia University.
+.PP
+# \s-1GLOBAL OPTIONS SECTION\s0
+[ global ]
+normalize_hostnames =    no
+print_pid =              no
+#pid_file =              /var/run/amd.pid
+restart_mounts =         yes
+#unmount_on_exit =       yes
+auto_dir =               /n
+log_file =               /var/log/amd
+log_options =            all
+#debug_options =         all
+plock =                  no
+selectors_on_default =   yes
+# config.guess picks up \*(L"sunos5\*(R" and I don't want to edit my maps yet
+os =                     sos5
+# if you print_version after setting up \*(L"os\*(R", it will show it.
+print_version =          no
+map_type =               file
+search_path =            /etc/amdmaps:/usr/lib/amd:/usr/local/AMD/lib
+browsable_dirs =         yes
+fully_qualified_hosts =  no
+.PP
+# \s-1DEFINE AN AMD MOUNT POINT\s0
+[ /u ]
+map_name =               amd.u
+.PP
+[ /proj ]
+map_name =               amd.proj
+.PP
+[ /src ]
+map_name =               amd.src
+.PP
+[ /misc ]
+map_name =               amd.misc
+.PP
+[ /import ]
+map_name =               amd.import
+.PP
+[ /tftpboot/.amd ]
+tag =                    tftpboot
+map_name =               amd.tftpboot
+.SS "7 Run-time Administration"
+.IX Subsection "7 Run-time Administration"
+* Menu:
+.PP
+See also \*(L"Starting Amd\*(R"
+.PP
+See also \*(L"Stopping Amd\*(R"
+.PP
+See also \*(L"Restarting Amd\*(R"
+.PP
+See also \*(L"Controlling Amd\*(R"
+.PP
+\&\fB7.1 Starting Amd\fR
+.PP
+Amd is best started from `\fB/etc/rc.local\fR' on \s-1BSD\s0 systems, or from the
+appropriate start-level script in `\fB/etc/init.d\fR' on System V systems.
+.PP
+if [ \-f /usr/local/sbin/ctl\-amd ]; then
+/usr/local/sbin/ctl\-amd start; (echo \-n ' amd') > /dev/console
+fi
+.PP
+The shell script, `\fBctl-amd\fR' is used to start, stop, or restart Amd.  It
+is a relatively generic script.  All options you want to set should not
+be made in this script, but rather updated in the `\fBamd.conf\fR' file.
+see \*(L"Amd Configuration File\*(R".
+.PP
+If you do not wish to use an Amd configuration file, you may start
+Amd manually.  For example, getting the map entries via \s-1NIS:\s0
+.PP
+amd \-r \-l /var/log/amd `ypcat \-k auto.master`
+.PP
+\&\fB7.2 Stopping Amd\fR
+.PP
+Amd stops in response to two signals.
+.PP
+`\fB\s-1SIGTERM\s0\fR'
+causes the top-level automount points to be unmounted and then Amd
+to exit.  Any automounted filesystems are left mounted.  They can
+be recovered by restarting Amd with the `\fB\-r\fR' command line option.
+.PP
+`\fB\s-1SIGINT\s0\fR'
+causes Amd to attempt to unmount any filesystems which it has
+automounted, in addition to the actions of `\fB\s-1SIGTERM\s0\fR'.  This signal
+is primarily used for debugging.
+.PP
+Actions taken for other signals are undefined.
+.PP
+The easiest and safest way to stop Amd, without having to find its
+process \s-1ID\s0 by hand, is to use the `\fBctl-amd\fR' script, as with:
+.PP
+ctl-amd stop
+.PP
+\&\fB7.3 Restarting Amd\fR
+.PP
+Before Amd can be started, it is vital to ensure that no other Amd
+processes are managing any of the mount points, and that the previous
+process(es) have terminated cleanly.  When a terminating signal is set
+to Amd, the automounter does _not_ terminate right then.  Rather, it
+starts by unmounting all of its managed mount mounts in the background,
+and then terminates.  It usually takes a few seconds for this process
+to happen, but it can take an arbitrarily longer time.  If two or more
+Amd processes attempt to manage the same mount point, it usually will
+result in a system lockup.
+.PP
+The easiest and safest way to restart Amd, without having to find
+its process \s-1ID\s0 by hand, sending it the `\fB\s-1SIGTERM\s0\fR' signal, waiting for Amd
+to die cleanly, and verifying so, is to use the `\fBctl-amd\fR' script, as
+with:
+.PP
+ctl-amd restart
+.PP
+The script will locate the process \s-1ID\s0 of Amd, kill it, and wait for
+it to die cleanly before starting a new instance of the automounter.
+`\fBctl-amd\fR' will wait for a total of 30 seconds for Amd to die, and will
+check once every 5 seconds if it had.
+.PP
+\&\fB7.4 Controlling Amd\fR
+.PP
+It is sometimes desirable or necessary to exercise external control
+over some of Amd's internal state.  To support this requirement, Amd
+implements an \s-1RPC\s0 interface which is used by the \*(L"Amq\*(R" program.  A
+variety of information is available.
+.PP
+Amq generally applies an operation, specified by a single letter
+option, to a list of mount points.  The default operation is to obtain
+statistics about each mount point.  This is similar to the output shown
+above but includes information about the number and type of accesses to
+each mount point.
+.PP
+* Menu:
+.PP
+Default command behavior.: see \*(L"Amq default\*(R"
+.PP
+Flushing the map cache.: see \*(L"Amq \-f option\*(R"
+.PP
+Controlling a non-local host.: see \*(L"Amq \-h option\*(R"
+.PP
+Controlling the log file.: see \*(L"Amq \-l option\*(R"
+.PP
+Obtaining mount statistics.: see \*(L"Amq \-m option\*(R"
+.PP
+Mounting a volume.: see \*(L"Amq \-M\-option\*(R"
+.PP
+Getting Amd's process \s-1ID.:\s0 see \*(L"Amq \-p option\*(R"
+.PP
+Contacting alternate Amd processes.: see \*(L"Amq \-P\-option\*(R"
+.PP
+Obtaining global statistics.: see \*(L"Amq \-s option\*(R"
+.PP
+Use \s-1TCP\s0 transport.: see \*(L"Amq \-T option\*(R"
+.PP
+Use \s-1UDP\s0 transport.: see \*(L"Amq \-U\-option\*(R"
+.PP
+Forcing volumes to time out.: see \*(L"Amq \-u option\*(R"
+.PP
+Version information.: see \*(L"Amq \-v option\*(R"
+.PP
+Three other special options.: see \*(L"Other Amq options\*(R"
+.PP
+\&\fB7.4.1 Amq default information\fR
+.PP
+With no arguments, \*(L"Amq\*(R" obtains a brief list of all existing mounts
+created by Amd.  This is different from the list displayed by \fIdf\fR\|(1)
+since the latter only includes system mount points.
+.PP
+The output from this option includes the following information:
+.PP
+* the automount point,
+.PP
+* the filesystem type,
+.PP
+* the mount map or mount information,
+.PP
+* the internal, or system mount point.
+.PP
+For example:
+.PP
+/            root   \*(L"root\*(R"                    sky:(pid75)
+/homes       toplvl /usr/local/etc/amd.homes  /homes
+/home        toplvl /usr/local/etc/amd.home   /home
+/homes/jsp   nfs    charm:/home/charm         /a/charm/home/charm/jsp
+/homes/phjk  nfs    toytown:/home/toytown     /a/toytown/home/toytown/ai/phjk
+.PP
+If an argument is given then statistics for that volume name will be
+output.  For example:
+.PP
+What         Uid   Getattr Lookup RdDir   RdLnk   Statfs Mounted@
+/homes       0     1196    512    22      0       30     90/09/14 12:32:55
+/homes/jsp   0     0       0      0       1180    0      90/10/13 12:56:58
+.PP
+`\fBWhat\fR'
+the volume name.
+.PP
+`\fBUid\fR'
+ignored.
+.PP
+`\fBGetattr\fR'
+the count of \s-1NFS \s0\*(L"getattr\*(R" requests on this node.  This should
+only be non-zero for directory nodes.
+.PP
+`\fBLookup\fR'
+the count of \s-1NFS \s0\*(L"lookup\*(R" requests on this node.  This should only
+be non-zero for directory nodes.
+.PP
+`\fBRdDir\fR'
+the count of \s-1NFS \s0\*(L"readdir\*(R" requests on this node.  This should only
+be non-zero for directory nodes.
+.PP
+`\fBRdLnk\fR'
+the count of \s-1NFS \s0\*(L"readlink\*(R" requests on this node.  This should be
+zero for directory nodes.
+.PP
+`\fBStatfs\fR'
+the count of \s-1NFS \s0\*(L"statfs\*(R" requests on this node.  This should only
+be non-zero for top-level automount points.
+.PP
+`\fBMounted@\fR'
+the date and time the volume name was first referenced.
+.PP
+\&\fB7.4.2 Amq `\-f' option\fR
+.PP
+The `\fB\-f\fR' option causes Amd to flush the internal mount map cache.  This
+is useful for example in Hesiod maps since Amd will not automatically
+notice when they have been updated.  The map cache can also be
+synchronized with the map source by using the `\fBsync\fR' option (*note
+Automount Filesystem::).
+.PP
+\&\fB7.4.3 Amq `\-l' option\fR
+.PP
+Tell Amd to use log_file as the log file name.  For security reasons,
+this _must_ be the same log file which Amd used when started.  This
+option is therefore only useful to refresh Amd's open file handle on
+the log file, so that it can be rotated and compressed via daily cron
+jobs.
+.PP
+\&\fB7.4.4 Amq `\-h' option\fR
+.PP
+By default the local host is used.  In an HP-UX cluster the root server
+is used since that is the only place in the cluster where Amd will be
+running.  To query Amd on another host the `\fB\-h\fR' option should be used.
+.PP
+\&\fB7.4.5 Amq `\-m' option\fR
+.PP
+The `\fB\-m\fR' option displays similar information about mounted filesystems,
+rather than automount points.  The output includes the following
+information:
+.PP
+* the mount information,
+.PP
+* the mount point,
+.PP
+* the filesystem type,
+.PP
+* the number of references to this filesystem,
+.PP
+* the server hostname,
+.PP
+* the state of the file server,
+.PP
+* any error which has occurred.
+.PP
+For example:
+.PP
+\&\*(L"root\*(R"           truth:(pid602)     root   1 localhost is up
+hesiod.home      /home              toplvl 1 localhost is up
+hesiod.vol       /vol               toplvl 1 localhost is up
+hesiod.homes     /homes             toplvl 1 localhost is up
+amy:/home/amy    /a/amy/home/amy    nfs    5 amy is up
+swan:/home/swan  /a/swan/home/swan  nfs    0 swan is up (Permission denied)
+ex:/home/ex      /a/ex/home/ex      nfs    0 ex is down
+.PP
+When the reference count is zero the filesystem is not mounted but
+the mount point and server information is still being maintained by Amd.
+.PP
+\&\fB7.4.6 Amq `\-M' option\fR
+.PP
+The `\fB\-M\fR' option passes a new map entry to Amd and waits for it to be
+evaluated, possibly causing a mount.  For example, the following
+command would cause `\fB/home/toytown\fR' on host `\fBtoytown\fR' to be mounted
+locally on `\fB/mnt/toytown\fR'.
+.PP
+amq \-M '/mnt/toytown type:=nfs;rfs:=/home/toytown;rhost:=toytown;fs:=${key}'
+.PP
+Amd applies some simple security checks before allowing this
+operation.  The check tests whether the incoming request is from a
+privileged \s-1UDP\s0 port on the local machine.  \*(L"Permission denied\*(R" is
+returned if the check fails.
+.PP
+This option is very insecure as it is vulnerable to attacks such as
+\&\s-1IP\s0 Spoofing.  In other words, it is relatively easy for an attacker who
+really wants to, to make your Amd process mount any filesystem from the
+Internet!  Therefore, the _complete_ code which supports the `\fB\-M\fR'
+option in Amd and Amq is turned off by default.  To turn it on, you
+have to reconfigure am-utils with `\fBconfigure \-\-enable\-amq\-mount\fR'.
+Think twice before doing so, and use this option only if you absolutely
+need to.
+.PP
+A future release of Amd will include code to allow the \fImount\fR\|(8)
+command to mount automount points:
+.PP
+mount \-t amd /vol hesiod.vol
+.PP
+This will then allow Amd to be controlled from the standard system
+filesystem mount list.
+.PP
+\&\fB7.4.7 Amq `\-p' option\fR
+.PP
+Return the process \s-1ID\s0 of the remote or locally running Amd.  Useful
+when you need to send a signal to the local Amd process, and would
+rather not have to search through the process table.  This option is
+used in the `\fBctl-amd\fR' script.
+.PP
+\&\fB7.4.8 Amq `\-P' option\fR
+.PP
+Contact an alternate running Amd that had registered itself on a
+different \s-1RPC PROGRAM_NUMBER\s0 and apply all other operations to that
+instance of the automounter.  This is useful when you run multiple
+copies of Amd, and need to manage each one separately.  If not
+specified, Amq will use the default program number for Amd, 300019.
+For security reasons, the only alternate program numbers Amd can use
+range from 300019 to 300029, inclusive.
+.PP
+For example, to kill an alternate running Amd:
+.PP
+kill `amq \-p \-P 300020`
+.PP
+\&\fB7.4.9 Amq `\-s' option\fR
+.PP
+The `\fB\-s\fR' option displays global statistics.  If any other options are
+specified or any filesystems named then this option is ignored.  For
+example:
+.PP
+requests  stale     mount     mount     unmount
+deferred  fhandles  ok        failed    failed
+1054      1         487       290       7017
+.PP
+`\fBDeferred requests\fR'
+are those for which an immediate reply could not be constructed.
+For example, this would happen if a background mount was required.
+.PP
+`\fBStale filehandles\fR'
+counts the number of times the kernel passes a stale filehandle to
+Amd.  Large numbers indicate problems.
+.PP
+`\fBMount ok\fR'
+counts the number of automounts which were successful.
+.PP
+`\fBMount failed\fR'
+counts the number of automounts which failed.
+.PP
+`\fBUnmount failed\fR'
+counts the number of times a filesystem could not be unmounted.
+Very large numbers here indicate that the time between unmount
+attempts should be increased.
+.PP
+\&\fB7.4.10 Amq `\-T' option\fR
+.PP
+The `\fB\-T\fR' option causes the Amq to contact Amd using the \s-1TCP\s0 transport
+only (connection oriented).  Normally, Amq will use \s-1TCP\s0 first, and if
+that failed, will try \s-1UDP.\s0
+.PP
+\&\fB7.4.11 Amq `\-U' option\fR
+.PP
+The `\fB\-U\fR' option causes the Amq to contact Amd using the \s-1UDP\s0 transport
+only (connectionless).  Normally, Amq will use \s-1TCP\s0 first, and if that
+failed, will try \s-1UDP.\s0
+.PP
+\&\fB7.4.12 Amq `\-u' option\fR
+.PP
+The `\fB\-u\fR' option causes the time-to-live interval of the named mount
+points to be expired, thus causing an unmount attempt.  This is the only
+safe way to unmount an automounted filesystem.  It is not possible to
+unmount a filesystem which has been mounted with the `\fBnounmount\fR' flag.
+.PP
+\&\fB7.4.13 Amq `\-v' option\fR
+.PP
+The `\fB\-v\fR' option displays the version of Amd in a similar way to Amd's
+`\fB\-v\fR' option.
+.PP
+\&\fB7.4.14 Other Amq options\fR
+.PP
+Two other operations are implemented.  These modify the state of Amd as
+a whole, rather than any particular filesystem.  The `\fB\-x\fR' and `\fB\-D\fR'
+options have exactly the same effect as Amd's corresponding command
+line options.
+.PP
+When Amd receives a `\fB\-x\fR' flag it limits the log options being
+modified to those which were not enabled at startup.  This prevents a
+user turning _off_ any logging option which was specified at startup,
+though any which have been turned on since then can still be turned
+off.  The `\fB\-D\fR' option has a similar behavior.
+.SS "8 FSinfo"
+.IX Subsection "8 FSinfo"
+\&\s-1XXX:\s0 this chapter should be reviewed by someone knowledgeable with
+fsinfo.
+.PP
+* Menu:
+.PP
+Introduction to FSinfo.: see \*(L"FSinfo Overview\*(R"
+.PP
+Basic concepts.: see \*(L"Using FSinfo\*(R"
+.PP
+Language syntax, semantics and examples.: see \*(L"FSinfo Grammar\*(R"
+.PP
+Defining a new host.: see \*(L"FSinfo host definitions\*(R"
+.PP
+Definable host attributes.: see \*(L"FSinfo host attributes\*(R"
+.PP
+Defining locally attached filesystems.: see \*(L"FSinfo filesystems\*(R"
+.PP
+Defining additional static mounts.: see \*(L"FSinfo static mounts\*(R"
+.PP
+See also \*(L"FSinfo automount definitions\*(R"
+.PP
+See also \*(L"FSinfo Command Line Options\*(R"
+.PP
+See also \*(L"FSinfo errors\*(R"
+.PP
+\&\fB8.1 FSinfo overview\fR
+.PP
+FSinfo is a filesystem management tool.  It has been designed to work
+with Amd to help system administrators keep track of the ever
+increasing filesystem namespace under their control.
+.PP
+The purpose of FSinfo is to generate all the important standard
+filesystem data files from a single set of input data.  Starting with a
+single data source guarantees that all the generated files are
+self-consistent.  One of the possible output data formats is a set of
+Amd maps which can be used amongst the set of hosts described in the
+input data.
+.PP
+FSinfo implements a declarative language.  This language is
+specifically designed for describing filesystem namespace and physical
+layouts.  The basic declaration defines a mounted filesystem including
+its device name, mount point, and all the volumes and access
+permissions.  FSinfo reads this information and builds an internal map
+of the entire network of hosts.  Using this map, many different data
+formats can be produced including `\fB/etc/fstab\fR', `\fB/etc/exports\fR', Amd
+mount maps and `\fB/etc/bootparams\fR'.
+.PP
+\&\fB8.2 Using FSinfo\fR
+.PP
+The basic strategy when using FSinfo is to gather all the information
+about all disks on all machines into one set of declarations.  For each
+machine being managed, the following data is required:
+.PP
+* Hostname
+.PP
+* List of all filesystems and, optionally, their mount points.
+.PP
+* Names of volumes stored on each filesystem.
+.PP
+* \s-1NFS\s0 export information for each volume.
+.PP
+* The list of static filesystem mounts.
+.PP
+The following information can also be entered into the same
+configuration files so that all data can be kept in one place.
+.PP
+* List of network interfaces
+.PP
+* \s-1IP\s0 address of each interface
+.PP
+* Hardware address of each interface
+.PP
+* Dumpset to which each filesystem belongs
+.PP
+* and more ...
+.PP
+To generate Amd mount maps, the automount tree must also be defined
+(see \*(L"FSinfo automount definitions\*(R").  This will have been designed at
+the time the volume names were allocated.  Some volume names will not be
+automounted, so FSinfo needs an explicit list of which volumes should
+be automounted.
+.PP
+Hostnames are required at several places in the FSinfo language.  It
+is important to stick to either fully qualified names or unqualified
+names.  Using a mixture of the two will inevitably result in confusion.
+.PP
+Sometimes volumes need to be referenced which are not defined in the
+set of hosts being managed with FSinfo.  The required action is to add a
+dummy set of definitions for the host and volume names required.  Since
+the files generated for those particular hosts will not be used on them,
+the exact values used is not critical.
+.PP
+\&\fB8.3 FSinfo grammar\fR
+.PP
+FSinfo has a relatively simple grammar.  Distinct syntactic constructs
+exist for each of the different types of data, though they share a
+common flavor.  Several conventions are used in the grammar fragments
+below.
+.PP
+The notation, list(xxx), indicates a list of zero or more xxx's.
+The notation, opt(xxx), indicates zero or one xxx.  Items in double
+quotes, eg \*(L"host\*(R", represent input tokens.  Items in angle brackets, eg
+<\s-1HOSTNAME\s0>, represent strings in the input.  Strings need not be in
+double quotes, except to differentiate them from reserved words.
+Quoted strings may include the usual set of C \*(L"\e\*(R" escape sequences with
+one exception: a backslash-newline-whitespace sequence is squashed into
+a single space character.  To defeat this feature, put a further
+backslash at the start of the second line.
+.PP
+At the outermost level of the grammar, the input consists of a
+sequence of host and automount declarations.  These declarations are
+all parsed before they are analyzed.  This means they can appear in any
+order and cyclic host references are possible.
+.PP
+fsinfo      : list(fsinfo_attr) ;
+.PP
+fsinfo_attr : host | automount ;
+.PP
+* Menu:
+.PP
+See also \*(L"FSinfo host definitions\*(R"
+.PP
+See also \*(L"FSinfo automount definitions\*(R"
+.PP
+\&\fB8.4 FSinfo host definitions\fR
+.PP
+A host declaration consists of three parts: a set of machine attribute
+data, a list of filesystems physically attached to the machine, and a
+list of additional statically mounted filesystems.
+.PP
+host        : \*(L"host\*(R" host_data list(filesystem) list(mount) ;
+.PP
+Each host must be declared in this way exactly once.  Such things as
+the hardware address, the architecture and operating system types and
+the cluster name are all specified within the \*(L"host data\*(R".
+.PP
+All the disks the machine has should then be described in the \*(L"list
+of filesystems\*(R".  When describing disks, you can specify what \*(L"volname\*(R"
+the disk/partition should have and all such entries are built up into a
+dictionary which can then be used for building the automounter maps.
+.PP
+The \*(L"list of mounts\*(R" specifies all the filesystems that should be
+statically mounted on the machine.
+.PP
+* Menu:
+.PP
+See also \*(L"FSinfo host attributes\*(R"
+.PP
+See also \*(L"FSinfo filesystems\*(R"
+.PP
+See also \*(L"FSinfo static mounts\*(R"
+.PP
+\&\fB8.5 FSinfo host attributes\fR
+.PP
+The host data, \*(L"host_data\*(R", always includes the \*(L"hostname\*(R".  In
+addition, several other host attributes can be given.
+.PP
+host_data   : <\s-1HOSTNAME\s0>
+| \*(L"{\*(R" list(host_attrs) \*(L"}\*(R" <\s-1HOSTNAME\s0>
+;
+.PP
+host_attrs  : host_attr \*(L"=\*(R" <\s-1STRING\s0>
+| netif
+;
+.PP
+host_attr   : \*(L"config\*(R"
+| \*(L"arch\*(R"
+| \*(L"os\*(R"
+| \*(L"cluster\*(R"
+;
+.PP
+The \*(L"hostname\*(R" is, typically, the fully qualified hostname of the
+machine.
+.PP
+Examples:
+.PP
+host dylan.doc.ic.ac.uk
+.PP
+host {
+os = hpux
+arch = hp300
+} dougal.doc.ic.ac.uk
+.PP
+The options that can be given as host attributes are shown below.
+.PP
+* Menu:
+.PP
+netif Option: see \*(L"FSinfo host netif:\*(R"
+.PP
+config Option: see \*(L"FSinfo host config:\*(R"
+.PP
+arch Option: see \*(L"FSinfo host arch:\*(R"
+.PP
+os Option: see \*(L"FSinfo host os:\*(R"
+.PP
+cluster Option: see \*(L"FSinfo host cluster:\*(R"
+.PP
+\&\fB8.5.1 netif Option\fR
+.PP
+This defines the set of network interfaces configured on the machine.
+The interface attributes collected by FSinfo are the \s-1IP\s0 address, subnet
+mask and hardware address.  Multiple interfaces may be defined for
+hosts with several interfaces by an entry for each interface.  The
+values given are sanity checked, but are currently unused for anything
+else.
+.PP
+netif       : \*(L"netif\*(R" <\s-1STRING\s0> \*(L"{\*(R" list(netif_attrs) \*(L"}\*(R" ;
+.PP
+netif_attrs : netif_attr \*(L"=\*(R" <\s-1STRING\s0> ;
+.PP
+netif_attr  : \*(L"inaddr\*(R" | \*(L"netmask\*(R" | \*(L"hwaddr\*(R" ;
+.PP
+Examples:
+.PP
+netif ie0 {
+inaddr  = 129.31.81.37
+netmask = 0xfffffe00
+hwaddr  = \*(L"08:00:20:01:a6:a5\*(R"
+}
+.PP
+netif ec0 { }
+.PP
+\&\fB8.5.2 config Option\fR
+.PP
+This option allows you to specify configuration variables for the
+startup scripts (`\fBrc\fR' scripts).  A simple string should immediately
+follow the keyword.
+.PP
+Example:
+.PP
+config \*(L"NFS_SERVER=true\*(R"
+config \*(L"ZEPHYR=true\*(R"
+.PP
+This option is currently unsupported.
+.PP
+\&\fB8.5.3 arch Option\fR
+.PP
+This defines the architecture of the machine.  For example:
+.PP
+arch = hp300
+.PP
+This is intended to be of use when building architecture specific
+mountmaps, however, the option is currently unsupported.
+.PP
+\&\fB8.5.4 os Option\fR
+.PP
+This defines the operating system type of the host.  For example:
+.PP
+os = hpux
+.PP
+This information is used when creating the `\fBfstab\fR' files, for
+example in choosing which format to use for the `\fBfstab\fR' entries within
+the file.
+.PP
+\&\fB8.5.5 cluster Option\fR
+.PP
+This is used for specifying in which cluster the machine belongs.  For
+example:
+.PP
+cluster = \*(L"theory\*(R"
+.PP
+The cluster is intended to be used when generating the automount
+maps, although it is currently unsupported.
+.PP
+\&\fB8.6 FSinfo filesystems\fR
+.PP
+The list of physically attached filesystems follows the machine
+attributes.  These should define all the filesystems available from this
+machine, whether exported or not.  In addition to the device name,
+filesystems have several attributes, such as filesystem type, mount
+options, and `\fBfsck\fR' pass number which are needed to generate `\fBfstab\fR'
+entries.
+.PP
+filesystem  : \*(L"fs\*(R" <\s-1DEVICE\s0> \*(L"{\*(R" list(fs_data) \*(L"}\*(R" ;
+.PP
+fs_data     : fs_data_attr \*(L"=\*(R" <\s-1STRING\s0>
+| mount
+;
+.PP
+fs_data_attr
+: \*(L"fstype\*(R" | \*(L"opts\*(R" | \*(L"passno\*(R"
+| \*(L"freq\*(R" | \*(L"dumpset\*(R" | \*(L"log\*(R"
+;
+.PP
+Here, <\s-1DEVICE\s0> is the device name of the disk (for example,
+`\fB/dev/dsk/2s0\fR').  The device name is used for building the mount maps
+and for the `\fBfstab\fR' file.  The attributes that can be specified are
+shown in the following section.
+.PP
+The FSinfo configuration file for `\fBdylan.doc.ic.ac.uk\fR' is listed
+below.
+.PP
+host dylan.doc.ic.ac.uk
+.PP
+fs /dev/dsk/0s0 {
+fstype = swap
+}
+.PP
+fs /dev/dsk/0s0 {
+fstype = hfs
+opts = rw,noquota,grpid
+passno = 0;
+freq = 1;
+mount / { }
+}
+.PP
+fs /dev/dsk/1s0 {
+fstype = hfs
+opts = defaults
+passno = 1;
+freq = 1;
+mount /usr {
+local {
+exportfs \*(L"dougal eden dylan zebedee brian\*(R"
+volname /nfs/hp300/local
+}
+}
+}
+.PP
+fs /dev/dsk/2s0 {
+fstype = hfs
+opts = defaults
+passno = 1;
+freq = 1;
+mount default {
+exportfs \*(L"toytown_clients hangers_on\*(R"
+volname /home/dylan/dk2
+}
+}
+.PP
+fs /dev/dsk/3s0 {
+fstype = hfs
+opts = defaults
+passno = 1;
+freq = 1;
+mount default {
+exportfs \*(L"toytown_clients hangers_on\*(R"
+volname /home/dylan/dk3
+}
+}
+.PP
+fs /dev/dsk/5s0 {
+fstype = hfs
+opts = defaults
+passno = 1;
+freq = 1;
+mount default {
+exportfs \*(L"toytown_clients hangers_on\*(R"
+volname /home/dylan/dk5
+}
+}
+.PP
+* Menu:
+.PP
+fstype Option: see \*(L"FSinfo filesystems fstype:\*(R"
+.PP
+opts Option: see \*(L"FSinfo filesystems opts:\*(R"
+.PP
+passno Option: see \*(L"FSinfo filesystems passno:\*(R"
+.PP
+freq Option: see \*(L"FSinfo filesystems freq:\*(R"
+.PP
+mount Option: see \*(L"FSinfo filesystems mount:\*(R"
+.PP
+dumpset Option: see \*(L"FSinfo filesystems dumpset:\*(R"
+.PP
+log Option: see \*(L"FSinfo filesystems log:\*(R"
+.PP
+\&\fB8.6.1 fstype Option\fR
+.PP
+This specifies the type of filesystem being declared and will be placed
+into the `\fBfstab\fR' file as is.  The value of this option will be handed
+to `\fBmount\fR' as the filesystem type\*(--it should have such values as `\fB4.2\fR',
+`\fBnfs\fR' or `\fBswap\fR'.  The value is not examined for correctness.
+.PP
+There is one special case.  If the filesystem type is specified as
+`\fBexport\fR' then the filesystem information will not be added to the
+host's `\fBfstab\fR' information, but it will still be visible on the
+network.  This is useful for defining hosts which contain referenced
+volumes but which are not under full control of FSinfo.
+.PP
+Example:
+.PP
+fstype = swap
+.PP
+\&\fB8.6.2 opts Option\fR
+.PP
+This defines any options that should be given to \fImount\fR\|(8) in the
+`\fBfstab\fR' file.  For example:
+.PP
+opts = rw,nosuid,grpid
+.PP
+\&\fB8.6.3 passno Option\fR
+.PP
+This defines the \fIfsck\fR\|(8) pass number in which to check the filesystem.
+This value will be placed into the `\fBfstab\fR' file.
+.PP
+Example:
+.PP
+passno = 1
+.PP
+\&\fB8.6.4 freq Option\fR
+.PP
+This defines the interval (in days) between dumps.  The value is placed
+as is into the `\fBfstab\fR' file.
+.PP
+Example:
+.PP
+freq = 3
+.PP
+\&\fB8.6.5 mount Option\fR
+.PP
+This defines the mountpoint at which to place the filesystem.  If the
+mountpoint of the filesystem is specified as `\fBdefault\fR', then the
+filesystem will be mounted in the automounter's tree under its volume
+name and the mount will automatically be inherited by the automounter.
+.PP
+Following the mountpoint, namespace information for the filesystem
+may be described.  The options that can be given here are `\fBexportfs\fR',
+`\fBvolname\fR' and `\fBsel\fR'.
+.PP
+The format is:
+.PP
+mount       : \*(L"mount\*(R" vol_tree ;
+.PP
+vol_tree    : list(vol_tree_attr) ;
+.PP
+vol_tree_attr
+:  <\s-1STRING\s0> \*(L"{\*(R" list(vol_tree_info) vol_tree \*(L"}\*(R" ;
+.PP
+vol_tree_info
+: \*(L"exportfs\*(R" <\s-1EXPORT\-DATA\s0>
+| \*(L"volname\*(R" <\s-1VOLNAME\s0>
+| \*(L"sel\*(R" <\s-1SELECTOR\-LIST\s0>
+;
+.PP
+Example:
+.PP
+mount default {
+exportfs \*(L"dylan dougal florence zebedee\*(R"
+volname /vol/andrew
+}
+.PP
+In the above example, the filesystem currently being declared will
+have an entry placed into the `\fBexports\fR' file allowing the filesystem to
+be exported to the machines `\fBdylan\fR', `\fBdougal\fR', `\fBflorence\fR' and
+`\fBzebedee\fR'.  The volume name by which the filesystem will be referred to
+remotely, is `\fB/vol/andrew\fR'.  By declaring the mountpoint to be
+`\fBdefault\fR', the filesystem will be mounted on the local machine in the
+automounter tree, where Amd will automatically inherit the mount as
+`\fB/vol/andrew\fR'.
+.PP
+`\fBexportfs\fR'
+a string defining which machines the filesystem may be exported to.
+This is copied, as is, into the `\fBexports\fR' file\*(--no sanity checking
+is performed on this string.
+.PP
+`\fBvolname\fR'
+a string which declares the remote name by which to reference the
+filesystem.  The string is entered into a dictionary and allows
+you to refer to this filesystem in other places by this volume
+name.
+.PP
+`\fBsel\fR'
+a string which is placed into the automounter maps as a selector
+for the filesystem.
+.PP
+\&\fB8.6.6 dumpset Option\fR
+.PP
+This provides support for Imperial College's local file backup tools and
+is not documented further here.
+.PP
+\&\fB8.6.7 log Option\fR
+.PP
+Specifies the log device for the current filesystem. This is ignored if
+not required by the particular filesystem type.
+.PP
+\&\fB8.7 FSinfo static mounts\fR
+.PP
+Each host may also have a number of statically mounted filesystems.  For
+example, the host may be a diskless workstation in which case it will
+have no `\fBfs\fR' declarations.  In this case the `\fBmount\fR' declaration is
+used to determine from where its filesystems will be mounted.  In
+addition to being added to the `\fBfstab\fR' file, this information can also
+be used to generate a suitable `\fBbootparams\fR' file.
+.PP
+mount       : \*(L"mount\*(R" <\s-1VOLNAME\s0> list(localinfo) ;
+.PP
+localinfo   : localinfo_attr <\s-1STRING\s0> ;
+.PP
+localinfo_attr
+: \*(L"as\*(R"
+| \*(L"from\*(R"
+| \*(L"fstype\*(R"
+| \*(L"opts\*(R"
+;
+.PP
+The filesystem specified to be mounted will be searched for in the
+dictionary of volume names built when scanning the list of hosts'
+definitions.
+.PP
+The attributes have the following semantics:
+`\fBfrom \s-1MACHINE\s0\fR'
+mount the filesystem from the machine with the hostname of
+\&\*(L"machine\*(R".
+.PP
+`\fBas \s-1MOUNTPOINT\s0\fR'
+mount the filesystem locally as the name given, in case this is
+different from the advertised volume name of the filesystem.
+.PP
+`\fBopts \s-1OPTIONS\s0\fR'
+native \fImount\fR\|(8) options.
+.PP
+`\fBfstype \s-1TYPE\s0\fR'
+type of filesystem to be mounted.
+.PP
+An example:
+.PP
+mount /export/exec/hp300/local as /usr/local
+.PP
+If the mountpoint specified is either `\fB/\fR' or `\fBswap\fR', the machine
+will be considered to be booting off the net and this will be noted for
+use in generating a `\fBbootparams\fR' file for the host which owns the
+filesystems.
+.PP
+\&\fB8.8 Defining an Amd Mount Map in FSinfo\fR
+.PP
+The maps used by Amd can be constructed from FSinfo by defining all the
+automount trees.  FSinfo takes all the definitions found and builds one
+map for each top level tree.
+.PP
+The automount tree is usually defined last.  A single automount
+configuration will usually apply to an entire management domain.  One
+`\fBautomount\fR' declaration is needed for each Amd automount point.  FSinfo
+determines whether the automount point is \*(L"direct\*(R" (*note Direct
+Automount Filesystem::) or \*(L"indirect\*(R" (see \*(L"Top-level Filesystem\*(R").
+Direct automount points are distinguished by the fact that there is no
+underlying \*(L"automount_tree\*(R".
+.PP
+automount   : \*(L"automount\*(R" opt(auto_opts) automount_tree ;
+.PP
+auto_opts   : \*(L"opts\*(R" <\s-1MOUNT\-OPTIONS\s0> ;
+.PP
+automount_tree
+: list(automount_attr)
+;
+.PP
+automount_attr
+: <\s-1STRING\s0> \*(L"=\*(R" <\s-1VOLNAME\s0>
+| <\s-1STRING\s0> \*(L"\->\*(R" <\s-1SYMLINK\s0>
+| <\s-1STRING\s0> \*(L"{\*(R" automount_tree \*(L"}\*(R"
+;
+.PP
+If <\s-1MOUNT\-OPTIONS\s0> is given, then it is the string to be placed in
+the maps for Amd for the `\fBopts\fR' option.
+.PP
+A \*(L"map\*(R" is typically a tree of filesystems, for example `\fBhome\fR'
+normally contains a tree of filesystems representing other machines in
+the network.
+.PP
+A map can either be given as a name representing an already defined
+volume name, or it can be a tree.  A tree is represented by placing
+braces after the name.  For example, to define a tree `\fB/vol\fR', the
+following map would be defined:
+.PP
+automount /vol { }
+.PP
+Within a tree, the only items that can appear are more maps.  For
+example:
+.PP
+automount /vol {
+andrew { }
+X11 { }
+}
+.PP
+In this case, FSinfo will look for volumes named `\fB/vol/andrew\fR' and
+`\fB/vol/X11\fR' and a map entry will be generated for each.  If the volumes
+are defined more than once, then FSinfo will generate a series of
+alternate entries for them in the maps.
+.PP
+Instead of a tree, either a link (\s-1NAME\s0 `\fB\->\fR' \s-1DESTINATION\s0) or a
+reference can be specified (\s-1NAME\s0 `\fB=\fR' \s-1DESTINATION\s0).  A link creates a
+symbolic link to the string specified, without further processing the
+entry.  A reference will examine the destination filesystem and
+optimize the reference.  For example, to create an entry for `\fBnjw\fR' in
+the `\fB/homes\fR' map, either of the two forms can be used:
+.PP
+automount /homes {
+njw \-> /home/dylan/njw
+}
+.PP
+or
+.PP
+automount /homes {
+njw = /home/dylan/njw
+}
+.PP
+In the first example, when `\fB/homes/njw\fR' is referenced from Amd, a
+link will be created leading to `\fB/home/dylan/njw\fR' and the automounter
+will be referenced a second time to resolve this filename.  The map
+entry would be:
+.PP
+njw type:=link;fs:=/home/dylan/njw
+.PP
+In the second example, the destination directory is analyzed and
+found to be in the filesystem `\fB/home/dylan\fR' which has previously been
+defined in the maps. Hence the map entry will look like:
+.PP
+njw rhost:=dylan;rfs:=/home/dylan;sublink:=njw
+.PP
+Creating only one symbolic link, and one access to Amd.
+.PP
+\&\fB8.9 FSinfo Command Line Options\fR
+.PP
+FSinfo is started from the command line by using the command:
+.PP
+fsinfo [options] files ...
+.PP
+The input to FSinfo is a single set of definitions of machines and
+automount maps.  If multiple files are given on the command-line, then
+the files are concatenated together to form the input source.  The files
+are passed individually through the C pre-processor before being parsed.
+.PP
+Several options define a prefix for the name of an output file.  If
+the prefix is not specified no output of that type is produced.  The
+suffix used will correspond either to the hostname to which a file
+belongs, or to the type of output if only one file is produced.
+Dumpsets and the `\fBbootparams\fR' file are in the latter class.  To put the
+output into a subdirectory simply put a `\fB/\fR' at the end of the prefix,
+making sure that the directory has already been made before running
+Fsinfo.
+.PP
+* Menu:
+.PP
+Amd automount directory:: see \*(L"\-a FSinfo Option\*(R"
+.PP
+Prefix for bootparams files.: see \*(L"\-b FSinfo Option\*(R"
+.PP
+Prefix for dumpset data files.: see \*(L"\-d FSinfo Option\*(R"
+.PP
+Prefix for exports files.: see \*(L"\-e FSinfo Option\*(R"
+.PP
+Prefix for fstab files.: see \*(L"\-f FSinfo Option\*(R"
+.PP
+Local hostname.: see \*(L"\-h FSinfo Option\*(R"
+.PP
+Prefix for automount maps.: see \*(L"\-m FSinfo Option\*(R"
+.PP
+Ultra quiet mode.: see \*(L"\-q FSinfo Option\*(R"
+.PP
+Verbose mode.: see \*(L"\-v FSinfo Option\*(R"
+.PP
+Define new #include directory.: see \*(L"\-I FSinfo Option\*(R"
+.PP
+Define macro.: see \*(L"\-D\-FSinfo Option\*(R"
+.PP
+Undefine macro.: see \*(L"\-U FSinfo Option\*(R"
+.PP
+\&\fB8.9.1 `\-a' \s-1AUTODIR\s0\fR
+.PP
+Specifies the directory name in which to place the automounter's
+mountpoints.  This defaults to `\fB/a\fR'.  Some sites have the autodir set
+to be `\fB/amd\fR', and this would be achieved by:
+.PP
+fsinfo \-a /amd ...
+.PP
+\&\fB8.9.2 `\-b' \s-1BOOTPARAMS\s0\fR
+.PP
+This specifies the prefix for the `\fBbootparams\fR' filename.  If it is not
+given, then the file will not be generated.  The `\fBbootparams\fR' file will
+be constructed for the destination machine and will be placed into a
+file named `\fBbootparams\fR' and prefixed by this string.  The file
+generated contains a list of entries describing each diskless client
+that can boot from the destination machine.
+.PP
+As an example, to create a `\fBbootparams\fR' file in the directory
+`\fBgeneric\fR', the following would be used:
+.PP
+fsinfo \-b generic/ ...
+.PP
+\&\fB8.9.3 `\-d' \s-1DUMPSETS\s0\fR
+.PP
+This specifies the prefix for the `\fBdumpsets\fR' file.  If it is not
+specified, then the file will not be generated.  The file will be for
+the destination machine and will be placed into a filename `\fBdumpsets\fR',
+prefixed by this string.  The `\fBdumpsets\fR' file is for use by Imperial
+College's local backup system.
+.PP
+For example, to create a `\fBdumpsets\fR' file in the directory `\fBgeneric\fR',
+then you would use the following:
+.PP
+fsinfo \-d generic/ ...
+.PP
+\&\fB8.9.4 `\-e' \s-1EXPORTFS\s0\fR
+.PP
+Defines the prefix for the `\fBexports\fR' files.  If it is not given, then
+the file will not be generated.  For each machine defined in the
+configuration files as having disks, an `\fBexports\fR' file is constructed
+and given a filename determined by the name of the machine, prefixed
+with this string.  If a machine is defined as diskless, then no
+`\fBexports\fR' file will be created for it.  The files contain entries for
+directories on the machine that may be exported to clients.
+.PP
+Example: To create the `\fBexports\fR' files for each diskfull machine and
+place them into the directory `\fBexports\fR':
+.PP
+fsinfo \-e exports/ ...
+.PP
+\&\fB8.9.5 `\-f' \s-1FSTAB\s0\fR
+.PP
+This defines the prefix for the `\fBfstab\fR' files.  The files will only be
+created if this prefix is defined.  For each machine defined in the
+configuration files, a `\fBfstab\fR' file is created with the filename
+determined by prefixing this string with the name of the machine.  These
+files contain entries for filesystems and partitions to mount at boot
+time.
+.PP
+Example, to create the files in the directory `\fBfstabs\fR':
+.PP
+fsinfo \-f fstabs/ ...
+.PP
+\&\fB8.9.6 `\-h' \s-1HOSTNAME\s0\fR
+.PP
+Defines the hostname of the destination machine to process for.  If this
+is not specified, it defaults to the local machine name, as returned by
+\&\fIgethostname\fR\|(2).
+.PP
+Example:
+.PP
+fsinfo \-h dylan.doc.ic.ac.uk ...
+.PP
+\&\fB8.9.7 `\-m' MOUNT-MAPS\fR
+.PP
+Defines the prefix for the automounter files.  The maps will only be
+produced if this prefix is defined.  The mount maps suitable for the
+network defined by the configuration files will be placed into files
+with names calculated by prefixing this string to the name of each map.
+.PP
+For example, to create the automounter maps and place them in the
+directory `\fBautomaps\fR':
+.PP
+fsinfo \-m automaps/ ...
+.PP
+\&\fB8.9.8 `\-q'\fR
+.PP
+Selects quiet mode.  FSinfo suppress the \*(L"running commentary\*(R" and only
+outputs any error messages which are generated.
+.PP
+\&\fB8.9.9 `\-v'\fR
+.PP
+Selects verbose mode.  When this is activated, the program will display
+more messages, and display all the information discovered when
+performing the semantic analysis phase.  Each verbose message is output
+to `\fBstdout\fR' on a line starting with a `\fB#\fR' character.
+.PP
+\&\fB8.9.10 `\-D' NAME[=DEFN]\fR
+.PP
+Defines a symbol \*(L"name\*(R" for the preprocessor when reading the
+configuration files.  Equivalent to `\fB#define\fR' directive.
+.PP
+\&\fB8.9.11 `\-I' \s-1DIRECTORY\s0\fR
+.PP
+This option is passed into the preprocessor for the configuration files.
+It specifies directories in which to find include files
+.PP
+\&\fB8.9.12 `\-U' \s-1NAME\s0\fR
+.PP
+Removes any initial definition of the symbol \*(L"name\*(R".  Inverse of the
+`\fB\-D\fR' option.
+.PP
+\&\fB8.10 Errors produced by FSinfo\fR
+.PP
+The following table documents the errors and warnings which FSinfo may
+produce.
+.PP
+" expected
+Occurs if an unescaped newline is found in a quoted string.
+.PP
+ambiguous mount: \s-1VOLUME\s0 is a replicated filesystem
+If several filesystems are declared as having the same volume
+name, they will be considered replicated filesystems.  To mount a
+replicated filesystem statically, a specific host will need to be
+named, to say which particular copy to try and mount, else this
+error will result.
+.PP
+can't open \s-1FILENAME\s0 for writing
+Occurs if any errors are encountered when opening an output file.
+.PP
+cannot determine localname since volname \s-1VOLUME\s0 is not uniquely defined
+If a volume is replicated and an attempt is made to mount the
+filesystem statically without specifying a local mountpoint,
+FSinfo cannot calculate a mountpoint, as the desired pathname
+would be ambiguous.
+.PP
+\&\s-1DEVICE\s0 has duplicate exportfs data
+Produced if the `\fBexportfs\fR' option is used multiple times within the
+same branch of a filesystem definition. For example, if you
+attempt to set the `\fBexportfs\fR' data at different levels of the
+mountpoint directory tree.
+.PP
+dump frequency for \s-1HOST:DEVICE\s0 is non-zero
+Occurs if \s-1DEVICE\s0 has its `\fBfstype\fR' declared to be `\fBswap\fR' or
+`\fBexport\fR' and the `\fBdump\fR' option is set to a value greater than
+zero.  Swap devices should not be dumped.
+.PP
+duplicate host \s-1HOSTNAME\s0!
+If a host has more than one definition.
+.PP
+end of file within comment
+A comment was unterminated before the end of one of the
+configuration files.
+.PP
+\&\s-1FILENAME:\s0 cannot open for reading
+If a file specified on the command line as containing
+configuration data could not be opened.
+.PP
+\&\s-1FILESYSTEM\s0 has a volname but no exportfs data
+Occurs when a volume name is declared for a file system, but the
+string specifying what machines the filesystem can be exported to
+is missing.
+.PP
+fs field \*(L"FIELD-NAME\*(R" already set
+Occurs when multiple definitions are given for one of the
+attributes of a host's filesystem.
+.PP
+host field \*(L"FIELD-NAME\*(R" already set
+If duplicate definitions are given for any of the fields with a
+host definition.
+.PP
+\&\s-1HOST:DEVICE\s0 has more than one mount point
+Occurs if the mount option for a host's filesystem specifies
+multiple trees at which to place the mountpoint.
+.PP
+\&\s-1HOST:DEVICE\s0 has no mount point
+Occurs if the `\fBmount\fR' option is not specified for a host's
+filesystem.
+.PP
+\&\s-1HOST:DEVICE\s0 needs field \*(L"FIELD-NAME\*(R"
+Occurs when a filesystem is missing a required field. FIELD-NAME
+could be one of `\fBfstype\fR', `\fBopts\fR', `\fBpassno\fR' or `\fBmount\fR'.
+.PP
+HOST:mount field specified for swap partition
+Occurs if a mountpoint is given for a filesystem whose type is
+declared to be `\fBswap\fR'.
+.PP
+malformed \s-1IP\s0 dotted quad: \s-1ADDRESS\s0
+If the Internet address of an interface is incorrectly specified.
+An Internet address definition is handled to inet_addr(3N) to see
+if it can cope.  If not, then this message will be displayed.
+.PP
+malformed netmask: \s-1NETMASK\s0
+If the netmask cannot be decoded as though it were a hexadecimal
+number, then this message will be displayed.  It will typically be
+caused by incorrect characters in the \s-1NETMASK\s0 value.
+.PP
+mount field \*(L"FIELD-NAME\*(R" already set
+Occurs when a static mount has multiple definitions of the same
+field.
+.PP
+mount tree field \*(L"FIELD-NAME\*(R" already set
+Occurs when the FIELD-NAME is defined more than once during the
+definition of a filesystems mountpoint.
+.PP
+netif field FIELD-NAME already set
+Occurs if you attempt to define an attribute of an interface more
+than once.
+.PP
+network booting requires both root and swap areas
+Occurs if a machine has mount declarations for either the root
+partition or the swap area, but not both.  You cannot define a
+machine to only partially boot via the network.
+.PP
+no disk mounts on \s-1HOSTNAME\s0
+If there are no static mounts, nor local disk mounts specified for
+a machine, this message will be displayed.
+.PP
+no volname given for \s-1HOST:DEVICE\s0
+Occurs when a filesystem is defined to be mounted on `\fBdefault\fR', but
+no volume name is given for the file system, then the mountpoint
+cannot be determined.
+.PP
+not allowed '/' in a directory name
+Occurs when a pathname with multiple directory elements is
+specified as the name for an automounter tree.  A tree should only
+have one name at each level.
+.PP
+pass number for \s-1HOST:DEVICE\s0 is non-zero
+Occurs if \s-1DEVICE\s0 has its `\fBfstype\fR' declared to be `\fBswap\fR' or
+`\fBexport\fR' and the \fIfsck\fR\|(8) pass number is set. Swap devices should
+not be fsck'd.  see \*(L"FSinfo filesystems fstype\*(R".
+.PP
+sub-directory \s-1DIRECTORY\s0 of DIRECTORY-TREE starts with '/'
+Within the filesystem specification for a host, if an element
+\&\s-1DIRECTORY\s0 of the mountpoint begins with a `\fB/\fR' and it is not the
+start of the tree.
+.PP
+sub-directory of DIRECTORY-TREE is named \*(L"default\*(R"
+`\fBdefault\fR' is a keyword used to specify if a mountpoint should be
+automatically calculated by FSinfo.  If you attempt to specify a
+directory name as this, it will use the filename of `\fBdefault\fR' but
+will produce this warning.
+.PP
+unknown \e sequence
+Occurs if an unknown escape sequence is found inside a string.
+Within a string, you can give the standard C escape sequences for
+strings, such as newlines and tab characters.
+.PP
+unknown directory attribute
+If an unknown keyword is found while reading the definition of a
+host's filesystem mount option.
+.PP
+unknown filesystem attribute
+Occurs if an unrecognized keyword is used when defining a host's
+filesystems.
+.PP
+unknown host attribute
+Occurs if an unrecognized keyword is used when defining a host.
+.PP
+unknown mount attribute
+Occurs if an unrecognized keyword is found while parsing the list
+of static mounts.
+.PP
+unknown volname \s-1VOLUME\s0 automounted [ on name ]
+Occurs if \s-1VOLUME\s0 is used in a definition of an automount map but
+the volume name has not been declared during the host filesystem
+definitions.
+.PP
+volname \s-1VOLUME\s0 is unknown
+Occurs if an attempt is made to mount or reference a volume name
+which has not been declared during the host filesystem definitions.
+.PP
+volname \s-1VOLUME\s0 not exported from \s-1MACHINE\s0
+Occurs if you attempt to mount the volume \s-1VOLUME\s0 from a machine
+which has not declared itself to have such a filesystem available.
+.SS "9 Hlfsd"
+.IX Subsection "9 Hlfsd"
+Hlfsd is a daemon which implements a filesystem containing a symbolic
+link to subdirectory within a user's home directory, depending on the
+user which accessed that link.  It was primarily designed to redirect
+incoming mail to users' home directories, so that it can be read from
+anywhere.  It was designed and implemented by Erez Zadok
+<ezk@cs.columbia.edu> and Alexander Dupuy <dupuy@cs.columbia.edu>, at
+the Computer Science Department (http://www.cs.columbia.edu/) of
+Columbia University (http://www.columbia.edu/).  A paper
+(http://www.cs.columbia.edu/~ezk/research/hlfsd/hlfsd.html) on Hlfsd
+was presented at the Usenix \s-1LISA VII\s0 conference in 1993.
+.PP
+Hlfsd operates by mounting itself as an \s-1NFS\s0 server for the directory
+containing linkname, which defaults to `\fB/hlfs/home\fR'.  Lookups within
+that directory are handled by Hlfsd, which uses the password map to
+determine how to resolve the lookup.  The directory will be created if
+it doesn't already exist.  The symbolic link will be to the accessing
+user's home directory, with subdir appended to it.  If not specified,
+subdir defaults to `\fB.hlfsdir\fR'.  This directory will also be created if
+it does not already exist.
+.PP
+A `\fB\s-1SIGTERM\s0\fR' sent to Hlfsd will cause it to shutdown.  A `\fB\s-1SIGHUP\s0\fR'
+will flush the internal caches, and reload the password map.  It will
+also close and reopen the log file, to enable the original log file to
+be removed or rotated.  A `\fB\s-1SIGUSR1\s0\fR' will cause it to dump its internal
+table of user IDs and home directories to the file `\fB/tmp/hlfsddump\fR'.
+.PP
+* Menu:
+.PP
+See also \*(L"Introduction to Hlfsd\*(R"
+.PP
+See also \*(L"Background to Mail Delivery\*(R"
+.PP
+See also \*(L"Using Hlfsd\*(R"
+.PP
+\&\fB9.1 Introduction to Hlfsd\fR
+.PP
+Electronic mail has become one of the major applications for many
+computer networks, and use of this service is expected to increase over
+time, as networks proliferate and become faster.  Providing a convenient
+environment for users to read, compose, and send electronic mail has
+become a requirement for systems administrators (SAs).
+.PP
+Widely used methods for handling mail usually require users to be
+logged into a designated \*(L"home\*(R" machine, where their mailbox files
+reside.  Only on that one machine can they read newly arrived mail.
+Since users have to be logged into that system to read their mail, they
+often find it convenient to run all of their other processes on that
+system as well, including memory and CPU-intensive jobs.  For example,
+in our department, we have allocated and configured several
+multi-processor servers to handle such demanding CPU/memory
+applications, but these were underutilized, in large part due to the
+inconvenience of not being able to read mail on those machines.  (No
+home directories were located on these designated CPU-servers, since we
+did not want \s-1NFS\s0 service for users' home directories to have to compete
+with CPU-intensive jobs.  At the same time, we discouraged users from
+running demanding applications on their home machines.)
+.PP
+Many different solutions have been proposed to allow users to read
+their mail on any host.  However, all of these solutions fail in one or
+more of several ways:
+.PP
+* they introduce new single points of failure
+.PP
+* they require using different mail transfer agents (MTAs) or user
+agents (UAs)
+.PP
+* they do not solve the problem for all cases, i.e.  the solution is
+only partially successful for a particular environment.
+.PP
+We have designed a simple filesystem, called the \*(L"Home-Link File
+System\*(R", to provide the ability to deliver mail to users' home
+directories, without modification to mail-related applications. We have
+endeavored to make it as stable as possible.  Of great importance to us
+was to make sure the \s-1HLFS\s0 daemon, `\fBhlfsd\fR' , would not hang under any
+circumstances, and would take the next-best action when faced with
+problems.  Compared to alternative methods, Hlfsd is a stable, more
+general solution, and easier to install/use.  In fact, in some ways, we
+have even managed to improve the reliability and security of mail
+service.
+.PP
+Our server implements a small filesystem containing a symbolic link
+to a subdirectory of the invoking user's home directory, and named
+symbolic links to users' mailbox files.
+.PP
+The Hlfsd server finds out the \s-1UID\s0 of the process that is accessing
+its mount point, and resolves the pathname component `\fBhome\fR' as a
+symbolic link to a subdirectory within the home directory given by the
+\&\s-1UID\s0's entry in the password file.  If the \s-1GID\s0 of the process that
+attempts to access a mailbox file is a special one (called \s-1HLFS_GID\s0),
+then the server maps the name of the _next_ pathname component directly
+to the user's mailbox.  This is necessary so that access to a mailbox
+file by users other than the owner can succeed.  The server has safety
+features in case of failures such as hung filesystems or home directory
+filesystems that are inaccessible or full.
+.PP
+On most of our machines, mail gets delivered to the directory
+`\fB/var/spool/mail\fR'. Many programs, including UAs, depend on that path.
+Hlfsd creates a directory `\fB/mail\fR', and mounts itself on top of that
+directory.  Hlfsd implements the path name component called `\fBhome\fR',
+pointing to a subdirectory of the user's home directory.  We have made
+`\fB/var/spool/mail\fR' a symbolic link to `\fB/mail/home\fR', so that accessing
+`\fB/var/spool/mail\fR' actually causes access to a subdirectory within a
+user's home directory.
+.PP
+The following table shows an example of how resolving the pathname
+`\fB/var/mail/NAME\fR' to `\fB/users/ezk/.mailspool/NAME\fR' proceeds.
+.PP
+Resolving Component   Pathname left to resolve   Value if symbolic link
+/                     var/mail/NAME
+var/                  mail/NAME
+mail@                 /mail/home/NAME            mail@ \-> /mail/home
+/                     mail/home/NAME
+mail/                 home/NAME
+home@                 \s-1NAME                      \s0 home@ \->
+/users/ezk/.mailspool
+/                     users/ezk/.mailspool/NAME
+users/                ezk/.mailspool/NAME
+ezk/                  .mailspool/NAME
+\&.mailspool/           \s-1NAME
+NAME\s0
+.PP
+\&\fB9.2 Background to Mail Delivery\fR
+.PP
+This section provides an in-depth discussion of why available methods
+for delivering mail to home directories are not as good as the one used
+by Hlfsd.
+.PP
+* Menu:
+.PP
+See also \*(L"Single-Host Mail Spool Directory\*(R"
+.PP
+See also \*(L"Centralized Mail Spool Directory\*(R"
+.PP
+See also \*(L"Distributed Mail Spool Service\*(R"
+.PP
+See also \*(L"Why Deliver Into the Home Directory?\*(R"
+.PP
+\&\fB9.2.1 Single-Host Mail Spool Directory\fR
+.PP
+The most common method for mail delivery is for mail to be appended to a
+mailbox file in a standard spool directory on the designated \*(L"mail
+home\*(R" machine of the user. The greatest advantage of this method is
+that it is the default method most vendors provide with their systems,
+thus very little (if any) configuration is required on the \s-1SA\s0's part.
+All they need to set up are mail aliases directing mail to the host on
+which the user's mailbox file is assigned.  (Otherwise, mail is
+delivered locally, and users find mailboxes on many machines.)
+.PP
+As users become more sophisticated, and aided by windowing systems,
+they find themselves logging in on multiple hosts at once, performing
+several tasks concurrently.  They ask to be able to read their mail on
+any host on the network, not just the one designated as their \*(L"mail
+home\*(R".
+.PP
+\&\fB9.2.2 Centralized Mail Spool Directory\fR
+.PP
+A popular method for providing mail readability from any host is to have
+all mail delivered to a mail spool directory on a designated
+\&\*(L"mail-server\*(R" which is exported via \s-1NFS\s0 to all of the hosts on the
+network.  Configuring such a system is relatively easy.  On most
+systems, the bulk of the work is a one-time addition to one or two
+configuration files in `\fB/etc\fR'.  The file-server's spool directory is
+then hard-mounted across every machine on the local network.  In small
+environments with only a handful of hosts this can be an acceptable
+solution.  In our department, with a couple of hundred active hosts and
+thousands of mail messages processed daily, this was deemed completely
+unacceptable, as it introduced several types of problems:
+.PP
+Scalability and Performance
+As more and more machines get added to the network, more mail
+traffic has to go over \s-1NFS\s0 to and from the mail-server. Users like
+to run mail-watchers, and read their mail often. The stress on the
+shared infrastructure increases with every user and host added;
+loads on the mail server would most certainly be high since all
+mail delivery goes through that one \fImachine.\fR\|(1)  This leads to
+lower reliability and performance.  To reduce the number of
+concurrent connections between clients and the server host, some
+SAs have resorted to automounting the mail-spool directory.  But
+this solution only makes things worse: since users often run mail
+watchers, and many popular applications such as `\fBtrn\fR', `\fBemacs\fR',
+`\fBcsh\fR' or `\fBksh\fR' check periodically for new mail, the automounted
+directory would be effectively permanently mounted.  If it gets
+unmounted automatically by the automounter program, it is most
+likely to get mounted shortly afterwards, consuming more I/O
+resources by the constant cycle of mount and umount calls.
+.PP
+Reliability
+The mail-server host and its network connectivity must be very
+reliable.  Worse, since the spool directory has to be
+hard\-mounted,(2) many processes which access the spool directory
+(various shells, `\fBlogin\fR', `\fBemacs\fR', etc.)  would be hung as long as
+connectivity to the mail-server is severed. To improve
+reliability, SAs may choose to backup the mail-server's spool
+partition several times a day.  This may make things worse since
+reading or delivering mail while backups are in progress may cause
+backups to be inconsistent; more backups consume more backup-media
+resources, and increase the load on the mail-server host.
+.PP
+\&\-\-\-\-\-\-\-\-\-\- Footnotes \-\-\-\-\-\-\-\-\-\-
+.PP
+(1)  Delivery via NFS-mounted filesystems may require usage of
+`\fBrpc.lockd\fR' and `\fBrpc.statd\fR' to provide distributed file-locking, both
+of which are widely regarded as unstable and unreliable.  Furthermore,
+this will degrade performance, as local processes as well as remote
+`\fBnfsd\fR' processes are kept busy.
+.PP
+(2) No \s-1SA\s0 in their right minds would soft-mount read/write
+partitions \*(-- the chances for data loss are too great.
+.PP
+\&\fB9.2.3 Distributed Mail Spool Service\fR
+.PP
+Despite the existence of a few systems that support delivery to users'
+home directories, mail delivery to home directories hasn't caught on.
+We believe the main reason is that there are too many programs that
+\&\*(L"know\*(R" where mailbox files reside.  Besides the obvious (the delivery
+program `\fB/bin/mail\fR' and mail readers like `\fB/usr/ucb/Mail\fR', `\fBmush\fR',
+`\fBmm\fR', etc.), other programs that know mailbox location are login, from,
+almost every shell, `\fBxbiff\fR', `\fBxmailbox\fR', and even some programs not
+directly related to mail, such as `\fBemacs\fR' and `\fBtrn\fR'.  Although some of
+these programs can be configured to look in different directories with
+the use of environment variables and other resources, many of them
+cannot.  The overall porting work is significant.
+.PP
+Other methods that have yet to catch on require the use of a special
+mail-reading server, such as \s-1IMAP\s0 or \s-1POP. \s0 The main disadvantage of
+these systems is that UAs need to be modified to use these services \*(--
+a long and involved task.  That is why they are not popular at this
+time.
+.PP
+Several other ideas have been proposed and even used in various
+environments.  None of them is robust.  They are mostly very
+specialized, inflexible, and do not extend to the general case.  Some of
+the ideas are plain bad, potentially leading to lost or corrupt mail:
+.PP
+automounters
+Using an automounter such as Amd to provide a set of symbolic links
+from the normal spool directory to user home directories is not
+sufficient.  UAs rename, unlink, and recreate the mailbox as a
+regular file, therefore it must be a real file, not a symbolic
+link.  Furthermore, it must reside in a real directory which is
+writable by the UAs and MTAs.  This method may also require
+populating `\fB/var/spool/mail\fR' with symbolic links and making sure
+they are updated.  Making Amd manage that directory directly
+fails, since many various lock files need to be managed as well.
+Also, Amd does not provide all of the \s-1NFS\s0 operations which are
+required to write mail such as write, create, remove, and unlink.
+.PP
+`\fB\f(CB$MAIL\fB\fR'
+Setting this variable to an automounted directory pointing to the
+user's mail spool host only solves the problem for those programs
+which know and use `\fB\f(CB$MAIL\fB\fR'.  Many programs don't, therefore this
+solution is partial and of limited flexibility.  Also, it requires
+the SAs or the users to set it themselves \*(-- an added level of
+inconvenience and possible failures.
+.PP
+/bin/mail
+Using a different mail delivery agent could be the solution.  One
+such example is `\fBhdmail\fR'.  However, `\fBhdmail\fR' still requires
+modifying all UAs, the \s-1MTA\s0's configuration, installing new
+daemons, and changing login scripts.  This makes the system less
+upgradable or compatible with others, and adds one more
+complicated system for SAs to deal with.  It is not a complete
+solution because it still requires each user have their `\fB\f(CB$MAIL\fB\fR'
+variable setup correctly, and that every program use this variable.
+.PP
+\&\fB9.2.4 Why Deliver Into the Home Directory?\fR
+.PP
+There are several major reasons why SAs might want to deliver mail
+directly into the users' home directories:
+.PP
+Location
+Many mail readers need to move mail from the spool directory to the
+user's home directory.  It speeds up this operation if the two are
+on the same filesystem.  If for some reason the user's home
+directory is inaccessible, it isn't that useful to be able to read
+mail, since there is no place to move it to.  In some cases,
+trying to move mail to a non-existent or hung filesystem may
+result in mail loss.
+.PP
+Distribution
+Having all mail spool directories spread among the many more
+filesystems minimizes the chances that complete environments will
+grind to a halt when a single server is down.  It does increase
+the chance that there will be someone who is not able to read
+their mail when a machine is down, but that is usually preferred
+to having no one be able to read their mail because a centralized
+mail server is down.  The problem of losing some mail due to the
+(presumably) higher chances that a user's machine is down is
+minimized in \s-1HLFS.\s0
+.PP
+Security
+Delivering mail to users' home directories has another advantage \*(--
+enhanced security and privacy.  Since a shared system mail spool
+directory has to be world-readable and searchable, any user can see
+whether other users have mail, when they last received new mail,
+or when they last read their mail.  Programs such as `\fBfinger\fR'
+display this information, which some consider an infringement of
+privacy.  While it is possible to disable this feature of `\fBfinger\fR'
+so that remote users cannot see a mailbox file's status, this
+doesn't prevent local users from getting the information.
+Furthermore, there are more programs which make use of this
+information.  In shared environments, disabling such programs has
+to be done on a system-wide basis, but with mail delivered to
+users' home directories, users less concerned with privacy who do
+want to let others know when they last received or read mail can
+easily do so using file protection bits.
+.PP
+In summary, delivering mail to home directories provides users the
+functionality sought, and also avoids most of the problems just
+discussed.
+.PP
+\&\fB9.3 Using Hlfsd\fR
+.PP
+* Menu:
+.PP
+See also \*(L"Controlling Hlfsd\*(R"
+.PP
+See also \*(L"Hlfsd Options\*(R"
+.PP
+See also \*(L"Hlfsd Files\*(R"
+.PP
+\&\fB9.3.1 Controlling Hlfsd\fR
+.PP
+Much the same way Amd is controlled by `\fBctl-amd\fR', so does Hlfsd get
+controlled by the `\fBctl-hlfsd\fR' script:
+.PP
+ctl-hlfsd start
+Start a new Hlfsd.
+.PP
+ctl-hlfsd stop
+Stop a running Hlfsd.
+.PP
+ctl-hlfsd restart
+Stop a running Hlfsd, wait for 10 seconds, and then start a new
+one.  It is hoped that within 10 seconds, the previously running
+Hlfsd terminate properly; otherwise, starting a second one could
+cause system lockup.
+.PP
+For example, on our systems, we start Hlfsd within `\fBctl-hlfsd\fR' as
+follows on Solaris 2 systems:
+.PP
+hlfsd \-a /var/alt_mail \-x all \-l /var/log/hlfsd /mail/home .mailspool
+.PP
+The directory `\fB/var/alt_mail\fR' is a directory in the root partition
+where alternate mail will be delivered into, when it cannot be delivered
+into the user's home directory.
+.PP
+Normal mail gets delivered into `\fB/var/mail\fR', but on our systems,
+that is a symbolic link to `\fB/mail/home\fR'.  `\fB/mail\fR' is managed by Hlfsd,
+which creates a dynamic symlink named `\fBhome\fR', pointing to the
+subdirectory `\fB.mailspool\fR' _within_ the accessing user's home directory.
+This results in mail which normally should go to `/var/mail/`\fB\f(CB$USER\fB\fR'',
+to go to ``\fB\f(CB$HOME\fB\fR'/.mailspool/`\fB\f(CB$USER\fB\fR''.
+.PP
+Hlfsd does not create the `\fB/var/mail\fR' symlink.  This needs to be
+created (manually) once on each host, by the system administrators, as
+follows:
+.PP
+mv /var/mail /var/alt_mail
+ln \-s /mail/home /var/mail
+.PP
+\&\fB9.3.2 Hlfsd Options\fR
+.PP
+\&\-a \s-1ALT_DIR\s0
+Alternate directory.  The name of the directory to which the
+symbolic link returned by Hlfsd will point, if it cannot access
+the home directory of the user.  This defaults to `\fB/var/hlfs\fR'.
+This directory will be created if it doesn't exist.  It is
+expected that either users will read these files, or the system
+administrators will run a script to resend this \*(L"lost mail\*(R" to its
+owner.
+.PP
+\&\-c CACHE-INTERVAL
+Caching interval.  Hlfsd will cache the validity of home
+directories for this interval, in seconds.  Entries which have
+been verified within the last CACHE-INTERVAL seconds will not be
+verified again, since the operation could be expensive, and the
+entries are most likely still valid.  After the interval has
+expired, Hlfsd will re-verify the validity of the user's home
+directory, and reset the cache time-counter.  The default value
+for CACHE-INTERVAL is 300 seconds (5 minutes).
+.PP
+\&\-f
+Force fast startup.  This option tells Hlfsd to skip startup-time
+consistency checks such as existence of mount directory, alternate
+spool directory, symlink to be hidden under the mount directory,
+their permissions and validity.
+.PP
+\&\-g \s-1GROUP\s0
+Set the special group \s-1HLFS_GID\s0 to \s-1GROUP. \s0 Programs such as
+`\fB/usr/ucb/from\fR' or `\fB/usr/sbin/in.comsat\fR', which access the
+mailboxes of other users, must be setgid `\fB\s-1HLFS_GID\s0\fR' to work
+properly.  The default group is `\fBhlfs\fR'.  If no group is provided,
+and there is no group `\fBhlfs\fR', this feature is disabled.
+.PP
+\&\-h
+Help.  Print a brief help message, and exit.
+.PP
+\&\-i RELOAD-INTERVAL
+Map-reloading interval.  Each RELOAD-INTERVAL seconds, Hlfsd will
+reload the password map.  Hlfsd needs the password map for the
+UIDs and home directory pathnames.  Hlfsd schedules a `\fB\s-1SIGALRM\s0\fR' to
+reload the password maps.  A `\fB\s-1SIGHUP\s0\fR' sent to Hlfsd will force it
+to reload the maps immediately.  The default value for
+RELOAD-INTERVAL is 900 seconds (15 minutes.)
+.PP
+\&\-l \s-1LOGFILE\s0
+Specify a log file to which Hlfsd will record events.  If \s-1LOGFILE\s0
+is the string `\fBsyslog\fR' then the log messages will be sent to the
+system log daemon by \fIsyslog\fR\|(3), using the `\fB\s-1LOG_DAEMON\s0\fR' facility.
+This is also the default.
+.PP
+\&\-n
+No verify.  Hlfsd will not verify the validity of the symbolic link
+it will be returning, or that the user's home directory contains
+sufficient disk-space for spooling.  This can speed up Hlfsd at the
+cost of possibly returning symbolic links to home directories
+which are not currently accessible or are full.  By default, Hlfsd
+validates the symbolic-link in the background.  The `\fB\-n\fR' option
+overrides the meaning of the `\fB\-c\fR' option, since no caching is
+necessary.
+.PP
+\&\-o MOUNT-OPTIONS
+Mount options which Hlfsd will use to mount itself on top of
+\&\s-1DIRNAME. \s0 By default, MOUNT-OPTIONS is set to `\fBro\fR'.  If the system
+supports symbolic-link caching, default options are set to
+`\fBro,nocache\fR'.
+.PP
+\&\-p
+Print \s-1PID. \s0 Outputs the process-id of Hlfsd to standard output
+where it can be saved into a file.
+.PP
+\&\-v
+Version.  Displays version information to standard error.
+.PP
+\&\-x LOG-OPTIONS
+Specify run-time logging options.  The options are a comma
+separated list chosen from: `\fBfatal\fR', `\fBerror\fR', `\fBuser\fR', `\fBwarn\fR',
+`\fBinfo\fR', `\fBmap\fR', `\fBstats\fR', `\fBall\fR'.
+.PP
+\&\-C
+Force Hlfsd to run on systems that cannot turn off the \s-1NFS\s0
+attribute-cache.  Use of this option on those systems is
+discouraged, as it may result in loss or misdelivery of mail.  The
+option is ignored on systems that can turn off the attribute-cache.
+.PP
+\&\-D LOG-OPTIONS
+Select from a variety of debugging options.  Prefixing an option
+with the string `\fBno\fR' reverses the effect of that option.  Options
+are cumulative.  The most useful option is `\fBall\fR'.  Since this
+option is only used for debugging other options are not documented
+here.  A fuller description is available in the program source.  A
+`\fB\s-1SIGUSR1\s0\fR' sent to Hlfsd will cause it to dump its internal
+password map to the file `\fB/usr/tmp/hlfsd.dump.XXXXXX\fR', where
+`\fB\s-1XXXXXX\s0\fR' will be replaced by a random string generated by
+\&\fImktemp\fR\|(3) or (the more secure) \fImkstemp\fR\|(3).
+.PP
+\&\-P PASSWORD-FILE
+Read the user-name, user-id, and home directory information from
+the file PASSWORD-FILE.  Normally, Hlfsd will use \fIgetpwent\fR\|(3) to
+read the password database.  This option allows you to override the
+default database, and is useful if you want to map users' mail
+files to a directory other than their home directory.  Only the
+username, uid, and home-directory fields of the file PASSWORD-FILE
+are read and checked.  All other fields are ignored.  The file
+PASSWORD-FILE must otherwise be compliant with Unix Version 7
+colon-delimited format \fIpasswd\fR\|(4).
+.PP
+\&\fB9.3.3 Hlfsd Files\fR
+.PP
+The following files are used by Hlfsd:
+.PP
+`\fB/hlfs\fR'
+directory under which Hlfsd mounts itself and manages the symbolic
+link `\fBhome\fR'.
+.PP
+`\fB.hlfsdir\fR'
+default sub-directory in the user's home directory, to which the
+`\fBhome\fR' symbolic link returned by Hlfsd points.
+.PP
+`\fB/var/hlfs\fR'
+directory to which `\fBhome\fR' symbolic link returned by Hlfsd points
+if it is unable to verify the that user's home directory is
+accessible.
+.PP
+For discussion on other files used by Hlfsd, see *Note
+lostaltmail::, and see \*(L"lostaltmail.conf\-sample\*(R".
+.SS "10 Assorted Tools"
+.IX Subsection "10 Assorted Tools"
+The following are additional utilities and scripts included with
+am-utils, and get installed.
+.PP
+* Menu:
+.PP
+See also \*(L"am-eject\*(R"
+.PP
+See also \*(L"amd.conf\-sample\*(R"
+.PP
+See also \*(L"amd2ldif\*(R"
+.PP
+See also \*(L"amd2sun\*(R"
+.PP
+See also \*(L"automount2amd\*(R"
+.PP
+See also \*(L"ctl-amd\*(R"
+.PP
+See also \*(L"ctl-hlfsd\*(R"
+.PP
+See also \*(L"expn\*(R"
+.PP
+See also \*(L"fix-amd-map\*(R"
+.PP
+See also \*(L"fixmount\*(R"
+.PP
+See also \*(L"fixrmtab\*(R"
+.PP
+See also \*(L"lostaltmail\*(R"
+.PP
+See also \*(L"lostaltmail.conf\-sample\*(R"
+.PP
+See also \*(L"mk-amd-map\*(R"
+.PP
+See also \*(L"pawd\*(R"
+.PP
+See also \*(L"wait4amd\*(R"
+.PP
+See also \*(L"wait4amd2die\*(R"
+.PP
+See also \*(L"wire-test\*(R"
+.PP
+\&\fB10.1 am-eject\fR
+.PP
+A shell script unmounts a floppy or CD-ROM that is automounted, and
+then attempts to eject the removable device.
+.PP
+\&\fB10.2 amd.conf\-sample\fR
+.PP
+A sample Amd configuration file. see \*(L"Amd Configuration File\*(R".
+.PP
+\&\fB10.3 amd2ldif\fR
+.PP
+A script to convert Amd maps to \s-1LDAP\s0 input files.  Use it as follows:
+.PP
+amd2ldif mapname base < amd.mapfile > mapfile.ldif
+.PP
+\&\fB10.4 amd2sun\fR
+.PP
+A script to convert Amd maps to Sun Automounter maps.  Use it as follows
+.PP
+amd2sun < amd.mapfile > auto_mapfile
+.PP
+\&\fB10.5 automount2amd\fR
+.PP
+A script to convert old Sun Automounter maps to Amd maps.
+.PP
+Say you have the Sun automount file auto.foo, with these two lines:
+home                  earth:/home
+moon  \-ro,intr        server:/proj/images
+Running
+automount2amd auto.foo > amd.foo
+.PP
+will produce the Amd map amd.foo with this content:
+.PP
+# generated by automount2amd on Sat Aug 14 17:59:32 US/Eastern 1999
+.PP
+/defaults \e\e
+type:=nfs;opts:=rw,grpid,nosuid,utimeout=600
+.PP
+home \e
+host==earth;type:=link;fs:=/home \e\e
+rhost:=earth;rfs:=/home
+.PP
+moon \e
+\&\-addopts:=ro,intr \e\e
+host==server;type:=link;fs:=/proj/images \e\e
+rhost:=server;rfs:=/proj/images
+.PP
+This perl script will use the following /default entry
+type:=nfs;opts:=rw,grpid,nosuid,utimeout=600
+If you wish to override that, define the \f(CW$DEFAULTS\fR environment
+variable, or modify the script.
+.PP
+If you wish to generate Amd maps using the hostd (*note hostd
+Selector Variable::) Amd map syntax, then define the environment
+variable \f(CW$DOMAIN\fR or modify the script.
+.PP
+Note that automount2amd does not understand newer Sun Automount map
+syntax, those used by autofs.
+.PP
+\&\fB10.6 ctl-amd\fR
+.PP
+A script to start, stop, or restart Amd.  Use it as follows:
+.PP
+ctl-amd start
+Start a new Amd process.
+.PP
+ctl-amd stop
+Stop the running Amd.
+.PP
+ctl-amd restart
+Stop the running Amd (if any), safely wait for it to terminate, and
+then start a new process \*(-- only if the previous one died cleanly.
+.PP
+see \*(L"Run-time Administration\*(R", for more details.
+.PP
+\&\fB10.7 ctl-hlfsd\fR
+.PP
+A script for controlling Hlfsd, much the same way `\fBctl-amd\fR' controls
+Amd.  Use it as follows:
+.PP
+ctl-hlfsd start
+Start a new Hlfsd process.
+.PP
+ctl-hlfsd stop
+Stop the running Hlfsd.
+.PP
+ctl-hlfsd restart
+Stop the running Hlfsd (if any), wait for 10 seconds for it to
+terminate, and then start a new process \*(-- only if the previous one
+died cleanly.
+.PP
+see \*(L"Hlfsd\*(R", for more details.
+.PP
+\&\fB10.8 expn\fR
+.PP
+A script to expand email addresses into their full name.  It is
+generally useful when using with the `\fBlostaltmail\fR' script, but is a
+useful tools otherwise.
+.PP
+$ expn \-v ezk@cs.columbia.edu
+ezk@cs.columbia.edu \->
+ezk@shekel.mcl.cs.columbia.edu
+ezk@shekel.mcl.cs.columbia.edu \->
+Erez Zadok <"| /usr/local/mh/lib/slocal \-user ezk || exit 75>
+Erez Zadok <\eezk>
+Erez Zadok </u/zing/ezk/.mailspool/backup>
+.PP
+\&\fB10.9 fix-amd-map\fR
+.PP
+Am-utils changed some of the syntax and default values of some
+variables.  For example, the default value for `\fB${os}\fR' for Solaris 2.x
+(aka SunOS 5.x) systems used to be `\fBsos5\fR', it is now more automatically
+generated from `\fBconfig.guess\fR' and its value is `\fBsunos5\fR'.
+.PP
+This script converts older Amd maps to new ones.  Use it as follows:
+.PP
+fix-amd-map < old.map > new.map
+.PP
+\&\fB10.10 fixmount\fR
+.PP
+`\fBfixmount\fR' is a variant of \fIshowmount\fR\|(8) that can delete bogus mount
+entries in remote \fImountd\fR\|(8) daemons.  This is useful to cleanup
+otherwise ever-accumulating \*(L"junk\*(R".  Use it for example:
+.PP
+fixmount \-r host
+.PP
+See the online manual page for `\fBfixmount\fR' for more details of its
+usage.
+.PP
+\&\fB10.11 fixrmtab\fR
+.PP
+A script to invalidate `\fB/etc/rmtab\fR' entries for hosts named.  Also
+restart mountd for changes to take effect.  Use it for example:
+.PP
+fixrmtab host1 host2 ...
+.PP
+\&\fB10.12 lostaltmail\fR
+.PP
+A script used with Hlfsd to resend any \*(L"lost\*(R" mail.  Hlfsd redirects
+mail which cannot be written into the user's home directory to an
+alternate directory.  This is useful to continue delivering mail, even
+if the user's file system was unavailable, full, or over quota.  But,
+the mail which gets delivered to  the alternate directory needs to be
+resent to its respective users.  This is what the `\fBlostaltmail\fR' script
+does.
+.PP
+Use it as follows:
+.PP
+lostaltmail
+.PP
+This script needs a configuration file `\fBlostaltmail.conf\fR' set up
+with the right parameters to properly work.  see \*(L"Hlfsd\*(R", for more
+details.
+.PP
+\&\fB10.13 lostaltmail.conf\-sample\fR
+.PP
+This is a text file with configuration parameters needed for the
+`\fBlostaltmail\fR' script.  The script includes comments explaining each of
+the configuration variables.  See it for more information.  Also *note
+Hlfsd:: for general information.
+.PP
+\&\fB10.14 mk-amd-map\fR
+.PP
+This program converts a normal Amd map file into an ndbm database with
+the same prefix as the named file.  Use it as follows:
+.PP
+mk-amd-map mapname
+.PP
+\&\fB10.15 pawd\fR
+.PP
+Pawd is used to print the current working directory, adjusted to
+reflect proper paths that can be reused to go through the automounter
+for the shortest possible path.  In particular, the path printed back
+does not include any of Amd's local mount points.  Using them is
+unsafe, because Amd may unmount managed file systems from the mount
+points, and thus including them in paths may not always find the files
+within.
+.PP
+Without any arguments, Pawd will print the automounter adjusted
+current working directory.  With any number of arguments, it will print
+the adjusted path of each one of the arguments.
+.PP
+\&\fB10.16 wait4amd\fR
+.PP
+A script to wait for Amd to start on a particular host before
+performing an arbitrary command.  The command is executed repeatedly,
+with 1 second intervals in between.  You may interrupt the script using
+`\fB^C\fR' (or whatever keyboard sequence your terminal's `\fBintr\fR' function is
+bound to).
+.PP
+Examples:
+.PP
+wait4amd saturn amq \-p \-h saturn
+When Amd is up on host `\fBsaturn\fR', get the process \s-1ID\s0 of that
+running Amd.
+.PP
+wait4amd pluto rlogin pluto
+Remote login to host `\fBpluto\fR' when Amd is up on that host.  It is
+generally necessary to wait for Amd to properly start and
+initialize on a remote host before logging in to it, because
+otherwise user home directories may not be accessible across the
+network.
+.PP
+wait4amd pluto
+A short-hand version of the previous command, since the most useful
+reason for this script is to login to a remote host.  I use it very
+often when testing out new versions of Amd, and need to reboot hung
+hosts.
+.PP
+\&\fB10.17 wait4amd2die\fR
+.PP
+This script is used internally by `\fBctl-amd\fR' when used to restart Amd.
+It waits for Amd to terminate.  If it detected that Amd terminated
+cleanly, this script will return an exist status of zero.  Otherwise,
+it will return a non-zero exit status.
+.PP
+The script tests for Amd's existence once every 5 seconds, six
+times, for a total of 30 seconds.  It will return a zero exist status as
+soon as it detects that Amd dies.
+.PP
+\&\fB10.18 wire-test\fR
+.PP
+A simple program to test if some of the most basic networking functions
+in am-util's library `\fBlibamu\fR' work.  It also tests the combination of
+\&\s-1NFS\s0 protocol and version number that are supported from the current
+host, to a remote one.
+.PP
+For example, in this test a machine which only supports \s-1NFS\s0 Version
+2 is contacting a remote host that can support the same version, but
+using both \s-1UDP\s0 and \s-1TCP. \s0 If no host name is specified, `\fBwire-test\fR' will
+try `\fBlocalhost\fR'.
+.PP
+$ wire-test moisil
+Network name is \*(L"mcl\-lab\-net.cs.columbia.edu\*(R"
+Network number is \*(L"128.59.13\*(R"
+Network name is \*(L"old\-net.cs.columbia.edu\*(R"
+Network number is \*(L"128.59.16\*(R"
+My \s-1IP\s0 address is 0x7f000001.
+\&\s-1NFS\s0 Version and protocol tests to host \*(L"moisil\*(R"...
+testing vers=2, proto=\*(L"udp\*(R" \-> found version 2.
+testing vers=3, proto=\*(L"udp\*(R" \-> failed!
+testing vers=2, proto=\*(L"tcp\*(R" \-> found version 2.
+testing vers=3, proto=\*(L"tcp\*(R" \-> failed!
+.SS "11 Examples"
+.IX Subsection "11 Examples"
+* Menu:
+.PP
+See also \*(L"User Filesystems\*(R"
+.PP
+See also \*(L"Home Directories\*(R"
+.PP
+See also \*(L"Architecture Sharing\*(R"
+.PP
+See also \*(L"Wildcard Names\*(R"
+.PP
+See also \*(L"rwho servers\*(R"
+.PP
+See also \*(L"vol\*(R"\*(L" in \*(R"
+.PP
+See also \*(L"defaults with selectors\*(R"\*(L" in \*(R"
+.PP
+See also \*(L"tftpboot in a chroot-ed environment\*(R"\*(L" in \*(R"
+.PP
+\&\fB11.1 User Filesystems\fR
+.PP
+With more than one fileserver, the directories most frequently
+cross-mounted are those containing user home directories.  A common
+convention used at Imperial College is to mount the user disks under
+/home/machine.
+.PP
+Typically, the `\fB/etc/fstab\fR' file contained a long list of entries
+such as:
+.PP
+machine:/home/machine /home/machine nfs ...
+.PP
+for each fileserver on the network.
+.PP
+There are numerous problems with this system.  The mount list can
+become quite large and some of the machines may be down when a system is
+booted.  When a new fileserver is installed, `\fB/etc/fstab\fR' must be
+updated on every machine, the mount directory created and the filesystem
+mounted.
+.PP
+In many environments most people use the same few workstations, but
+it is convenient to go to a colleague's machine and access your own
+files.  When a server goes down, it can cause a process on a client
+machine to hang.  By minimizing the mounted filesystems to only include
+those actively being used, there is less chance that a filesystem will
+be mounted when a server goes down.
+.PP
+The following is a short extract from a map taken from a research
+fileserver at Imperial College.
+.PP
+Note the entry for `\fBlocalhost\fR' which is used for users such as the
+operator (`\fBopr\fR') who have a home directory on most machine as
+`\fB/home/localhost/opr\fR'.
+.PP
+/defaults       opts:=rw,intr,grpid,nosuid
+charm           host!=${key};type:=nfs;rhost:=${key};rfs:=/home/${key} \e
+host==${key};type:=ufs;dev:=/dev/xd0g
+#
+\&...
+.PP
+#
+localhost       type:=link;fs:=${host}
+\&...
+#
+# dylan has two user disks so have a
+# top directory in which to mount them.
+#
+dylan           type:=auto;fs:=${map};pref:=${key}/
+#
+dylan/dk2       host!=dylan;type:=nfs;rhost:=dylan;rfs:=/home/${key} \e
+host==dylan;type:=ufs;dev:=/dev/dsk/2s0
+#
+dylan/dk5       host!=dylan;type:=nfs;rhost:=dylan;rfs:=/home/${key} \e
+host==dylan;type:=ufs;dev:=/dev/dsk/5s0
+\&...
+#
+toytown         host!=${key};type:=nfs;rhost:=${key};rfs:=/home/${key} \e
+host==${key};type:=ufs;dev:=/dev/xy1g
+\&...
+#
+zebedee         host!=${key};type:=nfs;rhost:=${key};rfs:=/home/${key} \e
+host==${key};type:=ufs;dev:=/dev/dsk/1s0
+#
+# Just for access...
+#
+gould           type:=auto;fs:=${map};pref:=${key}/
+gould/staff     host!=gould;type:=nfs;rhost:=gould;rfs:=/home/${key}
+#
+gummo           host!=${key};type:=nfs;rhost:=${key};rfs:=/home/${key}
+\&...
+.PP
+This map is shared by most of the machines listed so on those
+systems any of the user disks is accessible via a consistent name.  Amd
+is started with the following command
+.PP
+amd /home amd.home
+.PP
+Note that when mounting a remote filesystem, the \*(L"automounted\*(R" mount
+point is referenced, so that the filesystem will be mounted if it is
+not yet (at the time the remote `\fBmountd\fR' obtains the file handle).
+.PP
+\&\fB11.2 Home Directories\fR
+.PP
+One convention for home directories is to locate them in `\fB/homes\fR' so
+user `\fBjsp\fR''s home directory is `\fB/homes/jsp\fR'.  With more than a single
+fileserver it is convenient to spread user files across several
+machines.  All that is required is a mount-map which converts login
+names to an automounted directory.
+.PP
+Such a map might be started by the command:
+.PP
+amd /homes amd.homes
+.PP
+where the map `\fBamd.homes\fR' contained the entries:
+.PP
+/defaults   type:=link   # All the entries are of type:=link
+jsp         fs:=/home/charm/jsp
+njw         fs:=/home/dylan/dk5/njw
+\&...
+phjk        fs:=/home/toytown/ai/phjk
+sjv         fs:=/home/ganymede/sjv
+.PP
+Whenever a login name is accessed in `\fB/homes\fR' a symbolic link
+appears pointing to the real location of that user's home directory.  In
+this example, `\fB/homes/jsp\fR' would appear to be a symbolic link pointing
+to `\fB/home/charm/jsp\fR'.  Of course, `\fB/home\fR' would also be an automount
+point.
+.PP
+This system causes an extra level of symbolic links to be used.
+Although that turns out to be relatively inexpensive, an alternative is
+to directly mount the required filesystems in the `\fB/homes\fR' map.  The
+required map is simple, but long, and its creation is best automated.
+The entry for `\fBjsp\fR' could be:
+.PP
+jsp   \-sublink:=${key};rfs:=/home/charm \e
+host==charm;type:=ufs;dev:=/dev/xd0g \e
+host!=charm;type:=nfs;rhost:=charm
+.PP
+This map can become quite big if it contains a large number of
+entries.  By combining two other features of Amd it can be greatly
+simplified.
+.PP
+First the \s-1UFS\s0 partitions should be mounted under the control of
+`\fB/etc/fstab\fR', taking care that they are mounted in the same place that
+Amd would have automounted them.  In most cases this would be something
+like `\fB/a/\*(L"host\*(R"/home/\*(L"host\*(R"\fR' and `\fB/etc/fstab\fR' on host `\fBcharm\fR' would
+have a line:
+.PP
+/dev/xy0g /a/charm/home/charm 4.2 rw,nosuid,grpid 1 5
+.PP
+The map can then be changed to:
+.PP
+/defaults    type:=nfs;sublink:=${key};opts:=rw,intr,nosuid,grpid
+jsp          rhost:=charm;rfs:=/home/charm
+njw          rhost:=dylan;rfs:=/home/dylan/dk5
+\&...
+phjk         rhost:=toytown;rfs:=/home/toytown;sublink:=ai/${key}
+sjv          rhost:=ganymede;rfs:=/home/ganymede
+.PP
+This map operates as usual on a remote machine (ie `\fB${host}\fR' not
+equal to `\fB${rhost}\fR').  On the machine where the filesystem is stored
+(ie `\fB${host}\fR' equal to `\fB${rhost}\fR'), Amd will construct a local
+filesystem mount point which corresponds to the name of the locally
+mounted \s-1UFS\s0 partition.  If Amd is started with the `\fB\-r\fR' option then
+instead of attempting an \s-1NFS\s0 mount, Amd will simply inherit the \s-1UFS\s0
+mount (see \*(L"Inheritance Filesystem\*(R").  If `\fB\-r\fR' is not used then a
+loopback \s-1NFS\s0 mount will be made.  This type of mount is known to cause
+a deadlock on many systems.
+.PP
+\&\fB11.3 Architecture Sharing\fR
+.PP
+Often a filesystem will be shared by machines of different
+architectures.  Separate trees can be maintained for the executable
+images for each architecture, but it may be more convenient to have a
+shared tree, with distinct subdirectories.
+.PP
+A shared tree might have the following structure on the fileserver
+(called `\fBfserver\fR' in the example):
+.PP
+local/tex
+local/tex/fonts
+local/tex/lib
+local/tex/bin
+local/tex/bin/sun3
+local/tex/bin/sun4
+local/tex/bin/hp9000
+\&...
+.PP
+In this example, the subdirectories of `\fBlocal/tex/bin\fR' should be
+hidden when accessed via the automount point (conventionally `\fB/vol\fR').
+A mount-map for `\fB/vol\fR' to achieve this would look like:
+.PP
+/defaults   sublink:=${/key};rhost:=fserver;type:=link
+tex         type:=auto;fs:=${map};pref:=${key}/
+tex/fonts   host!=fserver;type:=nfs;rfs:=/vol/tex \e
+host==fserver;fs:=/usr/local/tex
+tex/lib     host!=fserver;type:=nfs;rfs:=/vol/tex \e
+host==fserver;fs:=/usr/local/tex
+tex/bin     \-sublink:=${/key}/${arch} \e
+host!=fserver;type:=nfs;rfs:=/vol/tex \e
+host:=fserver;fs:=/usr/local/tex
+.PP
+When `\fB/vol/tex/bin\fR' is referenced, the current machine architecture
+is automatically appended to the path by the `\fB${sublink}\fR' variable.
+This means that users can have `\fB/vol/tex/bin\fR' in their `\fB\s-1PATH\s0\fR' without
+concern for architecture dependencies.
+.PP
+\&\fB11.4 Wildcard Names & Replicated Servers\fR
+.PP
+By using the wildcard facility, Amd can \*(L"overlay\*(R" an existing directory
+with additional entries.  The system files are usually mounted under
+`\fB/usr\fR'.  If instead, Amd is mounted on `\fB/usr\fR', additional names can be
+overlayed to augment or replace names in the \*(L"master\*(R" `\fB/usr\fR'.  A map to
+do this would have the form:
+.PP
+local  type:=auto;fs:=local\-map
+share  type:=auto;fs:=share\-map
+*      \-type:=nfs;rfs:=/export/exec/${arch};sublink:=\*(L"${key}\*(R" \e
+rhost:=fserv1  rhost:=fserv2  rhost:=fserv3
+.PP
+Note that the assignment to `\fB${sublink}\fR' is surrounded by double
+quotes to prevent the incoming key from causing the map to be
+misinterpreted.  This map has the effect of directing any access to
+`\fB/usr/local\fR' or `\fB/usr/share\fR' to another automount point.
+.PP
+In this example, it is assumed that the `\fB/usr\fR' files are replicated
+on three fileservers: `\fBfserv1\fR', `\fBfserv2\fR' and `\fBfserv3\fR'.  For any
+references other than to `\fBlocal\fR' and `\fBshare\fR' one of the servers is used
+and a symbolic link to ${autodir}/${rhost}/export/exec/${arch}/whatever
+is returned once an appropriate filesystem has been mounted.
+.PP
+\&\fB11.5 `rwho' servers\fR
+.PP
+The `\fB/usr/spool/rwho\fR' directory is a good candidate for automounting.
+For efficiency reasons it is best to capture the rwho data on a small
+number of machines and then mount that information onto a large number
+of clients.  The data written into the rwho files is byte order
+dependent so only servers with the correct byte ordering can be used by
+a client:
+.PP
+/defaults         type:=nfs
+usr/spool/rwho    \-byte==little;rfs:=/usr/spool/rwho \e
+rhost:=vaxA  rhost:=vaxB \e
+|| \-rfs:=/usr/spool/rwho \e
+rhost:=sun4  rhost:=hp300
+.PP
+\&\fB11.6 `/vol'\fR
+.PP
+`\fB/vol\fR' is used as a catch-all for volumes which do not have other
+conventional names.
+.PP
+Below is part of the `\fB/vol\fR' map for the domain `\fBdoc.ic.ac.uk\fR'.  The
+`\fBr+d\fR' tree is used for new or experimental software that needs to be
+available everywhere without installing it on all the fileservers.
+Users wishing to try out the new software then simply include
+`\fB/vol/r+d/{bin,ucb}\fR' in their path.
+.PP
+The main tree resides on one host `\fBgould.doc.ic.ac.uk\fR', which has
+different `\fBbin\fR', `\fBetc\fR', `\fBlib\fR' and `\fBucb\fR' sub-directories for each
+machine architecture.  For example, `\fB/vol/r+d/bin\fR' for a Sun\-4 would be
+stored in the sub-directory `\fBbin/sun4\fR' of the filesystem `\fB/usr/r+d\fR'.
+When it was accessed a symbolic link pointing to
+`\fB/a/gould/usr/r+d/bin/sun4\fR' would be returned.
+.PP
+/defaults    type:=nfs;opts:=rw,grpid,nosuid,intr,soft
+wp           \-opts:=rw,grpid,nosuid;rhost:=charm \e
+host==charm;type:=link;fs:=/usr/local/wp \e
+host!=charm;type:=nfs;rfs:=/vol/wp
+\&...
+#
+src          \-opts:=rw,grpid,nosuid;rhost:=charm \e
+host==charm;type:=link;fs:=/usr/src \e
+host!=charm;type:=nfs;rfs:=/vol/src
+#
+r+d          type:=auto;fs:=${map};pref:=r+d/
+# per architecture bin,etc,lib&ucb...
+r+d/bin      rhost:=gould.doc.ic.ac.uk;rfs:=/usr/r+d;sublink:=${/key}/${arch}
+r+d/etc      rhost:=gould.doc.ic.ac.uk;rfs:=/usr/r+d;sublink:=${/key}/${arch}
+r+d/include  rhost:=gould.doc.ic.ac.uk;rfs:=/usr/r+d;sublink:=${/key}
+r+d/lib      rhost:=gould.doc.ic.ac.uk;rfs:=/usr/r+d;sublink:=${/key}/${arch}
+r+d/man      rhost:=gould.doc.ic.ac.uk;rfs:=/usr/r+d;sublink:=${/key}
+r+d/src      rhost:=gould.doc.ic.ac.uk;rfs:=/usr/r+d;sublink:=${/key}
+r+d/ucb      rhost:=gould.doc.ic.ac.uk;rfs:=/usr/r+d;sublink:=${/key}/${arch}
+# hades pictures
+pictures     \-opts:=rw,grpid,nosuid;rhost:=thpfs \e
+host==thpfs;type:=link;fs:=/nbsd/pictures \e
+host!=thpfs;type:=nfs;rfs:=/nbsd;sublink:=pictures
+# hades tools
+hades        \-opts:=rw,grpid,nosuid;rhost:=thpfs \e
+host==thpfs;type:=link;fs:=/nbsd/hades \e
+host!=thpfs;type:=nfs;rfs:=/nbsd;sublink:=hades
+# bsd tools for hp.
+bsd          \-opts:=rw,grpid,nosuid;arch==hp9000;rhost:=thpfs \e
+host==thpfs;type:=link;fs:=/nbsd/bsd \e
+host!=thpfs;type:=nfs;rfs:=/nbsd;sublink:=bsd
+.PP
+\&\fB11.7 `/defaults' with selectors\fR
+.PP
+It is sometimes useful to have different defaults for a given map.  To
+achieve this, the `\fB/defaults\fR' entry must be able to process normal
+selectors.  This feature is turned on by setting `selectors_on_default
+= yes' in the `\fBamd.conf\fR' file.  see \*(L"selectors_on_default Parameter\*(R".
+.PP
+In this example, I set different default \s-1NFS\s0 mount options for hosts
+which are running over a slower network link.  By setting a smaller size
+for the \s-1NFS\s0 read and write buffer sizes, you can greatly improve remote
+file service performance.
+.PP
+/defaults \e
+wire==slip\-net;opts:=rw,intr,rsize=1024,wsize=1024,timeo=20,retrans=10 \e
+wire!=slip\-net;opts:=rw,intr
+.PP
+\&\fB11.8 `/tftpboot' in a chroot-ed environment\fR
+.PP
+In this complex example, we attempt to run an Amd process _inside_ a
+chroot-ed environment.  `\fBtftpd\fR' (Trivial \s-1FTP\s0) is used to trivially
+retrieve files used to boot X\-Terminals, Network Printers, Network
+routers, diskless workstations, and other such devices.  For security
+reasons, `\fBtftpd\fR' (and also `\fBftpd\fR') processes are run using the
+\&\fIchroot\fR\|(2) system call.  This provides an environment for these
+processes, where access to any files outside the directory where the
+chroot-ed process runs is denied.
+.PP
+For example, if you start `\fBtftpd\fR' on your system with
+.PP
+chroot /tftpboot /usr/sbin/tftpd
+.PP
+then the `\fBtftpd\fR' process will not be able to access any files outside
+`\fB/tftpboot\fR'.  This ensures that no one can retrieve files such as
+`\fB/etc/passwd\fR' and run password crackers on it.
+.PP
+Since the \s-1TFTP\s0 service works by broadcast, it is necessary to have at
+least one \s-1TFTP\s0 server running on each subnet.  If you have lots of files
+that you need to make available for `\fBtftp\fR', and many subnets, it could
+take significant amounts of disk space on each host serving them.
+.PP
+A solution we implemented at Columbia University was to have every
+host run `\fBtftpd\fR', but have those servers retrieve the boot files from
+two replicated servers.  Those replicated servers have special
+partitions dedicated to the many network boot files.
+.PP
+We start Amd as follows:
+.PP
+amd /tftpboot/.amd amd.tftpboot
+.PP
+That is, Amd is serving the directory `\fB/tftpboot/.amd\fR'.  The `\fBtftp\fR'
+server runs inside `\fB/tftpboot\fR' and is chroot-ed in that directory too.
+The `\fBamd.tftpboot\fR' map looks like:
+.PP
+#
+# Amd /tftpboot directory \-> host map
+#
+.PP
+/defaults  opts:=nosuid,ro,intr,soft;fs:=/tftpboot/import;type:=nfs
+.PP
+tp         host==lol;rfs:=/n/lol/import/tftpboot;type:=lofs \e
+host==ober;rfs:=/n/ober/misc/win/tftpboot;type:=lofs \e
+rhost:=ober;rfs:=/n/ober/misc/win/tftpboot \e
+rhost:=lol;rfs:=/n/lol/import/tftpboot
+.PP
+To help understand this example, I list a few of the file entries
+that are created inside `\fB/tftpboot\fR':
+.PP
+$ ls \-la /tftpboot
+dr-xr-xr-x   2 root   512 Aug 30 23:11 .amd
+drwxrwsr-x  12 root   512 Aug 30 08:00 import
+lrwxrwxrwx   1 root    33 Feb 27  1997 adminpr.cfg \-> ./.amd/tp/hplj/adminpr.cfg
+lrwxrwxrwx   1 root    22 Dec  5  1996 tekxp \-> ./.amd/tp/xterms/tekxp
+lrwxrwxrwx   1 root     1 Dec  5  1996 tftpboot \-> .
+.PP
+Here is an explanation of each of the entries listed above:
+.PP
+`\fB.amd\fR'
+This is the Amd mount point.  Note that you do not need to run a
+separate Amd process for the \s-1TFTP\s0 service.  The \fIchroot\fR\|(2) system
+call only protects against file access, but the same process can
+still serve files and directories inside and outside the chroot-ed
+environment, because Amd itself was not run in chroot-ed mode.
+.PP
+`\fBimport\fR'
+This is the mount point where Amd will mount the directories
+containing the boot files.  The map is designed so that remote
+directories will be \s-1NFS\s0 mounted (even if they are already mounted
+elsewhere), and local directories are loopback mounted (since they
+are not accessible outside the chroot-ed `\fB/tftpboot\fR' directory).
+.PP
+`\fBadminpr.cfg\fR'
+`\fBtekxp\fR'
+Two manually created symbolic links to directories _inside_ the
+Amd-managed directory.  The crossing of the component `\fBtp\fR' will
+cause Amd to automount one of the remote replicas.  Once crossed,
+access to files inside proceeds as usual.  The `\fBadminpr.cfg\fR' is a
+configuration file for an \s-1HP\s0 Laser-Jet 4si printer, and the `\fBtekxp\fR'
+is a directory for Tektronix X\-Terminal boot files.
+.PP
+`\fBtftpboot\fR'
+This innocent looking symlink is important.  Usually, when devices
+boot via the \s-1TFTP\s0 service, they perform the `\fBget file\fR' command to
+retrieve \s-1FILE. \s0 However, some devices assume that `\fBtftpd\fR' does not
+run in a chroot-ed environment, but rather \*(L"unprotected\*(R", and thus
+use a full pathname for files to retrieve, as in `get
+/tftpboot/file'.  This symlink effectively strips out the leading
+`\fB/tftpboot/\fR'.
+.SS "12 Internals"
+.IX Subsection "12 Internals"
+Note that there are more error and logging messages possible than are
+listed here.  Most of them are self-explanatory.  Refer to the program
+sources for more details on the rest.
+.PP
+* Menu:
+.PP
+See also \*(L"Log Messages\*(R"
+.PP
+\&\fB12.1 Log Messages\fR
+.PP
+In the following sections a brief explanation is given of some of the
+log messages made by Amd.  Where the message is in `\fBtypewriter\fR' font,
+it corresponds exactly to the message produced by Amd.  Words in
+\&\*(L"italic\*(R" are replaced by an appropriate string.  Variables, `\fB${var}\fR',
+indicate that the value of the appropriate variable is output.
+.PP
+Log messages are either sent directly to a file, or logged via the
+\&\fIsyslog\fR\|(3) mechanism.  see \*(L"log_file Parameter\*(R".  In either case,
+entries in the file are of the form:
+date-string  hostname amd[pid]  message
+.PP
+* Menu:
+.PP
+See also \*(L"Fatal errors\*(R"
+.PP
+See also \*(L"Info messages\*(R"
+.PP
+\&\fB12.1.1 Fatal errors\fR
+.PP
+Amd attempts to deal with unusual events.  Whenever it is not possible
+to deal with such an error, Amd will log an appropriate message and, if
+it cannot possibly continue, will either exit or abort.  These messages
+are selected by `\fB\-x fatal\fR' on the command line.  When \fIsyslog\fR\|(3) is
+being used, they are logged with level `\fB\s-1LOG_FATAL\s0\fR'.  Even if Amd
+continues to operate it is likely to remain in a precarious state and
+should be restarted at the earliest opportunity.
+.PP
+Attempting to inherit not-a-filesystem
+The prototype mount point created during a filesystem restart did
+not contain a reference to the restarted filesystem.  This error
+\&\*(L"should never happen\*(R".
+.PP
+Can't bind to domain \*(L"NIS-domain\*(R"
+A specific \s-1NIS\s0 domain was requested on the command line, but no
+server for that domain is available on the local net.
+.PP
+Can't determine \s-1IP\s0 address of this host (hostname)
+When Amd starts it determines its own \s-1IP\s0 address.  If this lookup
+fails then Amd cannot continue.  The hostname it looks up is that
+obtained returned by \fIgethostname\fR\|(2) system call.
+.PP
+Can't find root file handle for automount point
+Amd creates its own file handles for the automount points.  When it
+mounts itself as a server, it must pass these file handles to the
+local kernel.  If the filehandle is not obtainable the mount point
+is ignored.  This error \*(L"should never happen\*(R".
+.PP
+Must be root to mount filesystems (euid = euid)
+To prevent embarrassment, Amd makes sure it has appropriate system
+privileges.  This amounts to having an euid of 0.  The check is
+made after argument processing complete to give non-root users a
+chance to access the `\fB\-v\fR' option.
+.PP
+No work to do \- quitting
+No automount points were given on the command line and so there is
+no work to do.
+.PP
+Out of memory
+While attempting to malloc some memory, the memory space available
+to Amd was exhausted.  This is an unrecoverable error.
+.PP
+Out of memory in realloc
+While attempting to realloc some memory, the memory space
+available to Amd was exhausted.  This is an unrecoverable error.
+.PP
+cannot create rpc/udp service
+Either the \s-1NFS\s0 or \s-1AMQ\s0 endpoint could not be created.
+.PP
+gethostname: description
+The \fIgethostname\fR\|(2) system call failed during startup.
+.PP
+host name is not set
+The \fIgethostname\fR\|(2) system call returned a zero length host name.
+This can happen if Amd is started in single user mode just after
+booting the system.
+.PP
+ifs_match called!
+An internal error occurred while restarting a pre-mounted
+filesystem.  This error \*(L"should never happen\*(R".
+.PP
+mount_afs: description
+An error occurred while Amd was mounting itself.
+.PP
+run_rpc failed
+Somehow the main \s-1NFS\s0 server loop failed.  This error \*(L"should never
+happen\*(R".
+.PP
+unable to free rpc arguments in amqprog_1
+The incoming arguments to the \s-1AMQ\s0 server could not be free'ed.
+.PP
+unable to free rpc arguments in nfs_program_1
+The incoming arguments to the \s-1NFS\s0 server could not be free'ed.
+.PP
+unable to register (\s-1AMQ_PROGRAM, AMQ_VERSION,\s0 udp)
+The \s-1AMQ\s0 server could not be registered with the local portmapper
+or the internal \s-1RPC\s0 dispatcher.
+.PP
+unable to register (\s-1NFS_PROGRAM, NFS_VERSION, 0\s0)
+The \s-1NFS\s0 server could not be registered with the internal \s-1RPC\s0
+dispatcher.
+.PP
+\&\s-1XXX:\s0 This section needs to be updated
+.PP
+\&\fB12.1.2 Info messages\fR
+.PP
+Amd generates information messages to record state changes.  These
+messages are selected by `\fB\-x info\fR' on the command line.  When \fIsyslog\fR\|(3)
+is being used, they are logged with level `\fB\s-1LOG_INFO\s0\fR'.
+.PP
+The messages listed below can be generated and are in a format
+suitable for simple statistical analysis.  \*(L"mount-info\*(R" is the string
+that is displayed by \*(L"Amq\*(R" in its mount information column and placed
+in the system mount table.
+.PP
+\&\*(L"${path}\*(R" forcibly timed out
+An automount point has been timed out by the Amq command.
+.PP
+\&\*(L"${path}\*(R" has timed out
+No access to the automount point has been made within the timeout
+period.
+.PP
+Filehandle denied for \*(L"${rhost}:${rfs}\*(R"
+The mount daemon refused to return a file handle for the requested
+filesystem.
+.PP
+Filehandle error for \*(L"${rhost}:${rfs}\*(R": description
+The mount daemon gave some other error for the requested
+filesystem.
+.PP
+Finishing with status exit-status
+Amd is about to exit with the given exit status.
+.PP
+Re-synchronizing cache for map ${map}
+The named map has been modified and the internal cache is being
+re-synchronized.
+.PP
+file server ${rhost} is down \- timeout of \*(L"${path}\*(R" ignored
+An automount point has timed out, but the corresponding file
+server is known to be down.  This message is only produced once
+for each mount point for which the server is down.
+.PP
+file server ${rhost} type nfs is down
+An \s-1NFS\s0 file server that was previously up is now down.
+.PP
+file server ${rhost} type nfs is up
+An \s-1NFS\s0 file server that was previously down is now up.
+.PP
+file server ${rhost} type nfs starts down
+A new \s-1NFS\s0 file server has been referenced and is known to be down.
+.PP
+file server ${rhost} type nfs starts up
+A new \s-1NFS\s0 file server has been referenced and is known to be up.
+.PP
+mount of \*(L"${path}\*(R" on ${fs} timed out
+Attempts to mount a filesystem for the given automount point have
+failed to complete within 30 seconds.
+.PP
+mount-info mounted fstype ${type} on ${fs}
+A new file system has been mounted.
+.PP
+mount-info restarted fstype ${type} on ${fs}
+Amd is using a pre-mounted filesystem to satisfy a mount request.
+.PP
+mount-info unmounted fstype ${type} from ${fs}
+A file system has been unmounted.
+.PP
+mount-info unmounted fstype ${type} from ${fs} link ${fs}/${sublink}
+A file system of which only a sub-directory was in use has been
+unmounted.
+.PP
+restarting mount-info on ${fs}
+A pre-mounted file system has been noted.
+.PP
+\&\s-1XXX:\s0 This section needs to be updated
+.SS "Acknowledgments & Trademarks"
+.IX Subsection "Acknowledgments & Trademarks"
+Many thanks to the Amd Developers <amd\-dev@majordomo.cs.columbia.edu>
+mailing list through the months developing am-utils.  These members
+have contributed to the discussions, ideas, code and documentation, and
+subjected their systems to alpha quality code.  Special thanks go to
+those authors (http://www.cs.columbia.edu/~ezk/am\-utils/AUTHORS.txt) who
+have submitted patches.
+.PP
+Thanks to the Formal Methods Group at Imperial College for suffering
+patiently while Amd was being developed on their machines.
+.PP
+Thanks to the many people who have helped with the development of
+Amd, especially Piete Brooks at the Cambridge University Computing Lab
+for many hours of testing, experimentation and discussion.
+.PP
+Thanks to the Amd Workers <amd\-workers@majordomo.glue.umd.edu>
+mailing list members for many suggestions and bug reports to Amd.
+.PP
+* \s-1DEC, VAX\s0 and Ultrix are registered trademarks of Digital Equipment
+Corporation.
+.PP
+* \s-1AIX\s0 and \s-1IBM\s0 are registered trademarks of International Business
+Machines Corporation.
+.PP
+* Sun, \s-1NFS\s0 and SunOS are registered trademarks of Sun Microsystems,
+Inc.
+.PP
+* \s-1UNIX\s0 is a registered trademark in the \s-1USA\s0 and other countries,
+exclusively licensed through X/Open Company, Ltd.
+.PP
+* All other registered trademarks are owned by their respective
+owners.
+.SS "Index"
+.IX Subsection "Index"
+\0\b[index\0\b]
+* Menu:
+.PP
+!exists, boolean mount selector: see \*(L"exists Selector Function\*(R", .
+.PP
+(line   6)
+!false, boolean mount selector: see \*(L"false Selector Function\*(R", .
+.PP
+(line   6)
+!in_network, boolean mount selector: see \*(L"in_network Selector Function\*(R", .
+.PP
+(line   6)
+!netgrp, boolean mount selector: see \*(L"netgrp Selector Function\*(R", .
+.PP
+(line   6)
+!netgrpd, boolean mount selector: see \*(L"netgrpd Selector Function\*(R", .
+.PP
+(line   6)
+!true, boolean mount selector: see \*(L"true Selector Function\*(R", .
+.PP
+(line   6)
+/defaults with selectors: see \*(L"defaults with selectors\*(R"\*(L" in \*(R", .
+.PP
+(line   6)
+/etc/passwd maps: see \*(L"Password maps\*(R", .       (line   6)
+.PP
+/etc/rc.local additions: see \*(L"Starting Amd\*(R", .        (line   6)
+.PP
+/tftpboot in a chroot-ed environment: see \*(L"tftpboot in a chroot-ed environment\*(R"\*(L" in \*(R", .
+.PP
+(line   6)
+/vol: see \*(L"vol\*(R"\*(L" in \*(R", .                (line   6)
+.PP
+Additions to /etc/rc.local: see \*(L"Starting Amd\*(R", .        (line   6)
+.PP
+addopts, mount option: see \*(L"addopts Option\*(R", .      (line   6)
+.PP
+Aliased hostnames: see \*(L"\-n Option\*(R", .           (line   6)
+.PP
+Alternate locations: see \*(L"Mounting a Volume\*(R", .   (line   6)
+.PP
+am-eject: see \*(L"am-eject\*(R", .            (line   6)
+.PP
+Amd command line options: see \*(L"Amd Command Line Options\*(R", .
+.PP
+(line   6)
+Amd Configuration File: see \*(L"Amd Configuration File\*(R", .
+.PP
+(line   6)
+Amd configuration file: see \*(L"\-F Option\*(R", .           (line   6)
+.PP
+Amd configuration file; specifying name: see \*(L"\-F Option\*(R", .         (line   6)
+.PP
+Amd's \s-1PID:\s0 see \*(L"Amq \-p option\*(R", .       (line   6)
+.PP
+Amd's process \s-1ID:\s0 see \*(L"Amq \-p option\*(R", .       (line   6)
+.PP
+amd.conf: see \*(L"Amd Configuration File\*(R", .
+.PP
+(line   6)
+amd.conf common parameters: see \*(L"Common Parameters\*(R", .   (line   6)
+.PP
+amd.conf examples: see \*(L"amd\*(R", .conf Examples.   (line   6)
+.PP
+amd.conf file: see \*(L"\-F Option\*(R", .           (line   6)
+.PP
+amd.conf file format: see \*(L"File Format\*(R", .         (line   6)
+.PP
+amd.conf global parameters: see \*(L"Global Parameters\*(R", .   (line   6)
+.PP
+amd.conf global section: see \*(L"The Global Section\*(R", .  (line   6)
+.PP
+amd.conf regular map parameters: see \*(L"Regular Map Parameters\*(R", .
+.PP
+(line   6)
+amd.conf regular map sections: see \*(L"Regular Map Sections\*(R", .
+.PP
+(line   6)
+amd.conf\-sample: see \*(L"amd\*(R", .conf\-sample.     (line   6)
+.PP
+amd2ldif: see \*(L"amd2ldif\*(R", .            (line   6)
+.PP
+amd2sun: see \*(L"amd2sun\*(R", .             (line   6)
+.PP
+Amq command: see \*(L"Run-time Administration\*(R", .
+.PP
+(line   6)
+arch Parameter: see \*(L"arch Parameter\*(R", .      (line   6)
+.PP
+arch Selector Variable: see \*(L"arch Selector Variable\*(R", .
+.PP
+(line   6)
+arch, FSinfo host attribute: see \*(L"FSinfo host arch\*(R", .    (line   6)
+.PP
+arch, mount selector: see \*(L"arch Selector Variable\*(R", .
+.PP
+(line   6)
+Architecture dependent volumes: see \*(L"Architecture Sharing\*(R", .
+.PP
+(line   6)
+Architecture sharing: see \*(L"Architecture Sharing\*(R", .
+.PP
+(line   6)
+Architecture specific mounts: see \*(L"rwho servers\*(R", .        (line   6)
+.PP
+Assorted Tools: see \*(L"Assorted Tools\*(R", .      (line   6)
+.PP
+Atomic \s-1NFS\s0 mounts: see \*(L"Network Filesystem Group\*(R", .
+.PP
+(line   6)
+auto, filesystem type: see \*(L"Automount Filesystem\*(R", .
+.PP
+(line   6)
+auto_dir Parameter: see \*(L"auto_dir Parameter\*(R", .  (line   6)
+.PP
+autodir Selector Variable: see \*(L"autodir Selector Variable\*(R", .
+.PP
+(line   6)
+autodir, mount selector: see \*(L"autodir Selector Variable\*(R", .
+.PP
+(line   6)
+Autofs filesystem: see \*(L"Autofs Filesystem\*(R", .   (line   6)
+.PP
+autofs, filesystem type: see \*(L"Autofs Filesystem\*(R", .   (line   6)
+.PP
+Automatic generation of user maps: see \*(L"Password maps\*(R", .       (line   6)
+.PP
+Automount directory: see \*(L"\-a Option\*(R", .           (line   6)
+.PP
+Automount filesystem: see \*(L"Automount Filesystem\*(R", .
+.PP
+(line   6)
+automount2amd: see \*(L"automount2amd\*(R", .       (line   6)
+.PP
+Automounter configuration maps: see \*(L"Mount Maps\*(R", .          (line   6)
+.PP
+Automounter fundamentals: see \*(L"Fundamentals\*(R", .        (line   6)
+.PP
+Background mounts: see \*(L"Mounting a Volume\*(R", .   (line   6)
+.PP
+Background to Mail Delivery: see \*(L"Background to Mail Delivery\*(R", .
+.PP
+(line   6)
+Binding names to filesystems: see \*(L"Volume Binding\*(R", .      (line   6)
+.PP
+bootparams, FSinfo prefix: see \*(L"\-b FSinfo Option\*(R", .    (line   6)
+.PP
+browsable_dirs Parameter: see \*(L"browsable_dirs Parameter\*(R", .
+.PP
+(line   6)
+Bug reports: see \*(L"Distrib\*(R", .             (line  30)
+.PP
+byte Selector Variable: see \*(L"byte Selector Variable\*(R", .
+.PP
+(line   6)
+byte, mount selector: see \*(L"byte Selector Variable\*(R", .
+.PP
+(line   6)
+Cache interval: see \*(L"\-c Option\*(R", .           (line   6)
+.PP
+cache, mount map option: see \*(L"Automount Filesystem\*(R", .
+.PP
+(line  15)
+cache_duration Parameter: see \*(L"cache_duration Parameter\*(R", .
+.PP
+(line   6)
+cachedir, mount option: see \*(L"Caching Filesystem\*(R", .  (line  13)
+.PP
+cachefs, filesystem type: see \*(L"Caching Filesystem\*(R", .  (line   6)
+.PP
+Caching Filesystem: see \*(L"Caching Filesystem\*(R", .  (line   6)
+.PP
+Catch-all mount point: see \*(L"vol\*(R"\*(L" in \*(R", .                (line   6)
+.PP
+CD-ROM Filesystem: see \*(L"CD-ROM Filesystem\*(R", .   (line   6)
+.PP
+cdfs, filesystem type: see \*(L"CD-ROM Filesystem\*(R", .   (line   6)
+.PP
+Centralized Mail Spool Directory: see \*(L"Centralized Mail Spool Directory\*(R", .
+.PP
+(line   6)
+Changing the interval before a filesystem times out: see \*(L"\-c Option\*(R", .
+.PP
+(line   6)
+chroot: see \*(L"tftpboot example:             /tftpboot in a chroot-ed environment\*(R"\*(L" in \*(R", .
+.PP
+(line   6)
+Cluster names: see \*(L"\-C\-Option\*(R", .           (line   6)
+.PP
+cluster Parameter: see \*(L"cluster Parameter\*(R", .   (line   6)
+.PP
+cluster Selector Variable: see \*(L"cluster Selector Variable\*(R", .
+.PP
+(line   6)
+cluster, FSinfo host attribute: see \*(L"FSinfo host cluster\*(R", . (line   6)
+.PP
+cluster, mount selector: see \*(L"cluster Selector Variable\*(R", .
+.PP
+(line   6)
+Command line options, Amd: see \*(L"Amd Command Line Options\*(R", .
+.PP
+(line   6)
+Command line options, FSinfo: see \*(L"FSinfo Command Line Options\*(R", .
+.PP
+(line   6)
+config, FSinfo host attribute: see \*(L"FSinfo host config\*(R", .  (line   6)
+.PP
+Configuration file; tags: see \*(L"\-T\-Option\*(R", .           (line   6)
+.PP
+Configuration map types: see \*(L"Map Types\*(R", .           (line   6)
+.PP
+Controlling Amd: see \*(L"Controlling Amd\*(R", .     (line   6)
+.PP
+Controlling Hlfsd: see \*(L"Controlling Hlfsd\*(R", .   (line   6)
+.PP
+Creating a pid file: see \*(L"\-p Option\*(R", .           (line   6)
+.PP
+ctl-amd <1>: see \*(L"ctl-amd\*(R", .             (line   6)
+.PP
+ctl-amd: see \*(L"Starting Amd\*(R", .        (line   6)
+.PP
+ctl-hlfsd <1>: see \*(L"Controlling Hlfsd\*(R", .   (line   6)
+.PP
+ctl-hlfsd: see \*(L"ctl-hlfsd\*(R", .           (line   6)
+.PP
+Debug options: see \*(L"\-D\-Option\*(R", .           (line   6)
+.PP
+debug_options Parameter: see \*(L"debug_options Parameter\*(R", .
+.PP
+(line   6)
+Debugging a new Amd configuration: see \*(L"Amq \-P\-option\*(R", .       (line   6)
+.PP
+debugging hesiod resolver service: see \*(L"\-D\-Option\*(R", .           (line  33)
+.PP
+Debugging options via Amq: see \*(L"Other Amq options\*(R", .   (line   6)
+.PP
+Defining a host, FSinfo: see \*(L"FSinfo host definitions\*(R", .
+.PP
+(line   6)
+Defining an Amd mount map, FSinfo: see \*(L"FSinfo automount definitions\*(R", .
+.PP
+(line   6)
+Defining host attributes, FSinfo: see \*(L"FSinfo host attributes\*(R", .
+.PP
+(line   6)
+delay, mount option: see \*(L"delay Option\*(R", .        (line   6)
+.PP
+Delaying mounts from specific locations: see \*(L"delay Option\*(R", .      (line   6)
+.PP
+Determining the map type: see \*(L"Map Types\*(R", .           (line   6)
+.PP
+dev, mount option <1>: see \*(L"Floppy Filesystem\*(R", .   (line  11)
+.PP
+dev, mount option <2>: see \*(L"Unix Filesystem\*(R", .     (line  12)
+.PP
+dev, mount option: see \*(L"CD-ROM Filesystem\*(R", .   (line  11)
+.PP
+Direct automount filesystem: see \*(L"Direct Automount Filesystem\*(R", .
+.PP
+(line   6)
+direct, filesystem type: see \*(L"Direct Automount Filesystem\*(R", .
+.PP
+(line   6)
+Discovering version information: see \*(L"\-v Option\*(R", .           (line   6)
+.PP
+Discovering what is going on at run-time: see \*(L"Controlling Amd\*(R", .  (line   6)
+.PP
+Disk filesystems: see \*(L"Unix Filesystem\*(R", .     (line   6)
+.PP
+dismount_interval Parameter: see \*(L"dismount_interval Parameter\*(R", .
+.PP
+(line   6)
+Displaying brief help: see \*(L"\-H Option\*(R", .           (line   6)
+.PP
+Displaying the process id: see \*(L"\-p Option\*(R", .           (line   6)
+.PP
+Distributed Mail Spool Service: see \*(L"Distributed Mail Spool Service\*(R", .
+.PP
+(line   6)
+Domain name: see \*(L"\-d Option\*(R", .           (line   6)
+.PP
+domain Selector Variable: see \*(L"domain Selector Variable\*(R", .
+.PP
+(line   6)
+Domain stripping: see \*(L"Variable Expansion\*(R", .  (line   6)
+.PP
+domain, mount selector: see \*(L"domain Selector Variable\*(R", .
+.PP
+(line   6)
+Domainname operators: see \*(L"Variable Expansion\*(R", .  (line   6)
+.PP
+dumpset, FSinfo filesystems option: see \*(L"FSinfo filesystems dumpset\*(R", .
+.PP
+(line   6)
+dumpset, FSinfo prefix: see \*(L"\-d FSinfo Option\*(R", .    (line   6)
+.PP
+Duplicated volumes: see \*(L"Volume Naming\*(R", .       (line   6)
+.PP
+\&\s-1EFS:\s0 see \*(L"Unix Filesystem\*(R", .     (line   6)
+.PP
+efs, filesystem type: see \*(L"Unix Filesystem\*(R", .     (line   6)
+.PP
+Environment variables: see \*(L"Variable Expansion\*(R", .  (line   6)
+.PP
+Error filesystem: see \*(L"Error Filesystem\*(R", .    (line   6)
+.PP
+error, filesystem type: see \*(L"Error Filesystem\*(R", .    (line   6)
+.PP
+Example of architecture specific mounts: see \*(L"rwho servers\*(R", .      (line   6)
+.PP
+Example of mounting home directories: see \*(L"Home Directories\*(R", .    (line   6)
+.PP
+exists Selector Function: see \*(L"exists Selector Function\*(R", .
+.PP
+(line   6)
+exists, boolean mount selector: see \*(L"exists Selector Function\*(R", .
+.PP
+(line   6)
+expn: see \*(L"expn\*(R", .                (line   6)
+.PP
+export, FSinfo special fstype: see \*(L"FSinfo filesystems fstype\*(R", .
+.PP
+(line   6)
+exportfs, FSinfo mount option: see \*(L"FSinfo filesystems mount\*(R", .
+.PP
+(line   6)
+exports, FSinfo prefix: see \*(L"\-e FSinfo Option\*(R", .    (line   6)
+.PP
+false Selector Function: see \*(L"false Selector Function\*(R", .
+.PP
+(line   6)
+false, boolean mount selector: see \*(L"false Selector Function\*(R", .
+.PP
+(line   6)
+File map syntactic conventions: see \*(L"File maps\*(R", .           (line   6)
+.PP
+File maps: see \*(L"File maps\*(R", .           (line   6)
+.PP
+Fileserver: see \*(L"Filesystems and Volumes\*(R", .
+.PP
+(line   6)
+Filesystem: see \*(L"Filesystems and Volumes\*(R", .
+.PP
+(line   6)
+Filesystem info package: see \*(L"FSinfo\*(R", .              (line   6)
+.PP
+Filesystem type; auto: see \*(L"Automount Filesystem\*(R", .
+.PP
+(line   6)
+Filesystem type; autofs: see \*(L"Autofs Filesystem\*(R", .   (line   6)
+.PP
+Filesystem type; cachefs: see \*(L"Caching Filesystem\*(R", .  (line   6)
+.PP
+Filesystem type; cdfs: see \*(L"CD-ROM Filesystem\*(R", .   (line   6)
+.PP
+Filesystem type; direct: see \*(L"Direct Automount Filesystem\*(R", .
+.PP
+(line   6)
+Filesystem type; efs: see \*(L"Unix Filesystem\*(R", .     (line   6)
+.PP
+Filesystem type; error: see \*(L"Error Filesystem\*(R", .    (line   6)
+.PP
+Filesystem type; host: see \*(L"Network Host Filesystem\*(R", .
+.PP
+(line   6)
+Filesystem type; inherit: see \*(L"Inheritance Filesystem\*(R", .
+.PP
+(line   6)
+Filesystem type; link: see \*(L"Symbolic Link Filesystem\*(R", .
+.PP
+(line   6)
+Filesystem type; linkx: see \*(L"Symbolic Link Filesystem \s-1II\*(R"\s0, .
+.PP
+(line   6)
+Filesystem type; lofs: see \*(L"Loopback Filesystem\*(R", . (line   6)
+.PP
+Filesystem type; mfs: see \*(L"\s-1RAM\s0 Filesystem\*(R"\*(L" in \*(R"Memory, .
+.PP
+(line   6)
+Filesystem type; nfs: see \*(L"Network Filesystem\*(R", .  (line   6)
+.PP
+Filesystem type; nfsl: see \*(L"NFS-Link Filesystem\*(R", . (line   6)
+.PP
+Filesystem type; nfsx: see \*(L"Network Filesystem Group\*(R", .
+.PP
+(line   6)
+Filesystem type; nullfs: see \*(L"Null Filesystem\*(R", .     (line   6)
+.PP
+Filesystem type; pcfs: see \*(L"Floppy Filesystem\*(R", .   (line   6)
+.PP
+Filesystem type; program: see \*(L"Program Filesystem\*(R", .  (line   6)
+.PP
+Filesystem type; root: see \*(L"Root Filesystem\*(R", .     (line   6)
+.PP
+Filesystem type; tfs: see \*(L"Translucent Filesystem\*(R", .
+.PP
+(line   6)
+Filesystem type; tmpfs: see \*(L"Shared Memory+Swap Filesystem\*(R", .
+.PP
+(line   6)
+Filesystem type; toplvl: see \*(L"Top-level Filesystem\*(R", .
+.PP
+(line   6)
+Filesystem type; ufs: see \*(L"Unix Filesystem\*(R", .     (line   6)
+.PP
+Filesystem type; umapfs: see \*(L"User \s-1ID\s0 Mapping Filesystem\*(R", .
+.PP
+(line   6)
+Filesystem type; union: see \*(L"Union Filesystem\*(R", .    (line   6)
+.PP
+Filesystem type; xfs: see \*(L"Unix Filesystem\*(R", .     (line   6)
+.PP
+Filesystem types: see \*(L"Filesystem Types\*(R", .    (line   6)
+.PP
+fix-amd-map: see \*(L"fix-amd-map\*(R", .         (line   6)
+.PP
+fixmount: see \*(L"fixmount\*(R", .            (line   6)
+.PP
+fixrmtab: see \*(L"fixrmtab\*(R", .            (line   6)
+.PP
+Flat file maps: see \*(L"File maps\*(R", .           (line   6)
+.PP
+Floppy Filesystem: see \*(L"Floppy Filesystem\*(R", .   (line   6)
+.PP
+Flushing the map cache: see \*(L"Amq \-f option\*(R", .       (line   6)
+.PP
+Forcing Amq to use a \s-1TCP\s0 transport: see \*(L"Amq \-T option\*(R", .       (line   6)
+.PP
+Forcing Amq to use a \s-1UDP\s0 transport: see \*(L"Amq \-U\-option\*(R", .       (line   6)
+.PP
+Forcing filesystem to time out: see \*(L"Amq \-u option\*(R", .       (line   6)
+.PP
+freq, FSinfo filesystems option: see \*(L"FSinfo filesystems freq\*(R", .
+.PP
+(line   6)
+fs, mount option: see \*(L"fs Option\*(R", .           (line   6)
+.PP
+FSinfo: see \*(L"FSinfo\*(R", .              (line   6)
+.PP
+FSinfo arch host attribute: see \*(L"FSinfo host arch\*(R", .    (line   6)
+.PP
+FSinfo automount definitions: see \*(L"FSinfo automount definitions\*(R", .
+.PP
+(line   6)
+FSinfo cluster host attribute: see \*(L"FSinfo host cluster\*(R", . (line   6)
+.PP
+FSinfo command line options: see \*(L"FSinfo Command Line Options\*(R", .
+.PP
+(line   6)
+FSinfo config host attribute: see \*(L"FSinfo host config\*(R", .  (line   6)
+.PP
+FSinfo dumpset filesystems option: see \*(L"FSinfo filesystems dumpset\*(R", .
+.PP
+(line   6)
+FSinfo error messages: see \*(L"FSinfo errors\*(R", .       (line   6)
+.PP
+FSinfo filesystems: see \*(L"FSinfo filesystems\*(R", .  (line   6)
+.PP
+FSinfo freq filesystems option: see \*(L"FSinfo filesystems freq\*(R", .
+.PP
+(line   6)
+FSinfo fstype filesystems option: see \*(L"FSinfo filesystems fstype\*(R", .
+.PP
+(line   6)
+FSinfo grammar: see \*(L"FSinfo Grammar\*(R", .      (line   6)
+.PP
+FSinfo host attributes: see \*(L"FSinfo host attributes\*(R", .
+.PP
+(line   6)
+FSinfo host definitions: see \*(L"FSinfo host definitions\*(R", .
+.PP
+(line   6)
+FSinfo log filesystems option: see \*(L"FSinfo filesystems log\*(R", .
+.PP
+(line   6)
+FSinfo mount filesystems option: see \*(L"FSinfo filesystems mount\*(R", .
+.PP
+(line   6)
+FSinfo opts filesystems option: see \*(L"FSinfo filesystems opts\*(R", .
+.PP
+(line   6)
+FSinfo os host attribute: see \*(L"FSinfo host os\*(R", .      (line   6)
+.PP
+FSinfo overview: see \*(L"FSinfo Overview\*(R", .     (line   6)
+.PP
+FSinfo passno filesystems option: see \*(L"FSinfo filesystems passno\*(R", .
+.PP
+(line   6)
+FSinfo static mounts: see \*(L"FSinfo static mounts\*(R", .
+.PP
+(line   6)
+fstab, FSinfo prefix: see \*(L"\-f FSinfo Option\*(R", .    (line   6)
+.PP
+fstype, FSinfo filesystems option: see \*(L"FSinfo filesystems fstype\*(R", .
+.PP
+(line   6)
+full_os Parameter: see \*(L"full_os Parameter\*(R", .   (line   6)
+.PP
+full_os Selector Variable: see \*(L"full_os Selector Variable\*(R", .
+.PP
+(line   6)
+full_os, mount selector: see \*(L"full_os Selector Variable\*(R", .
+.PP
+(line   6)
+fully_qualified_hosts Parameter: see \*(L"fully_qualified_hosts Parameter\*(R", .
+.PP
+(line   6)
+Generic volume name: see \*(L"vol\*(R"\*(L" in \*(R", .                (line   6)
+.PP
+Global statistics: see \*(L"Amq \-s option\*(R", .       (line   6)
+.PP
+Grammar, FSinfo: see \*(L"FSinfo Grammar\*(R", .      (line   6)
+.PP
+Help; showing from Amd: see \*(L"\-H Option\*(R", .           (line   6)
+.PP
+Hesiod maps: see \*(L"Hesiod maps\*(R", .         (line   6)
+.PP
+Hesiod: see \*(L"turning on \s-1RES_DEBUG:         \s0 \-D\-Option\*(R", .           (line  33)
+.PP
+hesiod_base Parameter: see \*(L"hesiod_base Parameter\*(R", .
+.PP
+(line   6)
+History: see \*(L"History\*(R", .             (line   6)
+.PP
+Hlfsd: see \*(L"Hlfsd\*(R", .               (line   6)
+.PP
+Hlfsd Files: see \*(L"Hlfsd Files\*(R", .         (line   6)
+.PP
+Hlfsd Options: see \*(L"Hlfsd Options\*(R", .       (line   6)
+.PP
+Hlfsd; background: see \*(L"Background to Mail Delivery\*(R", .
+.PP
+(line   6)
+Hlfsd; controlling: see \*(L"Controlling Hlfsd\*(R", .   (line   6)
+.PP
+Hlfsd; Files: see \*(L"Hlfsd Files\*(R", .         (line   6)
+.PP
+Hlfsd; introduction: see \*(L"Introduction to Hlfsd\*(R", .
+.PP
+(line   6)
+Hlfsd; Options: see \*(L"Hlfsd Options\*(R", .       (line   6)
+.PP
+Hlfsd; using: see \*(L"Using Hlfsd\*(R", .         (line   6)
+.PP
+Hlfsd; Why Deliver Into the Home Directory?: see \*(L"Why Deliver Into the Home Directory?\*(R", .
+.PP
+(line   6)
+Home directories: see \*(L"Home Directories\*(R", .    (line   6)
+.PP
+Home-Link Filesystem: see \*(L"Hlfsd\*(R", .               (line   6)
+.PP
+host Selector Variable: see \*(L"host Selector Variable\*(R", .
+.PP
+(line   6)
+host, filesystem type: see \*(L"Network Host Filesystem\*(R", .
+.PP
+(line   6)
+host, mount selector: see \*(L"host Selector Variable\*(R", .
+.PP
+(line   6)
+hostd Selector Variable: see \*(L"hostd Selector Variable\*(R", .
+.PP
+(line   6)
+hostd, mount selector: see \*(L"hostd Selector Variable\*(R", .
+.PP
+(line   6)
+Hostname normalization: see \*(L"\-n Option\*(R", .           (line   6)
+.PP
+hostname, FSinfo command line option: see \*(L"\-h FSinfo Option\*(R", .    (line   6)
+.PP
+How keys are looked up: see \*(L"Key Lookup\*(R", .          (line   6)
+.PP
+How locations are parsed: see \*(L"Location Format\*(R", .     (line   6)
+.PP
+How to access environment variables in maps: see \*(L"Variable Expansion\*(R", .
+.PP
+(line   6)
+How to discover your version of Amd: see \*(L"\-v Option\*(R", .           (line   6)
+.PP
+How to mount a local disk: see \*(L"Unix Filesystem\*(R", .     (line   6)
+.PP
+How to mount a \s-1UFS\s0 filesystems: see \*(L"Unix Filesystem\*(R", .     (line   6)
+.PP
+How to mount all \s-1NFS\s0 exported filesystems: see \*(L"Network Host Filesystem\*(R", .
+.PP
+(line   6)
+How to mount an atomic group of \s-1NFS\s0 filesystems: see \*(L"Network Filesystem Group\*(R", .
+.PP
+(line   6)
+How to mount and \s-1NFS\s0 filesystem: see \*(L"Network Filesystem\*(R", .  (line   6)
+.PP
+How to reference an existing part of the local name space: see \*(L"Symbolic Link Filesystem \s-1II\*(R"\s0, .
+.PP
+(line   6)
+How to reference part of the local name space: see \*(L"Symbolic Link Filesystem\*(R", .
+.PP
+(line   6)
+How to select log messages: see \*(L"\-x Option\*(R", .           (line   6)
+.PP
+How to set default map parameters: see \*(L"Map Defaults\*(R", .        (line   6)
+.PP
+How to set map cache parameters: see \*(L"Automount Filesystem\*(R", .
+.PP
+(line   6)
+How to start a direct automount point: see \*(L"Direct Automount Filesystem\*(R", .
+.PP
+(line   6)
+How to start an indirect automount point: see \*(L"Automount Filesystem\*(R", .
+.PP
+(line   6)
+How variables are expanded: see \*(L"Variable Expansion\*(R", .  (line   6)
+.PP
+in_network Selector Function: see \*(L"in_network Selector Function\*(R", .
+.PP
+(line   6)
+in_network, boolean mount selector: see \*(L"in_network Selector Function\*(R", .
+.PP
+(line   6)
+inherit, filesystem type: see \*(L"Inheritance Filesystem\*(R", .
+.PP
+(line   6)
+Inheritance filesystem: see \*(L"Inheritance Filesystem\*(R", .
+.PP
+(line   6)
+Interval before a filesystem times out: see \*(L"\-c Option\*(R", .          (line   6)
+.PP
+Introduction: see \*(L"Intro\*(R", .               (line   6)
+.PP
+Introduction to Hlfsd: see \*(L"Introduction to Hlfsd\*(R", .
+.PP
+(line   6)
+karch Parameter: see \*(L"karch Parameter\*(R", .     (line   6)
+.PP
+karch Selector Variable: see \*(L"karch Selector Variable\*(R", .
+.PP
+(line   6)
+karch, mount selector: see \*(L"karch Selector Variable\*(R", .
+.PP
+(line   6)
+Keep-alives: see \*(L"Keep-alives\*(R", .         (line   6)
+.PP
+Key lookup: see \*(L"Key Lookup\*(R", .          (line   6)
+.PP
+key Selector Variable: see \*(L"key Selector Variable\*(R", .
+.PP
+(line   6)
+key, mount selector: see \*(L"key Selector Variable\*(R", .
+.PP
+(line   6)
+Killing and starting Amd: see \*(L"Restarting Amd\*(R", .      (line   6)
+.PP
+\&\s-1LDAP\s0 maps: see \*(L"\s-1LDAP\s0 maps\*(R", .           (line   6)
+.PP
+ldap_base Parameter: see \*(L"ldap_base Parameter\*(R", . (line   6)
+.PP
+ldap_cache_maxmem Parameter: see \*(L"ldap_cache_maxmem Parameter\*(R", .
+.PP
+(line   6)
+ldap_cache_seconds Parameter: see \*(L"ldap_cache_seconds Parameter\*(R", .
+.PP
+(line   6)
+ldap_hostports Parameter: see \*(L"ldap_hostports Parameter\*(R", .
+.PP
+(line   6)
+License Information: see \*(L"License\*(R", .             (line   6)
+.PP
+Lightweight Directory Access Protocol: see \*(L"\s-1LDAP\s0 maps\*(R", .           (line   6)
+.PP
+link, filesystem type: see \*(L"Symbolic Link Filesystem\*(R", .
+.PP
+(line   6)
+linkx, filesystem type: see \*(L"Symbolic Link Filesystem \s-1II\*(R"\s0, .
+.PP
+(line   6)
+Listing currently mounted filesystems: see \*(L"Controlling Amd\*(R", .     (line   6)
+.PP
+local_domain Parameter: see \*(L"local_domain Parameter\*(R", .
+.PP
+(line   6)
+Location format: see \*(L"Location Format\*(R", .     (line   6)
+.PP
+Location lists: see \*(L"Mounting a Volume\*(R", .   (line   6)
+.PP
+locking executable pages in memory: see \*(L"\-S Option\*(R", .           (line   6)
+.PP
+lofs, filesystem type: see \*(L"Loopback Filesystem\*(R", . (line   6)
+.PP
+Log file, resetting: see \*(L"Amq \-l option\*(R", .       (line   6)
+.PP
+Log filename: see \*(L"\-l Option\*(R", .           (line   6)
+.PP
+Log message selection: see \*(L"\-x Option\*(R", .           (line   6)
+.PP
+log, FSinfo filesystems option: see \*(L"FSinfo filesystems log\*(R", .
+.PP
+(line   6)
+log_file Parameter: see \*(L"log_file Parameter\*(R", .  (line   6)
+.PP
+log_options Parameter: see \*(L"log_options Parameter\*(R", .
+.PP
+(line   6)
+Logging options via Amq: see \*(L"Other Amq options\*(R", .   (line   6)
+.PP
+Looking up keys: see \*(L"Key Lookup\*(R", .          (line   6)
+.PP
+Loopback Filesystem: see \*(L"Loopback Filesystem\*(R", . (line   6)
+.PP
+lostaltmail: see \*(L"lostaltmail\*(R", .         (line   6)
+.PP
+lostaltmail.conf\-sample: see \*(L"lostaltmail\*(R", .conf\-sample.
+.PP
+(line   6)
+lostaltmail; configuration file: see \*(L"lostaltmail\*(R", .conf\-sample.
+.PP
+(line   6)
+Mailing list: see \*(L"Distrib\*(R", .             (line  44)
+.PP
+Map cache options: see \*(L"Automount Filesystem\*(R", .
+.PP
+(line   6)
+Map cache synchronizing: see \*(L"Automount Filesystem\*(R", .
+.PP
+(line   6)
+Map cache types: see \*(L"Automount Filesystem\*(R", .
+.PP
+(line   6)
+Map cache, flushing: see \*(L"Amq \-f option\*(R", .       (line   6)
+.PP
+Map defaults: see \*(L"Map Defaults\*(R", .        (line   6)
+.PP
+Map entry format: see \*(L"Location Format\*(R", .     (line   6)
+.PP
+Map lookup: see \*(L"Key Lookup\*(R", .          (line   6)
+.PP
+Map options: see \*(L"Map Options\*(R", .         (line   6)
+.PP
+map Selector Variable: see \*(L"map Selector Variable\*(R", .
+.PP
+(line   6)
+Map types: see \*(L"Map Types\*(R", .           (line   6)
+.PP
+map, mount selector: see \*(L"map Selector Variable\*(R", .
+.PP
+(line   6)
+map_name Parameter: see \*(L"map_name Parameter\*(R", .  (line   6)
+.PP
+map_options Parameter: see \*(L"map_options Parameter\*(R", .
+.PP
+(line   6)
+map_type Parameter: see \*(L"map_type Parameter\*(R", .  (line   6)
+.PP
+maps, FSinfo command line option: see \*(L"\-m FSinfo Option\*(R", .    (line   6)
+.PP
+Memory/RAM Filesystem: see \*(L"\s-1RAM\s0 Filesystem\*(R"\*(L" in \*(R"Memory, .
+.PP
+(line   6)
+mfs, filesystem type: see \*(L"\s-1RAM\s0 Filesystem\*(R"\*(L" in \*(R"Memory, .
+.PP
+(line   6)
+mk-amd-map: see \*(L"mk-amd-map\*(R", .          (line   6)
+.PP
+Mount a filesystem under program control: see \*(L"Program Filesystem\*(R", .
+.PP
+(line   6)
+Mount flags; acdirmax: see \*(L"opts Option\*(R", .         (line  19)
+.PP
+Mount flags; acdirmin: see \*(L"opts Option\*(R", .         (line  22)
+.PP
+Mount flags; acregmax: see \*(L"opts Option\*(R", .         (line  25)
+.PP
+Mount flags; acregmin: see \*(L"opts Option\*(R", .         (line  28)
+.PP
+Mount flags; actimeo: see \*(L"opts Option\*(R", .         (line  31)
+.PP
+Mount flags; auto: see \*(L"opts Option\*(R", .         (line  34)
+.PP
+Mount flags; cache: see \*(L"opts Option\*(R", .         (line  38)
+.PP
+Mount flags; compress: see \*(L"opts Option\*(R", .         (line  41)
+.PP
+Mount flags; defperm: see \*(L"opts Option\*(R", .         (line  44)
+.PP
+Mount flags; dev: see \*(L"opts Option\*(R", .         (line  48)
+.PP
+Mount flags; dumbtimr: see \*(L"opts Option\*(R", .         (line  51)
+.PP
+Mount flags; extatt: see \*(L"opts Option\*(R", .         (line  57)
+.PP
+Mount flags; fsid: see \*(L"opts Option\*(R", .         (line  60)
+.PP
+Mount flags; gens: see \*(L"opts Option\*(R", .         (line  63)
+.PP
+Mount flags; grpid: see \*(L"opts Option\*(R", .         (line  67)
+.PP
+Mount flags; ignore: see \*(L"opts Option\*(R", .         (line  35)
+.PP
+Mount flags; int: see \*(L"opts Option\*(R", .         (line  70)
+.PP
+Mount flags; intr: see \*(L"opts Option\*(R", .         (line  71)
+.PP
+Mount flags; maxgroups: see \*(L"opts Option\*(R", .         (line  77)
+.PP
+Mount flags; multi: see \*(L"opts Option\*(R", .         (line  74)
+.PP
+Mount flags; nfsv3: see \*(L"opts Option\*(R", .         (line  80)
+.PP
+Mount flags; noac: see \*(L"opts Option\*(R", .         (line  83)
+.PP
+Mount flags; noauto: see \*(L"opts Option\*(R", .         (line  86)
+.PP
+Mount flags; nocache: see \*(L"opts Option\*(R", .         (line  91)
+.PP
+Mount flags; noconn: see \*(L"opts Option\*(R", .         (line  94)
+.PP
+Mount flags; nocto: see \*(L"opts Option\*(R", .         (line  97)
+.PP
+Mount flags; nodefperm: see \*(L"opts Option\*(R", .         (line 100)
+.PP
+Mount flags; nodev: see \*(L"opts Option\*(R", .         (line 104)
+.PP
+Mount flags; nodevs: see \*(L"opts Option\*(R", .         (line 105)
+.PP
+Mount flags; noint: see \*(L"opts Option\*(R", .         (line 108)
+.PP
+Mount flags; norrip: see \*(L"opts Option\*(R", .         (line 111)
+.PP
+Mount flags; nosub: see \*(L"opts Option\*(R", .         (line 115)
+.PP
+Mount flags; nosuid: see \*(L"opts Option\*(R", .         (line 118)
+.PP
+Mount flags; nounmount: see \*(L"opts Option\*(R", .         (line 208)
+.PP
+Mount flags; noversion: see \*(L"opts Option\*(R", .         (line 121)
+.PP
+Mount flags; overlay: see \*(L"opts Option\*(R", .         (line 125)
+.PP
+Mount flags; pgthresh: see \*(L"opts Option\*(R", .         (line 128)
+.PP
+Mount flags; ping: see \*(L"opts Option\*(R", .         (line 212)
+.PP
+Mount flags; port: see \*(L"opts Option\*(R", .         (line 131)
+.PP
+Mount flags; posix: see \*(L"opts Option\*(R", .         (line 134)
+.PP
+Mount flags; proto: see \*(L"opts Option\*(R", .         (line 137)
+.PP
+Mount flags; quota: see \*(L"opts Option\*(R", .         (line 140)
+.PP
+Mount flags; rdonly: see \*(L"opts Option\*(R", .         (line 143)
+.PP
+Mount flags; resvport: see \*(L"opts Option\*(R", .         (line 147)
+.PP
+Mount flags; retrans: see \*(L"opts Option\*(R", .         (line 154)
+.PP
+Mount flags; retry: see \*(L"opts Option\*(R", .         (line 160)
+.PP
+Mount flags; retry=N: see \*(L"opts Option\*(R", .         (line 219)
+.PP
+Mount flags; ro: see \*(L"opts Option\*(R", .         (line 144)
+.PP
+Mount flags; rrip: see \*(L"opts Option\*(R", .         (line 163)
+.PP
+Mount flags; rsize: see \*(L"opts Option\*(R", .         (line 167)
+.PP
+Mount flags; rw: see \*(L"opts Option\*(R", .         (line 171)
+.PP
+Mount flags; soft: see \*(L"opts Option\*(R", .         (line 174)
+.PP
+Mount flags; spongy: see \*(L"opts Option\*(R", .         (line 177)
+.PP
+Mount flags; suid: see \*(L"opts Option\*(R", .         (line 180)
+.PP
+Mount flags; symttl: see \*(L"opts Option\*(R", .         (line 183)
+.PP
+Mount flags; sync: see \*(L"opts Option\*(R", .         (line 186)
+.PP
+Mount flags; tcp: see \*(L"opts Option\*(R", .         (line 189)
+.PP
+Mount flags; timeo: see \*(L"opts Option\*(R", .         (line 193)
+.PP
+Mount flags; utimeout=N: see \*(L"opts Option\*(R", .         (line 222)
+.PP
+Mount flags; vers: see \*(L"opts Option\*(R", .         (line 197)
+.PP
+Mount flags; wsize: see \*(L"opts Option\*(R", .         (line 200)
+.PP
+Mount home directories: see \*(L"Home Directories\*(R", .    (line   6)
+.PP
+Mount information: see \*(L"Mount Maps\*(R", .          (line   6)
+.PP
+Mount map option; cache: see \*(L"Automount Filesystem\*(R", .
+.PP
+(line  15)
+Mount map types: see \*(L"Map Types\*(R", .           (line   6)
+.PP
+Mount maps: see \*(L"Mount Maps\*(R", .          (line   6)
+.PP
+Mount option; addopts: see \*(L"addopts Option\*(R", .      (line   6)
+.PP
+Mount option; cachedir: see \*(L"Caching Filesystem\*(R", .  (line  13)
+.PP
+Mount option; delay: see \*(L"delay Option\*(R", .        (line   6)
+.PP
+Mount option; dev <1>: see \*(L"Unix Filesystem\*(R", .     (line  12)
+.PP
+Mount option; dev <2>: see \*(L"Floppy Filesystem\*(R", .   (line  11)
+.PP
+Mount option; dev: see \*(L"CD-ROM Filesystem\*(R", .   (line  11)
+.PP
+Mount option; fs: see \*(L"fs Option\*(R", .           (line   6)
+.PP
+Mount option; mount: see \*(L"Program Filesystem\*(R", .  (line  14)
+.PP
+Mount option; opts: see \*(L"opts Option\*(R", .         (line   6)
+.PP
+Mount option; remopts: see \*(L"remopts Option\*(R", .      (line   6)
+.PP
+Mount option; rfs <1>: see \*(L"Network Filesystem\*(R", .  (line  16)
+.PP
+Mount option; rfs: see \*(L"Loopback Filesystem\*(R", . (line  16)
+.PP
+Mount option; rhost: see \*(L"Network Filesystem\*(R", .  (line  10)
+.PP
+Mount option; sublink: see \*(L"sublink Option\*(R", .      (line   6)
+.PP
+Mount option; type: see \*(L"type Option\*(R", .         (line   6)
+.PP
+Mount option; unmount: see \*(L"Program Filesystem\*(R", .  (line  17)
+.PP
+Mount retries: see \*(L"Mounting a Volume\*(R", .   (line   6)
+.PP
+Mount selector; arch: see \*(L"arch Selector Variable\*(R", .
+.PP
+(line   6)
+Mount selector; autodir: see \*(L"autodir Selector Variable\*(R", .
+.PP
+(line   6)
+Mount selector; byte: see \*(L"byte Selector Variable\*(R", .
+.PP
+(line   6)
+Mount selector; cluster: see \*(L"cluster Selector Variable\*(R", .
+.PP
+(line   6)
+Mount selector; domain: see \*(L"domain Selector Variable\*(R", .
+.PP
+(line   6)
+Mount selector; exists: see \*(L"exists Selector Function\*(R", .
+.PP
+(line   6)
+Mount selector; false: see \*(L"false Selector Function\*(R", .
+.PP
+(line   6)
+Mount selector; full_os: see \*(L"full_os Selector Variable\*(R", .
+.PP
+(line   6)
+Mount selector; host: see \*(L"host Selector Variable\*(R", .
+.PP
+(line   6)
+Mount selector; hostd: see \*(L"hostd Selector Variable\*(R", .
+.PP
+(line   6)
+Mount selector; in_network: see \*(L"in_network Selector Function\*(R", .
+.PP
+(line   6)
+Mount selector; karch: see \*(L"karch Selector Variable\*(R", .
+.PP
+(line   6)
+Mount selector; key: see \*(L"key Selector Variable\*(R", .
+.PP
+(line   6)
+Mount selector; map: see \*(L"map Selector Variable\*(R", .
+.PP
+(line   6)
+Mount selector; netgrp: see \*(L"netgrp Selector Function\*(R", .
+.PP
+(line   6)
+Mount selector; netgrpd: see \*(L"netgrpd Selector Function\*(R", .
+.PP
+(line   6)
+Mount selector; netnumber: see \*(L"netnumber Selector Variable\*(R", .
+.PP
+(line   6)
+Mount selector; network: see \*(L"network Selector Variable\*(R", .
+.PP
+(line   6)
+Mount selector; os: see \*(L"os Selector Variable\*(R", .
+.PP
+(line   6)
+Mount selector; osver: see \*(L"osver Selector Variable\*(R", .
+.PP
+(line   6)
+Mount selector; path: see \*(L"path Selector Variable\*(R", .
+.PP
+(line   6)
+Mount selector; true: see \*(L"true Selector Function\*(R", .
+.PP
+(line   6)
+Mount selector; vendor: see \*(L"vendor Selector Variable\*(R", .
+.PP
+(line   6)
+Mount selector; wire: see \*(L"wire Selector Variable\*(R", .
+.PP
+(line   6)
+mount system call: see \*(L"opts Option\*(R", .         (line   6)
+.PP
+mount system call flags: see \*(L"opts Option\*(R", .         (line   6)
+.PP
+Mount types: see \*(L"Filesystem Types\*(R", .    (line   6)
+.PP
+mount, FSinfo filesystems option: see \*(L"FSinfo filesystems mount\*(R", .
+.PP
+(line   6)
+mount, mount option: see \*(L"Program Filesystem\*(R", .  (line  14)
+.PP
+mount_type Parameter: see \*(L"mount_type Parameter\*(R", .
+.PP
+(line   6)
+Mounting a local disk: see \*(L"Unix Filesystem\*(R", .     (line   6)
+.PP
+Mounting a remote part of the name space if target is missing: see \*(L"NFS-Link Filesystem\*(R", .
+.PP
+(line   6)
+Mounting a \s-1UFS\s0 filesystem: see \*(L"Unix Filesystem\*(R", .     (line   6)
+.PP
+Mounting a volume: see \*(L"Mounting a Volume\*(R", .   (line   6)
+.PP
+Mounting an atomic group of \s-1NFS\s0 filesystems: see \*(L"Network Filesystem Group\*(R", .
+.PP
+(line   6)
+Mounting an existing part of the local name space: see \*(L"Symbolic Link Filesystem \s-1II\*(R"\s0, .
+.PP
+(line   6)
+Mounting an \s-1NFS\s0 filesystem: see \*(L"Network Filesystem\*(R", .  (line   6)
+.PP
+Mounting entire export trees: see \*(L"Network Host Filesystem\*(R", .
+.PP
+(line   6)
+Mounting part of the local name space: see \*(L"Symbolic Link Filesystem\*(R", .
+.PP
+(line   6)
+Mounting user filesystems: see \*(L"User Filesystems\*(R", .    (line   6)
+.PP
+Multiple Amd processes: see \*(L"Amq \-P\-option\*(R", .       (line   6)
+.PP
+Multiple-threaded server: see \*(L"Non-blocking Operation\*(R", .
+.PP
+(line   6)
+Namespace: see \*(L"Volume Binding\*(R", .      (line   6)
+.PP
+ndbm maps: see \*(L"ndbm maps\*(R", .           (line   6)
+.PP
+netgrp Selector Function: see \*(L"netgrp Selector Function\*(R", .
+.PP
+(line   6)
+netgrp, boolean mount selector: see \*(L"netgrp Selector Function\*(R", .
+.PP
+(line   6)
+netgrpd Selector Function: see \*(L"netgrpd Selector Function\*(R", .
+.PP
+(line   6)
+netgrpd, boolean mount selector: see \*(L"netgrpd Selector Function\*(R", .
+.PP
+(line   6)
+netnumber Selector Variable: see \*(L"netnumber Selector Variable\*(R", .
+.PP
+(line   6)
+netnumber, mount selector: see \*(L"netnumber Selector Variable\*(R", .
+.PP
+(line   6)
+Network filesystem group: see \*(L"Network Filesystem Group\*(R", .
+.PP
+(line   6)
+Network host filesystem: see \*(L"Network Host Filesystem\*(R", .
+.PP
+(line   6)
+network Selector Variable: see \*(L"network Selector Variable\*(R", .
+.PP
+(line   6)
+network, mount selector: see \*(L"network Selector Variable\*(R", .
+.PP
+(line   6)
+Network-wide naming: see \*(L"Volume Naming\*(R", .       (line   6)
+.PP
+\&\s-1NFS:\s0 see \*(L"Network Filesystem\*(R", .  (line   6)
+.PP
+\&\s-1NFS\s0 ping: see \*(L"Keep-alives\*(R", .         (line   6)
+.PP
+\&\s-1NFS V.3\s0 support: see \*(L"Supported Platforms\*(R", . (line   6)
+.PP
+nfs, filesystem type: see \*(L"Network Filesystem\*(R", .  (line   6)
+.PP
+NFS-Link filesystem \s-1II:\s0 see \*(L"NFS-Link Filesystem\*(R", . (line   6)
+.PP
+nfs_retransmit_counter Parameter: see \*(L"nfs_retransmit_counter Parameter\*(R", .
+.PP
+(line   6)
+nfs_retry_interval Parameter: see \*(L"nfs_retry_interval Parameter\*(R", .
+.PP
+(line   6)
+nfsl, filesystem type: see \*(L"NFS-Link Filesystem\*(R", . (line   6)
+.PP
+nfsx, filesystem type: see \*(L"Network Filesystem Group\*(R", .
+.PP
+(line   6)
+\&\s-1NIS \s0(\s-1YP\s0) domain name: see \*(L"\-y Option\*(R", .           (line   6)
+.PP
+\&\s-1NIS \s0(\s-1YP\s0) maps: see \*(L"\s-1NIS\s0 maps\*(R", .            (line   6)
+.PP
+\&\s-1NIS+\s0 maps: see \*(L"\s-1NIS+\s0 maps\*(R", .           (line   6)
+.PP
+nis_domain Parameter: see \*(L"nis_domain Parameter\*(R", .
+.PP
+(line   6)
+Nodes generated on a restart: see \*(L"Inheritance Filesystem\*(R", .
+.PP
+(line   6)
+Non-blocking operation: see \*(L"Non-blocking Operation\*(R", .
+.PP
+(line   6)
+normalize_hostnames Parameter: see \*(L"normalize_hostnames Parameter\*(R", .
+.PP
+(line   6)
+Normalizing hostnames: see \*(L"\-n Option\*(R", .           (line   6)
+.PP
+Null Filesystem: see \*(L"Null Filesystem\*(R", .     (line   6)
+.PP
+nullfs, filesystem type: see \*(L"Null Filesystem\*(R", .     (line   6)
+.PP
+Obtaining the source code: see \*(L"Distrib\*(R", .             (line   6)
+.PP
+Operating System name: see \*(L"\-O\-Option\*(R", .           (line   6)
+.PP
+Operating System version: see \*(L"\-o Option\*(R", .           (line   6)
+.PP
+Operational principles: see \*(L"Operational Principles\*(R", .
+.PP
+(line   6)
+opts, FSinfo filesystems option: see \*(L"FSinfo filesystems opts\*(R", .
+.PP
+(line   6)
+opts, mount option: see \*(L"opts Option\*(R", .         (line   6)
+.PP
+os Parameter: see \*(L"os Parameter\*(R", .        (line   6)
+.PP
+os Selector Variable: see \*(L"os Selector Variable\*(R", .
+.PP
+(line   6)
+os, FSinfo host attribute: see \*(L"FSinfo host os\*(R", .      (line   6)
+.PP
+os, mount selector: see \*(L"os Selector Variable\*(R", .
+.PP
+(line   6)
+osver Parameter: see \*(L"osver Parameter\*(R", .     (line   6)
+.PP
+osver Selector Variable: see \*(L"osver Selector Variable\*(R", .
+.PP
+(line   6)
+osver, mount selector: see \*(L"osver Selector Variable\*(R", .
+.PP
+(line   6)
+Overriding defaults on the command line: see \*(L"Amd Command Line Options\*(R", .
+.PP
+(line   6)
+Overriding or adding options to a mount: see \*(L"addopts Option\*(R", .    (line   6)
+.PP
+Overriding the default mount point: see \*(L"fs Option\*(R", .           (line   6)
+.PP
+Overriding the local domain name: see \*(L"\-d Option\*(R", .           (line   6)
+.PP
+Overriding the \s-1NIS \s0(\s-1YP\s0) domain name: see \*(L"\-y Option\*(R", .           (line   6)
+.PP
+Passing parameters to the mount system call: see \*(L"opts Option\*(R", .   (line   6)
+.PP
+passno, FSinfo filesystems option: see \*(L"FSinfo filesystems passno\*(R", .
+.PP
+(line   6)
+Password file maps: see \*(L"Password maps\*(R", .       (line   6)
+.PP
+path Selector Variable: see \*(L"path Selector Variable\*(R", .
+.PP
+(line   6)
+path, mount selector: see \*(L"path Selector Variable\*(R", .
+.PP
+(line   6)
+Pathname operators: see \*(L"Variable Expansion\*(R", .  (line   6)
+.PP
+pawd: see \*(L"pawd\*(R", .                (line   6)
+.PP
+pcfs, filesystem type: see \*(L"Floppy Filesystem\*(R", .   (line   6)
+.PP
+Picking up existing mounts: see \*(L"\-r Option\*(R", .           (line   6)
+.PP
+pid file, creating with \-p option: see \*(L"\-p Option\*(R", .           (line   6)
+.PP
+\&\s-1PID\s0; Amd: see \*(L"Amq \-p option\*(R", .       (line   6)
+.PP
+pid_file Parameter: see \*(L"pid_file Parameter\*(R", .  (line   6)
+.PP
+plock Parameter: see \*(L"plock Parameter\*(R", .     (line   6)
+.PP
+plock; using: see \*(L"\-S Option\*(R", .           (line   6)
+.PP
+portmap_program Parameter: see \*(L"portmap_program Parameter\*(R", .
+.PP
+(line   6)
+Primary server: see \*(L"delay Option\*(R", .        (line   6)
+.PP
+print_pid Parameter: see \*(L"print_pid Parameter\*(R", . (line   6)
+.PP
+print_version Parameter: see \*(L"print_version Parameter\*(R", .
+.PP
+(line   6)
+Process id: see \*(L"\-p Option\*(R", .           (line   6)
+.PP
+process id of Amd daemon: see \*(L"\-p Option\*(R", .           (line   6)
+.PP
+Process \s-1ID\s0; Amd: see \*(L"Amq \-p option\*(R", .       (line   6)
+.PP
+Program filesystem: see \*(L"Program Filesystem\*(R", .  (line   6)
+.PP
+program, filesystem type: see \*(L"Program Filesystem\*(R", .  (line   6)
+.PP
+Querying an alternate host: see \*(L"Amq \-h option\*(R", .       (line   6)
+.PP
+quiet, FSinfo command line option: see \*(L"\-q FSinfo Option\*(R", .    (line   6)
+.PP
+Referencing an existing part of the local name space: see \*(L"Symbolic Link Filesystem \s-1II\*(R"\s0, .
+.PP
+(line   6)
+Referencing an existing part of the name space if target exists: see \*(L"NFS-Link Filesystem\*(R", .
+.PP
+(line   6)
+Referencing part of the local name space: see \*(L"Symbolic Link Filesystem\*(R", .
+.PP
+(line   6)
+Regular expressions in maps: see \*(L"Automount Filesystem\*(R", .
+.PP
+(line   6)
+remopts, mount option: see \*(L"remopts Option\*(R", .      (line   6)
+.PP
+Replacement volumes: see \*(L"Volume Naming\*(R", .       (line   6)
+.PP
+Replicated volumes: see \*(L"Volume Naming\*(R", .       (line   6)
+.PP
+Resetting the Amd log file: see \*(L"Amq \-l option\*(R", .       (line   6)
+.PP
+Resolving aliased hostnames: see \*(L"\-n Option\*(R", .           (line   6)
+.PP
+restart_mounts Parameter: see \*(L"restart_mounts Parameter\*(R", .
+.PP
+(line   6)
+Restarting Amd: see \*(L"Restarting Amd\*(R", .      (line   6)
+.PP
+Restarting existing mounts: see \*(L"\-r Option\*(R", .           (line   6)
+.PP
+rfs, mount option <1>: see \*(L"Loopback Filesystem\*(R", . (line  16)
+.PP
+rfs, mount option: see \*(L"Network Filesystem\*(R", .  (line  16)
+.PP
+rhost, mount option: see \*(L"Network Filesystem\*(R", .  (line  10)
+.PP
+Root filesystem: see \*(L"Root Filesystem\*(R", .     (line   6)
+.PP
+root, filesystem type: see \*(L"Root Filesystem\*(R", .     (line   6)
+.PP
+\&\s-1RPC\s0 Program numbers; Amd: see \*(L"Amq \-P\-option\*(R", .       (line   6)
+.PP
+\&\s-1RPC\s0 retries: see \*(L"Non-blocking Operation\*(R", .
+.PP
+(line   6)
+Run-time administration: see \*(L"Run-time Administration\*(R", .
+.PP
+(line   6)
+Running multiple Amd: see \*(L"Amq \-P\-option\*(R", .       (line   6)
+.PP
+rwho servers: see \*(L"rwho servers\*(R", .        (line   6)
+.PP
+search_path Parameter: see \*(L"search_path Parameter\*(R", .
+.PP
+(line   6)
+Secondary server: see \*(L"delay Option\*(R", .        (line   6)
+.PP
+sel, FSinfo mount option: see \*(L"FSinfo filesystems mount\*(R", .
+.PP
+(line   6)
+Selecting specific log messages: see \*(L"\-x Option\*(R", .           (line   6)
+.PP
+Selector; arch: see \*(L"arch Selector Variable\*(R", .
+.PP
+(line   6)
+Selector; autodir: see \*(L"autodir Selector Variable\*(R", .
+.PP
+(line   6)
+Selector; byte: see \*(L"byte Selector Variable\*(R", .
+.PP
+(line   6)
+Selector; cluster: see \*(L"cluster Selector Variable\*(R", .
+.PP
+(line   6)
+Selector; domain: see \*(L"domain Selector Variable\*(R", .
+.PP
+(line   6)
+Selector; exists: see \*(L"exists Selector Function\*(R", .
+.PP
+(line   6)
+Selector; false: see \*(L"false Selector Function\*(R", .
+.PP
+(line   6)
+Selector; full_os: see \*(L"full_os Selector Variable\*(R", .
+.PP
+(line   6)
+Selector; host: see \*(L"host Selector Variable\*(R", .
+.PP
+(line   6)
+Selector; hostd: see \*(L"hostd Selector Variable\*(R", .
+.PP
+(line   6)
+Selector; in_network: see \*(L"in_network Selector Function\*(R", .
+.PP
+(line   6)
+Selector; karch: see \*(L"karch Selector Variable\*(R", .
+.PP
+(line   6)
+Selector; key: see \*(L"key Selector Variable\*(R", .
+.PP
+(line   6)
+Selector; map: see \*(L"map Selector Variable\*(R", .
+.PP
+(line   6)
+Selector; netgrp: see \*(L"netgrp Selector Function\*(R", .
+.PP
+(line   6)
+Selector; netgrpd: see \*(L"netgrpd Selector Function\*(R", .
+.PP
+(line   6)
+Selector; netnumber: see \*(L"netnumber Selector Variable\*(R", .
+.PP
+(line   6)
+Selector; network: see \*(L"network Selector Variable\*(R", .
+.PP
+(line   6)
+Selector; os: see \*(L"os Selector Variable\*(R", .
+.PP
+(line   6)
+Selector; osver: see \*(L"osver Selector Variable\*(R", .
+.PP
+(line   6)
+Selector; path: see \*(L"path Selector Variable\*(R", .
+.PP
+(line   6)
+Selector; true: see \*(L"true Selector Function\*(R", .
+.PP
+(line   6)
+Selector; vendor: see \*(L"vendor Selector Variable\*(R", .
+.PP
+(line   6)
+Selector; wire: see \*(L"wire Selector Variable\*(R", .
+.PP
+(line   6)
+Selectors: see \*(L"Selectors\*(R", .           (line   6)
+.PP
+selectors on default: see \*(L"defaults with selectors\*(R"\*(L" in \*(R", .
+.PP
+(line   6)
+selectors_on_default Parameter: see \*(L"selectors_on_default Parameter\*(R", .
+.PP
+(line   6)
+Server crashes: see \*(L"Keep-alives\*(R", .         (line   6)
+.PP
+Setting a delay on a mount location: see \*(L"delay Option\*(R", .        (line   6)
+.PP
+Setting additional options on a mount location: see \*(L"addopts Option\*(R", .
+.PP
+(line   6)
+Setting Amd's \s-1RPC\s0 parameters: see \*(L"\-t Option\*(R", .           (line   6)
+.PP
+Setting debug flags: see \*(L"\-D\-Option\*(R", .           (line   6)
+.PP
+Setting default map parameters: see \*(L"Map Defaults\*(R", .        (line   6)
+.PP
+Setting map cache parameters: see \*(L"Automount Filesystem\*(R", .
+.PP
+(line   6)
+Setting map options: see \*(L"Map Options\*(R", .         (line   6)
+.PP
+Setting system mount options: see \*(L"opts Option\*(R", .         (line   6)
+.PP
+Setting system mount options for non-local networks: see \*(L"remopts Option\*(R", .
+.PP
+(line   6)
+Setting the Amd log file via Amq: see \*(L"Amq \-l option\*(R", .       (line   6)
+.PP
+Setting the cluster name: see \*(L"\-C\-Option\*(R", .           (line   6)
+.PP
+Setting the default mount directory: see \*(L"\-a Option\*(R", .           (line   6)
+.PP
+Setting the filesystem type option: see \*(L"type Option\*(R", .         (line   6)
+.PP
+Setting the interval before a filesystem times out: see \*(L"\-c Option\*(R", .
+.PP
+(line   6)
+Setting the interval between unmount attempts: see \*(L"\-w Option\*(R", .   (line   6)
+.PP
+Setting the Kernel architecture: see \*(L"\-k Option\*(R", .           (line   6)
+.PP
+Setting the local domain name: see \*(L"\-d Option\*(R", .           (line   6)
+.PP
+Setting the local mount point: see \*(L"fs Option\*(R", .           (line   6)
+.PP
+Setting the log file: see \*(L"\-l Option\*(R", .           (line   6)
+.PP
+Setting the \s-1NIS \s0(\s-1YP\s0) domain name: see \*(L"\-y Option\*(R", .           (line   6)
+.PP
+Setting the Operating System name: see \*(L"\-O\-Option\*(R", .           (line   6)
+.PP
+Setting the Operating System version: see \*(L"\-o Option\*(R", .           (line   6)
+.PP
+Setting the sublink option: see \*(L"sublink Option\*(R", .      (line   6)
+.PP
+shared libraries: see \*(L"Supported Platforms\*(R", . (line   6)
+.PP
+Shared Memory and Swap Filesystem: see \*(L"Shared Memory+Swap Filesystem\*(R", .
+.PP
+(line   6)
+Sharing a fileserver between architectures: see \*(L"Architecture Sharing\*(R", .
+.PP
+(line   6)
+show_statfs_entries Parameter: see \*(L"show_statfs_entries Parameter\*(R", .
+.PP
+(line   6)
+\&\s-1SIGHUP\s0 signal: see \*(L"Automount Filesystem\*(R", .
+.PP
+(line   6)
+\&\s-1SIGINT\s0 signal: see \*(L"Stopping Amd\*(R", .        (line   6)
+.PP
+\&\s-1SIGTERM\s0 signal: see \*(L"Stopping Amd\*(R", .        (line   6)
+.PP
+Single-Host Mail Spool Directory: see \*(L"Single-Host Mail Spool Directory\*(R", .
+.PP
+(line   6)
+Source code distribution: see \*(L"Distrib\*(R", .             (line   6)
+.PP
+Starting Amd: see \*(L"Starting Amd\*(R", .        (line   6)
+.PP
+Statically mounts filesystems, FSinfo: see \*(L"FSinfo static mounts\*(R", .
+.PP
+(line   6)
+Statistics: see \*(L"Amq \-s option\*(R", .       (line   6)
+.PP
+Stopping Amd: see \*(L"Stopping Amd\*(R", .        (line   6)
+.PP
+Stripping the local domain name: see \*(L"Variable Expansion\*(R", .  (line   6)
+.PP
+sublink: see \*(L"Filesystems and Volumes\*(R", .
+.PP
+(line   6)
+sublink, mount option: see \*(L"sublink Option\*(R", .      (line   6)
+.PP
+Supported Platforms: see \*(L"Supported Platforms\*(R", . (line   6)
+.PP
+Symbolic link filesystem: see \*(L"Symbolic Link Filesystem\*(R", .
+.PP
+(line   6)
+Symbolic link filesystem \s-1II:\s0 see \*(L"Symbolic Link Filesystem \s-1II\*(R"\s0, .
+.PP
+(line   6)
+Symlink if target exists, \s-1NFS\s0 otherwise: see \*(L"NFS-Link Filesystem\*(R", .
+.PP
+(line   6)
+symlink, link filesystem type: see \*(L"Symbolic Link Filesystem\*(R", .
+.PP
+(line   6)
+symlink, linkx filesystem type: see \*(L"Symbolic Link Filesystem \s-1II\*(R"\s0, .
+.PP
+(line   6)
+symlink, nfsl filesystem type: see \*(L"NFS-Link Filesystem\*(R", . (line   6)
+.PP
+Synchronizing the map cache: see \*(L"Automount Filesystem\*(R", .
+.PP
+(line   6)
+syslog: see \*(L"\-l Option\*(R", .           (line   6)
+.PP
+syslog facility; specifying an alternate: see \*(L"\-l Option\*(R", .        (line  13)
+.PP
+syslog priorities: see \*(L"\-x Option\*(R", .           (line   6)
+.PP
+tag Parameter: see \*(L"tag Parameter\*(R", .       (line   6)
+.PP
+Tags for Amd configuration file: see \*(L"\-T\-Option\*(R", .           (line   6)
+.PP
+\&\s-1TCP\s0; using with Amq: see \*(L"Amq \-T option\*(R", .       (line   6)
+.PP
+tfs, filesystem type: see \*(L"Translucent Filesystem\*(R", .
+.PP
+(line   6)
+The mount system call: see \*(L"opts Option\*(R", .         (line   6)
+.PP
+tmpfs, filesystem type: see \*(L"Shared Memory+Swap Filesystem\*(R", .
+.PP
+(line   6)
+Top level filesystem: see \*(L"Top-level Filesystem\*(R", .
+.PP
+(line   6)
+toplvl, filesystem type: see \*(L"Top-level Filesystem\*(R", .
+.PP
+(line   6)
+Translucent Filesystem: see \*(L"Translucent Filesystem\*(R", .
+.PP
+(line   6)
+true Selector Function: see \*(L"true Selector Function\*(R", .
+.PP
+(line   6)
+true, boolean mount selector: see \*(L"true Selector Function\*(R", .
+.PP
+(line   6)
+type, mount option: see \*(L"type Option\*(R", .         (line   6)
+.PP
+Types of configuration map: see \*(L"Map Types\*(R", .           (line   6)
+.PP
+Types of filesystem: see \*(L"Filesystem Types\*(R", .    (line   6)
+.PP
+Types of mount map: see \*(L"Map Types\*(R", .           (line   6)
+.PP
+\&\s-1UDP\s0; using with Amq: see \*(L"Amq \-U\-option\*(R", .       (line   6)
+.PP
+\&\s-1UFS:\s0 see \*(L"Unix Filesystem\*(R", .     (line   6)
+.PP
+ufs, filesystem type: see \*(L"Unix Filesystem\*(R", .     (line   6)
+.PP
+umapfs, filesystem type: see \*(L"User \s-1ID\s0 Mapping Filesystem\*(R", .
+.PP
+(line   6)
+Union file maps: see \*(L"Union maps\*(R", .          (line   6)
+.PP
+Union filesystem: see \*(L"Union Filesystem\*(R", .    (line   6)
+.PP
+union, filesystem type: see \*(L"Union Filesystem\*(R", .    (line   6)
+.PP
+Unix filesystem: see \*(L"Unix Filesystem\*(R", .     (line   6)
+.PP
+Unix namespace: see \*(L"Volume Binding\*(R", .      (line   6)
+.PP
+unmount attempt backoff interval: see \*(L"\-w Option\*(R", .           (line   6)
+.PP
+unmount, mount option: see \*(L"Program Filesystem\*(R", .  (line  17)
+.PP
+unmount_on_exit Parameter: see \*(L"unmount_on_exit Parameter\*(R", .
+.PP
+(line   6)
+Unmounting a filesystem: see \*(L"Amq \-u option\*(R", .       (line   6)
+.PP
+User filesystems: see \*(L"User Filesystems\*(R", .    (line   6)
+.PP
+User \s-1ID\s0 Mapping Filesystem: see \*(L"User \s-1ID\s0 Mapping Filesystem\*(R", .
+.PP
+(line   6)
+User maps, automatic generation: see \*(L"Password maps\*(R", .       (line   6)
+.PP
+Using FSinfo: see \*(L"Using FSinfo\*(R", .        (line   6)
+.PP
+Using Hlfsd: see \*(L"Using Hlfsd\*(R", .         (line   6)
+.PP
+Using syslog to log errors: see \*(L"\-l Option\*(R", .           (line   6)
+.PP
+Using the password file as a map: see \*(L"Password maps\*(R", .       (line   6)
+.PP
+Variable expansion: see \*(L"Variable Expansion\*(R", .  (line   6)
+.PP
+vendor Parameter: see \*(L"vendor Parameter\*(R", .    (line   6)
+.PP
+vendor Selector Variable: see \*(L"vendor Selector Variable\*(R", .
+.PP
+(line   6)
+vendor, mount selector: see \*(L"vendor Selector Variable\*(R", .
+.PP
+(line   6)
+verbose, FSinfo command line option: see \*(L"\-v FSinfo Option\*(R", .    (line   6)
+.PP
+Version information: see \*(L"\-v Option\*(R", .           (line   6)
+.PP
+Version information at run-time: see \*(L"Amq \-v option\*(R", .       (line   6)
+.PP
+volname, FSinfo mount option: see \*(L"FSinfo filesystems mount\*(R", .
+.PP
+(line   6)
+Volume: see \*(L"Filesystems and Volumes\*(R", .
+.PP
+(line   6)
+Volume binding: see \*(L"Volume Binding\*(R", .      (line   6)
+.PP
+Volume names: see \*(L"Volume Naming\*(R", .       (line   6)
+.PP
+wait4amd: see \*(L"wait4amd\*(R", .            (line   6)
+.PP
+wait4amd2die: see \*(L"wait4amd2die\*(R", .        (line   6)
+.PP
+Why Deliver Into the Home Directory?: see \*(L"Why Deliver Into the Home Directory?\*(R", .
+.PP
+(line   6)
+Wildcards in maps: see \*(L"Key Lookup\*(R", .          (line   6)
+.PP
+wire Selector Variable: see \*(L"wire Selector Variable\*(R", .
+.PP
+(line   6)
+wire, mount selector: see \*(L"wire Selector Variable\*(R", .
+.PP
+(line   6)
+wire-test: see \*(L"wire-test\*(R", .           (line   6)
+.PP
+\&\s-1XFS:\s0 see \*(L"Unix Filesystem\*(R", .     (line   6)
+.PP
+xfs, filesystem type: see \*(L"Unix Filesystem\*(R", .     (line   6)
+.PP
+\&\s-1YP\s0 domain name: see \*(L"\-y Option\*(R", .           (line   6)
diff --git a/usr.sbin/amd/doc/Makefile b/usr.sbin/amd/doc/Makefile
deleted file mode 100644 (file)
index a36fb61..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-#      This file is under a "BSD" copyright (c) by David O'Brien 1998.
-
-# $FreeBSD: src/usr.sbin/amd/doc/Makefile,v 1.10 1999/08/28 01:15:14 peter Exp $
-# $DragonFly: src/usr.sbin/amd/doc/Makefile,v 1.2 2003/06/17 04:29:52 dillon Exp $
-
-INFO=  am-utils
-
-INFOSECTION=   "AMD Documentation"
-INFOENTRY=     "* Am-utils: (am-utils).        The Amd automounter suite of utilities"
-
-MAKEINFOFLAGS+=        -I ${.CURDIR}/../../../contrib/amd/doc
-
-.PATH: ${.CURDIR}/../../../contrib/amd/doc
-
-.include <bsd.info.mk>