diff cutils/util/walk.py @ 274:224725fd9f2f

WalkDirEntry: add support for special files (character and block special, FIFO, socket, door, whiteout, event port, ...)
author Franz Glasner <fzglas.hg@dom66.de>
date Wed, 19 Feb 2025 16:42:44 +0100
parents c02a57df2a29
children f7850ff5cbe0
line wrap: on
line diff
--- a/cutils/util/walk.py	Wed Feb 19 09:12:30 2025 +0100
+++ b/cutils/util/walk.py	Wed Feb 19 16:42:44 2025 +0100
@@ -236,6 +236,58 @@
         return self._is_dir
 
     @property
+    def is_chr(self):
+        return (stat.S_ISCHR(self._stat_result.st_mode)
+                if self._stat_result is not None
+                else False)
+
+    @property
+    def is_blk(self):
+        return (stat.S_ISBLK(self._stat_result.st_mode)
+                if self._stat_result is not None
+                else False)
+
+    @property
+    def is_fifo(self):
+        return (stat.S_ISFIFO(self._stat_result.st_mode)
+                if self._stat_result is not None
+                else False)
+
+    @property
+    def is_socket(self):
+        return (stat.S_ISSOCK(self._stat_result.st_mode)
+                if self._stat_result is not None
+                else False)
+
+    @property
+    def is_door(self):
+        test = getattr(stat, "S_ISDOOR", None)
+        return (test(self._stat_result.st_mode)
+                if test and (self._stat_result is not None)
+                else False)
+
+    @property
+    def is_eventport(self):
+        test = getattr(stat, "S_ISPORT", None)
+        return (test(self._stat_result.st_mode)
+                if test and (self._stat_result is not None)
+                else False)
+
+    @property
+    def is_whiteout(self):
+        test = getattr(stat, "S_ISWHT", None)
+        return (test(self._stat_result.st_mode)
+                if test and (self._stat_result is not None)
+                else False)
+
+    @property
+    def is_special(self):
+        """Anything besides a regular file and a directory"""
+        if self._stat_result is None:
+            return False
+        return not (self.is_reg or self.is_dir)
+
+    @property
     def stat(self):
         return self._stat_result