diff options
author | Junio C Hamano <gitster@pobox.com> | 2011-09-06 12:32:30 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-09-06 12:54:19 -0700 |
commit | 4a085b16f430bcfe1b6e2e84e7a569f4e191e906 (patch) | |
tree | 3f6942e4b822e86aaf5cbb36597189f097761e51 /setup.c | |
parent | 5879f5684cfe8a38326b4ffd078f96e35c68e640 (diff) | |
download | git-4a085b16f430bcfe1b6e2e84e7a569f4e191e906.tar.gz |
consolidate pathspec_prefix and common_prefix
The implementation from pathspec_prefix (slightly modified) replaces the
current common_prefix, because it also respects glob characters.
Based on a patch by Clemens Buchacher.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'setup.c')
-rw-r--r-- | setup.c | 29 |
1 files changed, 2 insertions, 27 deletions
@@ -266,34 +266,9 @@ const char **get_pathspec(const char *prefix, const char **pathspec) char *pathspec_prefix(const char **pathspec) { - const char **p, *n, *prev; - unsigned long max; + size_t len = common_prefix_len(pathspec); - 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; + return len ? xmemdupz(*pathspec, len) : NULL; } /* |