remove prefix argument from pathspec_prefix
[gitweb.git] / setup.c
diff --git a/setup.c b/setup.c
index 013ad1127534367e64afeec3749e617ceccfb5d4..f767d8adb110dde7dcafa8cf030ee7a496753800 100644 (file)
--- a/setup.c
+++ b/setup.c
@@ -264,6 +264,38 @@ const char **get_pathspec(const char *prefix, const char **pathspec)
        return pathspec;
 }
 
+char *pathspec_prefix(const char **pathspec)
+{
+       const char **p, *n, *prev;
+       unsigned long max;
+
+       if (!pathspec)
+               return NULL;
+
+       prev = NULL;
+       max = PATH_MAX;
+       for (p = pathspec; (n = *p) != NULL; p++) {
+               int i, len = 0;
+               for (i = 0; i < max; i++) {
+                       char c = n[i];
+                       if (prev && prev[i] != c)
+                               break;
+                       if (!c || c == '*' || c == '?')
+                               break;
+                       if (c == '/')
+                               len = i+1;
+               }
+               prev = n;
+               if (len < max) {
+                       max = len;
+                       if (!max)
+                               break;
+               }
+       }
+
+       return max ? xmemdupz(prev, max) : NULL;
+}
+
 /*
  * Test if it looks like we're at a git directory.
  * We want to see:
@@ -382,7 +414,7 @@ const char *read_gitfile_gently(const char *path)
        const char *slash;
        struct stat st;
        int fd;
-       size_t len;
+       ssize_t len;
 
        if (stat(path, &st))
                return NULL;