Options string

Options string — low-level API for working with mount options

Synopsis

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);
int                 mnt_optstr_deduplicate_option       (char **optstr,
                                                         const char *name);
int                 mnt_optstr_get_flags                (const char *optstr,
                                                         unsigned long *flags,
                                                         const struct libmnt_optmap *map);
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);
int                 mnt_optstr_next_option              (char **optstr,
                                                         char **name,
                                                         size_t *namesz,
                                                         char **value,
                                                         size_t *valuesz);
int                 mnt_optstr_prepend_option           (char **optstr,
                                                         const char *name,
                                                         const char *value);
int                 mnt_optstr_remove_option            (char **optstr,
                                                         const char *name);
int                 mnt_optstr_set_option               (char **optstr,
                                                         const char *name,
                                                         const char *value);
int                 mnt_split_optstr                    (const char *optstr,
                                                         char **user,
                                                         char **vfs,
                                                         char **fs,
                                                         int ignore_user,
                                                         int ignore_vfs);

Description

This is a simple and low-level API to working with mount options that are stored in a string.

Details

mnt_optstr_append_option ()

int                 mnt_optstr_append_option            (char **optstr,
                                                         const char *name,
                                                         const char *value);

optstr :

option string or NULL, returns a reallocated string

name :

value name

value :

value

Returns :

0 on success or -1 in case of error. After an error the optstr should be unmodified.

mnt_optstr_apply_flags ()

int                 mnt_optstr_apply_flags              (char **optstr,
                                                         unsigned long  flags,
                                                         const struct libmnt_optmap *map);

Removes/adds options to the optstr according to flags. For example:

MS_NOATIME and "foo,bar,noexec" --returns-> "foo,bar,noatime"

optstr :

string with comma separated list of options

flags :

returns mount flags

map :

options map

Returns :

0 on success or negative number in case of error.

mnt_optstr_deduplicate_option ()

int                 mnt_optstr_deduplicate_option       (char **optstr,
                                                         const char *name);

Removes all instances of name except the last one.

optstr :

string with a comma separated list of options

name :

requested option name

Returns :

0 on success, 1 when not found the name or negative number in case of error.

mnt_optstr_get_flags ()

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.

optstr :

string with comma separated list of options

flags :

returns mount flags

map :

options map

Returns :

0 on success or negative number in case of error

mnt_optstr_get_option ()

int                 mnt_optstr_get_option               (const char *optstr,
                                                         const char *name,
                                                         char **value,
                                                         size_t *valsz);

optstr :

string with a comma separated list of options

name :

requested option name

value :

returns a pointer to the beginning of the value (e.g. name=VALUE) or NULL

valsz :

returns size of the value or 0

Returns :

0 on success, 1 when not found the name or negative number in case of error.

mnt_optstr_get_options ()

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.

optstr :

string with a comma separated list of options

subset :

returns newly allocated string with options

map :

options map

ignore :

mask of the options that should be ignored

Returns :

0 on success, or a negative number in case of error.

mnt_optstr_next_option ()

int                 mnt_optstr_next_option              (char **optstr,
                                                         char **name,
                                                         size_t *namesz,
                                                         char **value,
                                                         size_t *valuesz);

Parses the first option in optstr.

optstr :

option string, returns the position of the next option

name :

returns the option name

namesz :

returns the option name length

value :

returns the option value or NULL

valuesz :

returns the option value length or zero

Returns :

0 on success, 1 at the end of optstr or negative number in case of error.

mnt_optstr_prepend_option ()

int                 mnt_optstr_prepend_option           (char **optstr,
                                                         const char *name,
                                                         const char *value);

optstr :

option string or NULL, returns a reallocated string

name :

value name

value :

value

Returns :

0 on success or -1 in case of error. After an error the optstr should be unmodified.

mnt_optstr_remove_option ()

int                 mnt_optstr_remove_option            (char **optstr,
                                                         const char *name);

optstr :

string with a comma separated list of options

name :

requested option name

Returns :

0 on success, 1 when not found the name or negative number in case of error.

mnt_optstr_set_option ()

int                 mnt_optstr_set_option               (char **optstr,
                                                         const char *name,
                                                         const char *value);

Set or unset the option value.

optstr :

string with a comma separated list of options

name :

requested option

value :

new value or NULL

Returns :

0 on success, 1 when not found the name or negative number in case of error.

mnt_split_optstr ()

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

Returns :

0 on success, or a negative number in case of error.