From: Peter Krempa <[email protected]>

Similarly to 'virFileIsRegular' return if the FD is a regular file.

Signed-off-by: Peter Krempa <[email protected]>
---
 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

Reply via email to