Browse Source

dir.c: factor out parts of last_exclude_matching for later reuse

Signed-off-by: Karsten Blees <blees@dcon.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Karsten Blees 12 years ago committed by Junio C Hamano
parent
commit
46aa2f95d2
  1. 36
      dir.c

36
dir.c

@ -795,6 +795,26 @@ int is_excluded_from_list(const char *pathname, @@ -795,6 +795,26 @@ int is_excluded_from_list(const char *pathname,
return -1; /* undecided */
}

static struct exclude *last_exclude_matching_from_lists(struct dir_struct *dir,
const char *pathname, int pathlen, const char *basename,
int *dtype_p)
{
int i, j;
struct exclude_list_group *group;
struct exclude *exclude;
for (i = EXC_CMDL; i <= EXC_FILE; i++) {
group = &dir->exclude_list_group[i];
for (j = group->nr - 1; j >= 0; j--) {
exclude = last_exclude_matching_from_list(
pathname, pathlen, basename, dtype_p,
&group->el[j]);
if (exclude)
return exclude;
}
}
return NULL;
}

/*
* Loads the exclude lists for the directory containing pathname, then
* scans all exclude lists to determine whether pathname is excluded.
@ -806,25 +826,13 @@ static struct exclude *last_exclude_matching(struct dir_struct *dir, @@ -806,25 +826,13 @@ static struct exclude *last_exclude_matching(struct dir_struct *dir,
int *dtype_p)
{
int pathlen = strlen(pathname);
int i, j;
struct exclude_list_group *group;
struct exclude *exclude;
const char *basename = strrchr(pathname, '/');
basename = (basename) ? basename+1 : pathname;

prep_exclude(dir, pathname, basename-pathname);

for (i = EXC_CMDL; i <= EXC_FILE; i++) {
group = &dir->exclude_list_group[i];
for (j = group->nr - 1; j >= 0; j--) {
exclude = last_exclude_matching_from_list(
pathname, pathlen, basename, dtype_p,
&group->el[j]);
if (exclude)
return exclude;
}
}
return NULL;
return last_exclude_matching_from_lists(dir, pathname, pathlen,
basename, dtype_p);
}

/*

Loading…
Cancel
Save