X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=dir.c;h=cfd1ea587d9cce825e238ca81ea99b752543dada;hb=6828f72ffee0d603b96bcde080ec13504f617669;hp=d55a41a5abde946177e1123b075a13967d2f850f;hpb=d9fde065bd808fbbad3b53e10e160c8f8193b577;p=git.git diff --git a/dir.c b/dir.c index d55a41a5a..cfd1ea587 100644 --- a/dir.c +++ b/dir.c @@ -108,25 +108,28 @@ static int match_one(const char *match, const char *name, int namelen) * and a mark is left in seen[] array for pathspec element that * actually matched anything. */ -int match_pathspec(const char **pathspec, const char *name, int namelen, int prefix, char *seen) +int match_pathspec(const char **pathspec, const char *name, int namelen, + int prefix, char *seen) { - int retval; - const char *match; + int i, retval = 0; + + if (!pathspec) + return 1; name += prefix; namelen -= prefix; - for (retval = 0; (match = *pathspec++) != NULL; seen++) { + for (i = 0; pathspec[i] != NULL; i++) { int how; - if (retval && *seen == MATCHED_EXACTLY) + const char *match = pathspec[i] + prefix; + if (seen && seen[i] == MATCHED_EXACTLY) continue; - match += prefix; how = match_one(match, name, namelen); if (how) { if (retval < how) retval = how; - if (*seen < how) - *seen = how; + if (seen && seen[i] < how) + seen[i] = how; } } return retval;