]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
path-util: Add a helper for checking paths
authorKrzesimir Nowak <knowak@microsoft.com>
Thu, 11 Apr 2024 12:38:19 +0000 (14:38 +0200)
committerKrzesimir Nowak <knowak@microsoft.com>
Fri, 19 Apr 2024 06:30:40 +0000 (08:30 +0200)
The difference with the already existing path_equal_or_inode_same function is
that the new one does not swallow errors.

src/basic/path-util.c
src/basic/path-util.h

index 4d335c64eeda287fa27c1ae2fe8b608b42ccb6f7..16b13ed628a488a17f7e4c78c808586109052d0f 100644 (file)
@@ -525,6 +525,18 @@ int path_compare_filename(const char *a, const char *b) {
         return strcmp(fa, fb);
 }
 
+int path_equal_or_inode_same_full(const char *a, const char *b, int flags) {
+        /* Returns true if paths are of the same entry, false if not, <0 on error. */
+
+        if (path_equal(a, b))
+                return 1;
+
+        if (!a || !b)
+                return 0;
+
+        return inode_same(a, b, flags);
+}
+
 char* path_extend_internal(char **x, ...) {
         size_t sz, old_sz;
         char *q, *nx;
index 6d88c54d7f0bdad66912d6f9f813ce49e85b7814..368e0001217067dc903d4bf311318edf5211c083 100644 (file)
@@ -68,8 +68,9 @@ static inline bool path_equal_filename(const char *a, const char *b) {
         return path_compare_filename(a, b) == 0;
 }
 
+int path_equal_or_inode_same_full(const char *a, const char *b, int flags);
 static inline bool path_equal_or_inode_same(const char *a, const char *b, int flags) {
-        return path_equal(a, b) || inode_same(a, b, flags) > 0;
+        return path_equal_or_inode_same_full(a, b, flags) > 0;
 }
 
 char* path_extend_internal(char **x, ...);