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