| Top |
| int | mnt_optstr_append_option () |
| int | mnt_optstr_apply_flags () |
| int | mnt_optstr_deduplicate_option () |
| int | mnt_optstr_get_flags () |
| int | mnt_optstr_get_option () |
| int | mnt_optstr_get_options () |
| int | mnt_optstr_next_option () |
| int | mnt_optstr_prepend_option () |
| int | mnt_optstr_remove_option () |
| int | mnt_optstr_set_option () |
| int | mnt_split_optstr () |
| int | mnt_match_options () |
This is a simple and low-level API to working with mount options that are stored in a string.
int mnt_optstr_append_option (char **optstr,const char *name,const char *value);
int mnt_optstr_apply_flags (char **optstr,unsigned long flags,const struct libmnt_optmap *map);
mnt_optstr_apply_flags is deprecated and should not be used in newly-written code.
since v2.39.
Removes/adds options to the optstr
according to flags. For example:
MS_NOATIME and "foo,bar,noexec" --returns-> "foo,bar,noatime"
int mnt_optstr_deduplicate_option (char **optstr,const char *name);
Removes all instances of name
except the last one.
int mnt_optstr_get_flags (const char *optstr,unsigned long *flags,const struct libmnt_optmap *map);
Returns in flags
IDs of options from optstr
as defined in the map
.
For example:
"bind,exec,foo,bar" --returns-> MS_BIND
"bind,noexec,foo,bar" --returns-> MS_BIND|MS_NOEXEC
Note that flags
are not zeroized by this function! This function sets/unsets
bits in the flags
only.
int mnt_optstr_get_option (const char *optstr,const char *name,char **value,size_t *valsz);
int mnt_optstr_get_options (const char *optstr,char **subset,const struct libmnt_optmap *map,int ignore);
Extracts options from optstr
that belong to the map
, for example:
mnt_optstr_get_options(optstr, &p, mnt_get_builtin_optmap(MNT_LINUX_MAP), MNT_NOMTAB);
the 'p' returns all VFS options, the options that do not belong to mtab are ignored.
int mnt_optstr_next_option (char **optstr,char **name,size_t *namesz,char **value,size_t *valuesz);
Parses the first option in optstr
.
int mnt_optstr_prepend_option (char **optstr,const char *name,const char *value);
int mnt_optstr_set_option (char **optstr,const char *name,const char *value);
Set or unset the option value
.
int mnt_split_optstr (const char *optstr,char **user,char **vfs,char **fs,int ignore_user,int ignore_vfs);
For example:
mnt_split_optstr(optstr, &u, NULL, NULL, MNT_NOMTAB, 0);
returns all userspace options, the options that do not belong to mtab are ignored.
Note that FS options are all options that are undefined in MNT_USERSPACE_MAP or MNT_LINUX_MAP.
optstr |
string with comma separated list of options |
|
user |
returns newly allocated string with userspace options |
|
vfs |
returns newly allocated string with VFS options |
|
fs |
returns newly allocated string with FS options |
|
ignore_user |
option mask for options that should be ignored |
|
ignore_vfs |
option mask for options that should be ignored |
int mnt_match_options (const char *optstr,const char *pattern);
The "no" could be used for individual items in the options
list. The "no"
prefix does not have a global meaning.
Unlike fs type matching, nonetdev,user and nonetdev,nouser have DIFFERENT meanings; each option is matched explicitly as specified.
The "no" prefix interpretation could be disabled by the "+" prefix, for example
"+noauto" matches if optstr
literally contains the "noauto" string.
The alone "no" is error and all matching ends with False.
"xxx,yyy,zzz" : "nozzz" -> False
"xxx,yyy,zzz" : "xxx,noeee" -> True
"bar,zzz" : "nofoo" -> True (does not contain "foo")
"nofoo,bar" : "nofoo" -> True (does not contain "foo")
"nofoo,bar" : "+nofoo" -> True (contains "nofoo")
"bar,zzz" : "+nofoo" -> False (does not contain "nofoo")
"bar,zzz" : "" or "+" -> True (empty pattern is matching)
"" : "" -> True
"" : "foo" -> False
"" : "nofoo" -> True
"" : "no,foo" -> False (alone "no" is error)
"no" : "+no" -> True ("no" is an option due to "+")