1.\" Copyright (c) 1994 2.\" The Regents of the University of California. All rights reserved. 3.\" 4.\" %sccs.include.redist.roff% 5.\" 6.\" @(#)getmntopts.3 8.3 (Berkeley) 03/30/95 7.\" 8.Dd 9.Dt GETMNTOPTS 3 10.Os BSD 4.4 11.Sh NAME 12.Nm getmntopts 13.Nd scan mount options 14.Sh SYNOPSIS 15.Fd #include <mntopts.h> 16.Ft void 17.Fn getmntopts "char *options" "struct mntopt *mopts" "int *flagp" "int *altflagp" 18.Sh DESCRIPTION 19The 20.Nm getmntopts 21function takes a comma separated option list and a list 22of valid option names, and computes the bitmask 23corresponding to the requested set of options. 24.Pp 25The string 26.Dv options 27is broken down into a sequence of comma separated tokens. 28Each token is looked up in the table described by 29.Dv mopts 30and the bits in 31the word referenced by either 32.Dv flagp 33or 34.Dv altflagp 35(depending on the 36.Dv m_altloc 37field of the option's table entry) 38are updated. 39The flag words are not initialized by 40.Nm getmntopt . 41The table, 42.Dv mopts , 43has the following format: 44.Bd -literal 45struct mntopt { 46 char *m_option; /* option name */ 47 int m_inverse; /* is this a negative option, eg "dev" */ 48 int m_flag; /* bit to set, eg MNT_RDONLY */ 49 int m_altloc; /* non-zero to use altflagp rather than flagp */ 50}; 51.Ed 52.Pp 53The members of this structure are: 54.Bl -tag -width m_inverse 55.It Fa m_option 56the option name, 57for example 58.Dq suid . 59.It Fa m_inverse 60tells 61.Nm getmntopts 62that the name has the inverse meaning of the 63bit. 64For example, 65.Dq suid 66is the string, whereas the 67mount flag is 68.Dv MNT_NOSUID . 69In this case, the sense of the string and the flag 70are inverted, so the 71.Dv m_inverse 72flag should be set. 73.It Fa m_flag 74the value of the bit to be set or cleared in 75the flag word when the option is recognized. 76The bit is set when the option is discovered, 77but cleared if the option name was preceded 78by the letters 79.Dq no . 80The 81.Dv m_inverse 82flag causes these two operations to be reversed. 83.It Fa m_altloc 84the bit should be set or cleared in 85.Dv altflagp 86rather than 87.Dv flagp . 88.El 89.Pp 90Each of the user visible 91.Dv MNT_ 92flags has a corresponding 93.Dv MOPT_ 94macro which defines an appropriate 95.Li "struct mntopt" 96entry. 97To simplify the program interface and ensure consistency across all 98programs, a general purpose macro, 99.Dv MOPT_STDOPTS , 100is defined which 101contains an entry for all the generic VFS options. 102In addition, the macros 103.Dv MOPT_FORCE 104and 105.Dv MOPT_UPDATE 106exist to enable the 107.Dv MNT_FORCE 108and 109.Dv MNT_UPDATE 110flags to be set. 111Finally, the table must be terminated by an entry with a NULL 112first element. 113.Sh EXAMPLES 114Most commands will use the standard option set. 115Local filesystems which support the 116.Dv MNT_UPDATE 117flag, would also have an 118.Dv MOPT_UPDATE 119entry. 120This can be declared and used as follows: 121.Bd -literal 122#include "mntopts.h" 123 124struct mntopt mopts[] = { 125 MOPT_STDOPTS, 126 MOPT_UPDATE, 127 { NULL } 128}; 129 130 ... 131 mntflags = mntaltflags = 0; 132 ... 133 getmntopts(options, mopts, &mntflags, &mntaltflags); 134 ... 135.Ed 136.Sh DIAGNOSTICS 137If the external integer variable 138.Dv getmnt_silent 139is non-zero then the 140.Nm getmntopts 141function displays an error message and exits if an 142unrecognized option is encountered. 143By default 144.Dv getmnt_silent 145is zero. 146.Sh SEE ALSO 147.Xr err 3 , 148.Xr mount 8 149.Sh HISTORY 150The 151.Fn getmntopts 152function appeared in 153.Bx 4.4 . 154