* mnt_table_over_fs:
* @tb: tab pointer
* @parent: pointer to parental FS
- * @child: returns pointer to FS which over-mounting parent
+ * @child: returns pointer to FS which over-mounting parent (optional)
*
* This function returns by @child the first filesystenm which is over-mounted
* on @parent. It means the mountpoint of @child is the same as for @parent and
struct libmnt_fs **child)
{
struct libmnt_iter itr;
+ struct libmnt_fs *fs = NULL;
int id;
const char *tgt;
if (!tb || !parent || !is_mountinfo(tb))
return -EINVAL;
+ if (child)
+ *child = NULL;
+
mnt_reset_iter(&itr, MNT_ITER_FORWARD);
id = mnt_fs_get_id(parent);
tgt = mnt_fs_get_target(parent);
- while (mnt_table_next_fs(tb, &itr, child) == 0) {
- if (mnt_fs_get_parent_id(*child) == id &&
- mnt_fs_streq_target(*child, tgt) == 1)
+ while (mnt_table_next_fs(tb, &itr, &fs) == 0) {
+ if (mnt_fs_get_parent_id(fs) == id &&
+ mnt_fs_streq_target(fs, tgt) == 1) {
+ if (child)
+ *child = fs;
return 0;
+ }
}
- *child = NULL;
return 1; /* nothing */
}