]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
path-util: make iterator for path_find_last_component() always finish with the beginn...
authorYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 10 Apr 2023 00:30:14 +0000 (09:30 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 10 Apr 2023 00:30:14 +0000 (09:30 +0900)
src/basic/path-util.c

index a5ab6045cd24418ccb1ca76b8342a36ed602231f..0b0f0da7602675b5e33797c09dc1f403413442a7 100644 (file)
@@ -901,6 +901,8 @@ static const char *skip_slash_or_dot_backward(const char *path, const char *q) {
                         continue;
                 if (q > path && strneq(q - 1, "/.", 2))
                         continue;
+                if (q == path && *q == '.')
+                        continue;
                 break;
         }
         return q;
@@ -925,6 +927,12 @@ int path_find_last_component(const char *path, bool accept_dot_dot, const char *
         *           ret: "bbbbb/cc//././"
         *           return value: 5 (== strlen("bbbbb"))
         *
+        *   Input:  path: "//.//aaa///bbbbb/cc//././"
+        *           next: "///bbbbb/cc//././"
+        *   Output: next: "//.//aaa///bbbbb/cc//././" (next == path)
+        *           ret: "aaa///bbbbb/cc//././"
+        *           return value: 3 (== strlen("aaa"))
+        *
         *   Input:  path: "/", ".", "", or NULL
         *   Output: next: equivalent to path
         *           ret: NULL