3fa88dec7f
most common cd9660 and nfs options like God intended them. (It is now possible to say mount -o ro,soft,bg,intr there:/foo/bar /foo/bar again.) This whole getmntopt() business is an incredible botch; it never should have been anything more than a wrapper around getsubopt(3). Because if the way the current hackaround is implemented, options which take arguments (like the old `rsize' and `wsize') are still unavailable, and must be accessed the new, broken way. (It's unimaginable how Berkeley managed to screw up one of the few things about NFS that Sun actually got right to begin with!)
175 lines
4.7 KiB
Groff
175 lines
4.7 KiB
Groff
.\" Copyright (c) 1994
|
|
.\" The Regents of the University of California. All rights reserved.
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\" 3. All advertising materials mentioning features or use of this software
|
|
.\" must display the following acknowledgement:
|
|
.\" This product includes software developed by the University of
|
|
.\" California, Berkeley and its contributors.
|
|
.\" 4. Neither the name of the University nor the names of its contributors
|
|
.\" may be used to endorse or promote products derived from this software
|
|
.\" without specific prior written permission.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
.\" SUCH DAMAGE.
|
|
.\"
|
|
.\" @(#)getmntopts.3 8.1 (Berkeley) 3/27/94
|
|
.\"
|
|
.Dd March 27, 1994
|
|
.Dt GETMNTOPTS 3
|
|
.Os BSD 4.4
|
|
.Sh NAME
|
|
.Nm getmntopts
|
|
.Nd scan mount options
|
|
.Sh SYNOPSIS
|
|
.Fd #include <mntopts.h>
|
|
.Ft void
|
|
.Fn getmntopts "char *options" "struct mntopt *mopts" "int *flagp" "int *altflagp"
|
|
.Sh DESCRIPTION
|
|
The
|
|
.Nm getmntopts
|
|
function takes a comma separated option list and a list
|
|
of valid option names, and computes the bitmask
|
|
corresponding to the requested set of options.
|
|
.Pp
|
|
The string
|
|
.Dv options
|
|
is broken down into a sequence of comma separated tokens.
|
|
Each token is looked up in the table described by
|
|
.Dv mopts
|
|
and the bits in
|
|
the word referenced by either
|
|
.Dv flagp
|
|
or
|
|
.Dv altflagp
|
|
(depending on the
|
|
.Dv m_altloc
|
|
field of the option's table entry)
|
|
are updated.
|
|
The flag word is not initialized by
|
|
.Nm getmntopt .
|
|
The table,
|
|
.Dv mopts ,
|
|
has the following format:
|
|
.Bd -literal
|
|
struct mntopt {
|
|
char *m_option; /* option name */
|
|
int m_inverse; /* is this a negative option, eg "dev" */
|
|
int m_flag; /* bit to set, eg MNT_RDONLY */
|
|
int m_altloc; /* non-zero to use altflagp rather than flagp */
|
|
};
|
|
.Ed
|
|
.Pp
|
|
The members of this structure are:
|
|
.Bl -tag -width m_inverse
|
|
.It Fa m_option
|
|
the option name,
|
|
for example
|
|
.Dq suid .
|
|
.It Fa m_inverse
|
|
tells
|
|
.Nm getmntopts
|
|
that the name has the inverse meaning of the
|
|
bit.
|
|
For example,
|
|
.Dq suid
|
|
is the string, whereas the
|
|
mount flag is
|
|
.Dv MNT_NOSUID .
|
|
In this case, the sense of the string and the flag
|
|
are inverted, so the
|
|
.Dv m_inverse
|
|
flag should be set.
|
|
.It Fa m_flag
|
|
the value of the bit to be set or cleared in
|
|
the flag word when the option is recognized.
|
|
The bit is set when the option is discovered,
|
|
but cleared if the option name was preceded
|
|
by the letters
|
|
.Dq no .
|
|
The
|
|
.Dv m_inverse
|
|
flag causes these two operations to be reversed.
|
|
.It Fa m_altloc
|
|
the bit should be set or cleared in
|
|
.Dv altflagp
|
|
rather than
|
|
.Dv flagp .
|
|
.El
|
|
.Pp
|
|
Each of the user visible
|
|
.Dv MNT_
|
|
flags has a corresponding
|
|
.Dv MOPT_
|
|
macro which defines an appropriate
|
|
.Li "struct mntopt"
|
|
entry.
|
|
To simplify the program interface and ensure consistency across all
|
|
programs, a general purpose macro,
|
|
.Dv MOPT_STDOPTS ,
|
|
is defined which
|
|
contains an entry for all the generic VFS options.
|
|
In addition, the macros
|
|
.Dv MOPT_FORCE
|
|
and
|
|
.Dv MOPT_UPDATE
|
|
exist to enable the
|
|
.Dv MNT_FORCE
|
|
and
|
|
.Dv MNT_UPDATE
|
|
flags to be set.
|
|
Finally, the table must be terminated by an entry with a NULL
|
|
first element.
|
|
.Sh EXAMPLES
|
|
Most commands will use the standard option set.
|
|
Local filesystems which support the
|
|
.Dv MNT_UPDATE
|
|
flag, would also have an
|
|
.Dv MOPT_UPDATE
|
|
entry.
|
|
This can be declared and used as follows:
|
|
.Bd -literal
|
|
#include "mntopts.h"
|
|
|
|
struct mntopt mopts[] = {
|
|
MOPT_STDOPTS,
|
|
MOPT_UPDATE,
|
|
{ NULL }
|
|
};
|
|
|
|
...
|
|
mntflags = 0;
|
|
...
|
|
getmntopts(options, mopts, &mntflags)
|
|
...
|
|
.Ed
|
|
.Sh DIAGNOSTICS
|
|
The
|
|
.Nm getmntopts
|
|
function displays an error message and exits if an
|
|
unrecognized option is encountered.
|
|
.Sh SEE ALSO
|
|
.Xr err 3 ,
|
|
.Xr mount 8
|
|
.Sh HISTORY
|
|
The
|
|
.Fn getmntopts
|
|
function appeared in
|
|
.Bx 4.4 .
|