diff options
author | Junio C Hamano <gitster@pobox.com> | 2015-03-26 11:57:12 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2015-03-26 11:57:13 -0700 |
commit | 574ee8ae8636ffad8146e0f8e648b866dad725e6 (patch) | |
tree | 803d6e2645e3a8cc2491177f7be4fbf602af8cca /dir.c | |
parent | bca181109d6f054d525c71a84963bbdc1f0c40bf (diff) | |
parent | 777c55a61615837d4391facd75cf334b96635801 (diff) | |
download | git-574ee8ae8636ffad8146e0f8e648b866dad725e6.tar.gz |
Merge branch 'jc/report-path-error-to-dir'
Code clean-up.
* jc/report-path-error-to-dir:
report_path_error(): move to dir.c
Diffstat (limited to 'dir.c')
-rw-r--r-- | dir.c | 43 |
1 files changed, 43 insertions, 0 deletions
@@ -377,6 +377,49 @@ int match_pathspec(const struct pathspec *ps, return negative ? 0 : positive; } +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. + */ + struct strbuf sb = STRBUF_INIT; + int num, errors = 0; + for (num = 0; num < pathspec->nr; num++) { + int other, found_dup; + + if (ps_matched[num]) + continue; + /* + * The caller might have fed identical pathspec + * twice. Do not barf on such a mistake. + * FIXME: parse_pathspec should have eliminated + * duplicate pathspec. + */ + for (found_dup = other = 0; + !found_dup && other < pathspec->nr; + other++) { + if (other == num || !ps_matched[other]) + continue; + if (!strcmp(pathspec->items[other].original, + pathspec->items[num].original)) + /* + * Ok, we have a match already. + */ + found_dup = 1; + } + if (found_dup) + continue; + + error("pathspec '%s' did not match any file(s) known to git.", + pathspec->items[num].original); + errors++; + } + strbuf_release(&sb); + return errors; +} + /* * Return the length of the "simple" part of a path match limiter. */ |