Merge branch 'mk/combine-diff-context-horizon-fix'
[gitweb.git] / builtin / check-ignore.c
index e2d300646431fbd7a2b3f53ed4450b9af7a52f96..4a8fc707c747596e31dcc6f57abf5f965cdf612f 100644 (file)
@@ -63,7 +63,7 @@ static void output_exclude(const char *path, struct exclude *exclude)
        }
 }
 
-static int check_ignore(struct path_exclude_check *check,
+static int check_ignore(struct dir_struct *dir,
                        const char *prefix, const char **pathspec)
 {
        const char *path, *full_path;
@@ -91,8 +91,7 @@ static int check_ignore(struct path_exclude_check *check,
                die_if_path_beyond_symlink(full_path, prefix);
                exclude = NULL;
                if (!seen[i]) {
-                       exclude = last_exclude_matching_path(check, full_path,
-                                                            -1, &dtype);
+                       exclude = last_exclude_matching(dir, full_path, &dtype);
                }
                if (!quiet && (exclude || show_non_matching))
                        output_exclude(path, exclude);
@@ -104,13 +103,12 @@ static int check_ignore(struct path_exclude_check *check,
        return num_ignored;
 }
 
-static int check_ignore_stdin_paths(struct path_exclude_check *check, const char *prefix)
+static int check_ignore_stdin_paths(struct dir_struct *dir, const char *prefix)
 {
        struct strbuf buf, nbuf;
-       char **pathspec = NULL;
-       size_t nr = 0, alloc = 0;
+       char *pathspec[2] = { NULL, NULL };
        int line_termination = null_term_line ? 0 : '\n';
-       int num_ignored;
+       int num_ignored = 0;
 
        strbuf_init(&buf, 0);
        strbuf_init(&nbuf, 0);
@@ -121,14 +119,10 @@ static int check_ignore_stdin_paths(struct path_exclude_check *check, const char
                                die("line is badly quoted");
                        strbuf_swap(&buf, &nbuf);
                }
-               ALLOC_GROW(pathspec, nr + 1, alloc);
-               pathspec[nr] = xcalloc(strlen(buf.buf) + 1, sizeof(*buf.buf));
-               strcpy(pathspec[nr++], buf.buf);
+               pathspec[0] = buf.buf;
+               num_ignored += check_ignore(dir, prefix, (const char **)pathspec);
+               maybe_flush_or_die(stdout, "check-ignore to stdout");
        }
-       ALLOC_GROW(pathspec, nr + 1, alloc);
-       pathspec[nr] = NULL;
-       num_ignored = check_ignore(check, prefix, (const char **)pathspec);
-       maybe_flush_or_die(stdout, "attribute to stdout");
        strbuf_release(&buf);
        strbuf_release(&nbuf);
        return num_ignored;
@@ -138,7 +132,6 @@ int cmd_check_ignore(int argc, const char **argv, const char *prefix)
 {
        int num_ignored;
        struct dir_struct dir;
-       struct path_exclude_check check;
 
        git_config(git_default_config, NULL);
 
@@ -168,19 +161,16 @@ int cmd_check_ignore(int argc, const char **argv, const char *prefix)
                die(_("index file corrupt"));
 
        memset(&dir, 0, sizeof(dir));
-       dir.flags |= DIR_COLLECT_IGNORED;
        setup_standard_excludes(&dir);
 
-       path_exclude_check_init(&check, &dir);
        if (stdin_paths) {
-               num_ignored = check_ignore_stdin_paths(&check, prefix);
+               num_ignored = check_ignore_stdin_paths(&dir, prefix);
        } else {
-               num_ignored = check_ignore(&check, prefix, argv);
+               num_ignored = check_ignore(&dir, prefix, argv);
                maybe_flush_or_die(stdout, "ignore to stdout");
        }
 
        clear_directory(&dir);
-       path_exclude_check_clear(&check);
 
        return !num_ignored;
 }