diff options
Diffstat (limited to 'shlibs/mount')
-rw-r--r-- | shlibs/mount/src/libmount.h.in | 2 | ||||
-rw-r--r-- | shlibs/mount/src/optmap.c | 15 |
2 files changed, 14 insertions, 3 deletions
diff --git a/shlibs/mount/src/libmount.h.in b/shlibs/mount/src/libmount.h.in index e168f2845..7d02ddcf0 100644 --- a/shlibs/mount/src/libmount.h.in +++ b/shlibs/mount/src/libmount.h.in @@ -73,6 +73,7 @@ struct libmnt_optmap */ #define MNT_INVERT (1 << 1) /* invert the mountflag */ #define MNT_NOMTAB (1 << 2) /* skip in the mtab option string */ +#define MNT_PREFIX (1 << 3) /* prefix used for some options (e.g. "x-foo") */ /** * libmnt_fs: @@ -438,6 +439,7 @@ extern int mnt_context_set_syscall_status(struct libmnt_context *cxt, int status #define MNT_MS_NOFAIL (1 << 10) #define MNT_MS_UHELPER (1 << 11) #define MNT_MS_HELPER (1 << 12) +#define MNT_MS_XCOMMENT (1 << 13) /* * mount(2) MS_* masks (MNT_MAP_LINUX map) diff --git a/shlibs/mount/src/optmap.c b/shlibs/mount/src/optmap.c index acd76173f..7db6d0314 100644 --- a/shlibs/mount/src/optmap.c +++ b/shlibs/mount/src/optmap.c @@ -133,7 +133,7 @@ static const struct libmnt_optmap userspace_opts_map[] = { "auto", MNT_MS_NOAUTO, MNT_INVERT | MNT_NOMTAB }, /* Can be mounted using -a */ { "noauto", MNT_MS_NOAUTO, MNT_NOMTAB }, /* Can only be mounted explicitly */ - { "user[=]", MNT_MS_USER }, /* Allow ordinary user to mount (mtab) */ + { "user[=]", MNT_MS_USER }, /* Allow ordinary user to mount (mtab) */ { "nouser", MNT_MS_USER, MNT_INVERT | MNT_NOMTAB }, /* Forbid ordinary user to mount */ { "users", MNT_MS_USERS, MNT_NOMTAB }, /* Allow ordinary users to mount */ @@ -147,9 +147,10 @@ static const struct libmnt_optmap userspace_opts_map[] = { "_netdev", MNT_MS_NETDEV }, /* Device requires network */ - { "comment=", MNT_MS_COMMENT, MNT_NOMTAB }, /* fstab comment only */ + { "comment=", MNT_MS_COMMENT, MNT_NOMTAB }, /* fstab comment only */ + { "x-", MNT_MS_XCOMMENT, MNT_NOMTAB | MNT_PREFIX }, /* x- options */ - { "loop[=]", MNT_MS_LOOP }, /* use the loop device */ + { "loop[=]", MNT_MS_LOOP }, /* use the loop device */ { "nofail", MNT_MS_NOFAIL, MNT_NOMTAB }, /* Do not fail if ENOENT on dev */ @@ -210,6 +211,14 @@ const struct libmnt_optmap *mnt_optmap_get_entry( const char *p; for (ent = map; ent && ent->name; ent++) { + if (ent->mask & MNT_PREFIX) { + if (startswith(name, ent->name)) { + if (mapent) + *mapent = ent; + return map; + } + continue; + } if (strncmp(ent->name, name, namelen)) continue; p = ent->name + namelen; |