From: Karel Zak Date: Wed, 2 Jun 2021 10:14:10 +0000 (+0200) Subject: libmount: add mnt_fs_is_regularfs() to public API X-Git-Tag: v2.38-rc1~489 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ac8697d60686b9951fd181a51c026b85ce10f95a;p=thirdparty%2Futil-linux.git libmount: add mnt_fs_is_regularfs() to public API Fix: https://github.com/karelzak/util-linux/issues/1328 Signed-off-by: Karel Zak --- diff --git a/libmount/docs/libmount-sections.txt b/libmount/docs/libmount-sections.txt index 89b2b1e8ba..097e2f0663 100644 --- a/libmount/docs/libmount-sections.txt +++ b/libmount/docs/libmount-sections.txt @@ -249,6 +249,7 @@ mnt_fs_get_vfs_options_all mnt_fs_is_kernel mnt_fs_is_netfs mnt_fs_is_pseudofs +mnt_fs_is_regularfs mnt_fs_is_swaparea mnt_fs_match_fstype mnt_fs_match_options diff --git a/libmount/src/context_loopdev.c b/libmount/src/context_loopdev.c index 6462bfb629..88af20c0e5 100644 --- a/libmount/src/context_loopdev.c +++ b/libmount/src/context_loopdev.c @@ -62,7 +62,7 @@ int mnt_context_is_loopdev(struct libmnt_context *cxt) */ type = mnt_fs_get_fstype(cxt->fs); - if (mnt_fs_is_regular(cxt->fs) && + if (mnt_fs_is_regularfs(cxt->fs) && (!type || strcmp(type, "auto") == 0 || blkid_known_fstype(type))) { struct stat st; diff --git a/libmount/src/fs.c b/libmount/src/fs.c index a9242099d4..8b739d6b34 100644 --- a/libmount/src/fs.c +++ b/libmount/src/fs.c @@ -636,6 +636,21 @@ int mnt_fs_is_netfs(struct libmnt_fs *fs) return mnt_fs_get_flags(fs) & MNT_FS_NET; } +/** + * mnt_fs_is_regularfs: + * @fs: filesystem + * + * Returns: 1 if the filesystem is a regular filesystem (not network or pseudo filesystem). + * + * Since: 2.38 + */ +int mnt_fs_is_regularfs(struct libmnt_fs *fs) +{ + return !(mnt_fs_is_pseudofs(fs) + || mnt_fs_is_netfs(fs) + || mnt_fs_is_swaparea(fs)); +} + /** * mnt_fs_get_fstype: * @fs: fstab/mtab/mountinfo entry pointer diff --git a/libmount/src/libmount.h.in b/libmount/src/libmount.h.in index 2d4d044e95..8ab01369ea 100644 --- a/libmount/src/libmount.h.in +++ b/libmount/src/libmount.h.in @@ -515,6 +515,7 @@ extern int mnt_fs_is_kernel(struct libmnt_fs *fs); extern int mnt_fs_is_swaparea(struct libmnt_fs *fs); extern int mnt_fs_is_netfs(struct libmnt_fs *fs); extern int mnt_fs_is_pseudofs(struct libmnt_fs *fs); +extern int mnt_fs_is_regularfs(struct libmnt_fs *fs); extern void mnt_free_mntent(struct mntent *mnt); extern int mnt_fs_to_mntent(struct libmnt_fs *fs, struct mntent **mnt); diff --git a/libmount/src/libmount.sym b/libmount/src/libmount.sym index 85e89ad020..aa96091b1a 100644 --- a/libmount/src/libmount.sym +++ b/libmount/src/libmount.sym @@ -361,3 +361,8 @@ MOUNT_2_37 { mnt_fs_get_vfs_options_all; mnt_table_over_fs; } MOUNT_2_35; + + +MOUNT_2_38 { + mnt_fs_is_regularfs; +} MOUNT_2_37; diff --git a/libmount/src/mountP.h b/libmount/src/mountP.h index ee97c6b4a3..571a74224b 100644 --- a/libmount/src/mountP.h +++ b/libmount/src/mountP.h @@ -227,10 +227,6 @@ struct libmnt_fs { #define MNT_FS_KERNEL (1 << 4) /* data from /proc/{mounts,self/mountinfo} */ #define MNT_FS_MERGED (1 << 5) /* already merged data from /run/mount/utab */ -#define mnt_fs_is_regular(_f) (!(mnt_fs_is_pseudofs(_f) \ - || mnt_fs_is_netfs(_f) \ - || mnt_fs_is_swaparea(_f))) - /* * mtab/fstab/mountinfo file */