dir.c: factor out parts of last_exclude_matching for later reuse
authorKarsten Blees <karsten.blees@gmail.com>
Mon, 15 Apr 2013 19:11:02 +0000 (21:11 +0200)
committerJunio C Hamano <gitster@pobox.com>
Mon, 15 Apr 2013 19:34:00 +0000 (12:34 -0700)
Signed-off-by: Karsten Blees <blees@dcon.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
dir.c
diff --git a/dir.c b/dir.c
index 7a98e3ac8a8b3030e3b0e4def2c08b7f9d43f554..46d127ca20f48ce792848e022ddf4dae284fcfae 100644 (file)
--- a/dir.c
+++ b/dir.c
@@ -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,
                                             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);
 }
 
 /*