extern int mnt_optlist_get_propagation(struct libmnt_optlist *ls);
extern int mnt_optlist_is_propagation_only(struct libmnt_optlist *ls);
extern int mnt_optlist_is_remount(struct libmnt_optlist *ls);
+extern int mnt_optlist_is_recursive(struct libmnt_optlist *ls);
extern int mnt_optlist_is_bind(struct libmnt_optlist *ls);
extern int mnt_optlist_is_move(struct libmnt_optlist *ls);
extern int mnt_optlist_is_rdonly(struct libmnt_optlist *ls);
is_bind : 1,
is_rdonly : 1,
is_move : 1,
- is_silent : 1;
+ is_silent : 1,
+ is_recursive : 1;
};
struct libmnt_optlist *mnt_new_optlist(void)
ls->propagation &= ~opt->ent->id;
else if (opt->ent->id == MS_REMOUNT)
ls->is_remount = 0;
- else if (opt->ent->id == MS_BIND)
+ else if (opt->ent->id & MS_BIND) /* MS_BIND or MS_REC|MS_BIND */
ls->is_bind = 0;
else if (opt->ent->id == MS_RDONLY)
ls->is_rdonly = 0;
ls->is_move = 0;
else if (opt->ent->id == MS_SILENT)
ls->is_silent = 0;
+
+ if (opt->ent->id & MS_REC)
+ ls->is_recursive = 0;
+
}
optlist_cleanup_cache(ls, opt->map);
ls->propagation |= ent->id;
else if (opt->ent->id == MS_REMOUNT)
ls->is_remount = 1;
- else if (opt->ent->id == MS_BIND)
+ else if (opt->ent->id & MS_BIND) /* MS_BIND or MS_REC|MS_BIND */
ls->is_bind = 1;
else if (opt->ent->id == MS_RDONLY)
ls->is_rdonly = 1;
ls->is_move = 1;
else if (opt->ent->id == MS_SILENT)
ls->is_silent = 1;
+
+ if (opt->ent->id & MS_REC)
+ ls->is_recursive = 1;
}
if (ent && map) {
return ls && ls->is_remount;
}
+int mnt_optlist_is_recursive(struct libmnt_optlist *ls)
+{
+ return ls && ls->is_recursive;
+}
+
int mnt_optlist_is_move(struct libmnt_optlist *ls)
{
return ls && ls->is_move;