From: Peter Krempa <pkrempa@redhat.com> Similarly to 'virFileIsRegular' return if the FD is a regular file. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/libvirt_private.syms | 1 + src/util/virfile.c | 8 ++++++++ src/util/virfile.h | 1 + 3 files changed, 10 insertions(+) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index d8ae4f46cd..b200037189 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -2375,6 +2375,7 @@ virFileDeleteTree; virFileDirectFdFlag; virFileExists; virFileFclose; +virFileFDIsRegular; virFileFdopen; virFileFindHugeTLBFS; virFileFindMountPoint; diff --git a/src/util/virfile.c b/src/util/virfile.c index 9316606ce8..65b04beb8c 100644 --- a/src/util/virfile.c +++ b/src/util/virfile.c @@ -2031,6 +2031,14 @@ virFileIsRegular(const char *path) } +bool +virFileFDIsRegular(int fd) +{ + struct stat s; + return (fstat(fd, &s) == 0) && S_ISREG(s.st_mode); +} + + /** * virFileExists: Check for presence of file * @path: Path of file to check diff --git a/src/util/virfile.h b/src/util/virfile.h index ce2ffb8ed4..8c9ad59898 100644 --- a/src/util/virfile.h +++ b/src/util/virfile.h @@ -218,6 +218,7 @@ bool virFileIsDir (const char *file) ATTRIBUTE_NONNULL(1); bool virFileExists(const char *file) ATTRIBUTE_NONNULL(1) ATTRIBUTE_MOCKABLE; bool virFileIsExecutable(const char *file) ATTRIBUTE_NONNULL(1); bool virFileIsRegular(const char *file) ATTRIBUTE_NONNULL(1); +bool virFileFDIsRegular(int fd); enum { VIR_FILE_SHFS_NFS = (1 << 0), -- 2.53.0