Signed-off-by: Nguyễn Thái Ngọc Duy <pclo...@gmail.com>
---
 builtin/checkout.c |  2 +-
 builtin/commit.c   | 14 ++++++--------
 builtin/ls-files.c | 14 ++++++++------
 cache.h            |  2 +-
 4 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/builtin/checkout.c b/builtin/checkout.c
index a7ddb35..648768e 100644
--- a/builtin/checkout.c
+++ b/builtin/checkout.c
@@ -273,7 +273,7 @@ static int checkout_paths(const struct checkout_opts *opts,
                match_pathspec_depth(&opts->pathspec, ce->name, ce_namelen(ce), 
0, ps_matched);
        }
 
-       if (report_path_error(ps_matched, opts->pathspec.raw, opts->prefix))
+       if (report_path_error(ps_matched, &opts->pathspec, opts->prefix))
                return 1;
 
        /* "checkout -m path" to recreate conflicted state */
diff --git a/builtin/commit.c b/builtin/commit.c
index 069d853..8777c19 100644
--- a/builtin/commit.c
+++ b/builtin/commit.c
@@ -181,20 +181,18 @@ static int commit_index_files(void)
  * and return the paths that match the given pattern in list.
  */
 static int list_paths(struct string_list *list, const char *with_tree,
-                     const char *prefix, const char **pattern)
+                     const char *prefix, const struct pathspec *pattern)
 {
        int i;
        char *m;
 
-       if (!pattern)
+       if (!pattern->nr)
                return 0;
 
-       for (i = 0; pattern[i]; i++)
-               ;
-       m = xcalloc(1, i);
+       m = xcalloc(1, pattern->nr);
 
        if (with_tree) {
-               char *max_prefix = common_prefix(pattern);
+               char *max_prefix = common_prefix(pattern->raw);
                overlay_tree_on_cache(with_tree, max_prefix ? max_prefix : 
prefix);
                free(max_prefix);
        }
@@ -205,7 +203,7 @@ static int list_paths(struct string_list *list, const char 
*with_tree,
 
                if (ce->ce_flags & CE_UPDATE)
                        continue;
-               if (!match_pathspec(pattern, ce->name, ce_namelen(ce), 0, m))
+               if (!match_pathspec_depth(pattern, ce->name, ce_namelen(ce), 0, 
m))
                        continue;
                item = string_list_insert(list, ce->name);
                if (ce_skip_worktree(ce))
@@ -395,7 +393,7 @@ static char *prepare_index(int argc, const char **argv, 
const char *prefix,
 
        memset(&partial, 0, sizeof(partial));
        partial.strdup_strings = 1;
-       if (list_paths(&partial, !current_head ? NULL : "HEAD", prefix, 
pathspec.raw))
+       if (list_paths(&partial, !current_head ? NULL : "HEAD", prefix, 
&pathspec))
                exit(1);
 
        discard_cache();
diff --git a/builtin/ls-files.c b/builtin/ls-files.c
index 9336abd..be6e05d 100644
--- a/builtin/ls-files.c
+++ b/builtin/ls-files.c
@@ -349,7 +349,9 @@ void overlay_tree_on_cache(const char *tree_name, const 
char *prefix)
        }
 }
 
-int report_path_error(const char *ps_matched, const char **pathspec, const 
char *prefix)
+int report_path_error(const char *ps_matched,
+                     const struct pathspec *pathspec,
+                     const char *prefix)
 {
        /*
         * Make sure all pathspec matched; otherwise it is an error.
@@ -357,7 +359,7 @@ int report_path_error(const char *ps_matched, const char 
**pathspec, const char
        struct strbuf sb = STRBUF_INIT;
        const char *name;
        int num, errors = 0;
-       for (num = 0; pathspec[num]; num++) {
+       for (num = 0; num < pathspec->nr; num++) {
                int other, found_dup;
 
                if (ps_matched[num])
@@ -367,11 +369,11 @@ int report_path_error(const char *ps_matched, const char 
**pathspec, const char
                 * twice.  Do not barf on such a mistake.
                 */
                for (found_dup = other = 0;
-                    !found_dup && pathspec[other];
+                    !found_dup && pathspec->raw[other];
                     other++) {
                        if (other == num || !ps_matched[other])
                                continue;
-                       if (!strcmp(pathspec[other], pathspec[num]))
+                       if (!strcmp(pathspec->raw[other], pathspec->raw[num]))
                                /*
                                 * Ok, we have a match already.
                                 */
@@ -380,7 +382,7 @@ int report_path_error(const char *ps_matched, const char 
**pathspec, const char
                if (found_dup)
                        continue;
 
-               name = quote_path_relative(pathspec[num], -1, &sb, prefix);
+               name = quote_path_relative(pathspec->raw[num], -1, &sb, prefix);
                error("pathspec '%s' did not match any file(s) known to git.",
                      name);
                errors++;
@@ -572,7 +574,7 @@ int cmd_ls_files(int argc, const char **argv, const char 
*cmd_prefix)
 
        if (ps_matched) {
                int bad;
-               bad = report_path_error(ps_matched, pathspec.raw, prefix);
+               bad = report_path_error(ps_matched, &pathspec, prefix);
                if (bad)
                        fprintf(stderr, "Did you forget to 'git add'?\n");
 
diff --git a/cache.h b/cache.h
index c594ded..40eaa04 100644
--- a/cache.h
+++ b/cache.h
@@ -1262,7 +1262,7 @@ extern int ws_blank_line(const char *line, int len, 
unsigned ws_rule);
 #define ws_tab_width(rule)     ((rule) & WS_TAB_WIDTH_MASK)
 
 /* ls-files */
-int report_path_error(const char *ps_matched, const char **pathspec, const 
char *prefix);
+int report_path_error(const char *ps_matched, const struct pathspec *pathspec, 
const char *prefix);
 void overlay_tree_on_cache(const char *tree_name, const char *prefix);
 
 char *alias_lookup(const char *alias);
-- 
1.8.0.rc2.23.g1fb49df

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to