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>
This commit is contained in:
Junio C Hamano
2011-09-06 12:32:30 -07:00
parent 5879f5684c
commit 4a085b16f4
3 changed files with 27 additions and 55 deletions

29
setup.c
View File

@ -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;
}
/*