diff options
author | Junio C Hamano <gitster@pobox.com> | 2013-07-17 15:09:34 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2013-07-17 15:09:34 -0700 |
commit | 08578fa13eeec7079101f7ac52208aec83d54c62 (patch) | |
tree | 65dad62dfa337859f2e6cf12a74e213ea70a9775 | |
parent | 949226fe77beb1027bd5ac7be56fe002236d6cad (diff) | |
download | git-08578fa13eeec7079101f7ac52208aec83d54c62.tar.gz |
diff: factor out match_filter()
diffcore_apply_filter() checks if a filepair matches the filter
given with the "--diff-filter" option for each input filepairs with
a fairly complex expression in two places.
Create a helper function and call it.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | diff.c | 29 |
1 files changed, 13 insertions, 16 deletions
@@ -4509,6 +4509,17 @@ free_queue: } } +static int match_filter(const struct diff_options *options, const struct diff_filepair *p) +{ + return (((p->status == DIFF_STATUS_MODIFIED) && + ((p->score && + strchr(options->filter, DIFF_STATUS_FILTER_BROKEN)) || + (!p->score && + strchr(options->filter, DIFF_STATUS_MODIFIED)))) || + ((p->status != DIFF_STATUS_MODIFIED) && + strchr(options->filter, p->status))); +} + static void diffcore_apply_filter(struct diff_options *options) { int i; @@ -4524,14 +4535,7 @@ static void diffcore_apply_filter(struct diff_options *options) if (strchr(filter, DIFF_STATUS_FILTER_AON)) { int found; for (i = found = 0; !found && i < q->nr; i++) { - struct diff_filepair *p = q->queue[i]; - if (((p->status == DIFF_STATUS_MODIFIED) && - ((p->score && - strchr(filter, DIFF_STATUS_FILTER_BROKEN)) || - (!p->score && - strchr(filter, DIFF_STATUS_MODIFIED)))) || - ((p->status != DIFF_STATUS_MODIFIED) && - strchr(filter, p->status))) + if (match_filter(options, q->queue[i])) found++; } if (found) @@ -4549,14 +4553,7 @@ static void diffcore_apply_filter(struct diff_options *options) /* Only the matching ones */ for (i = 0; i < q->nr; i++) { struct diff_filepair *p = q->queue[i]; - - if (((p->status == DIFF_STATUS_MODIFIED) && - ((p->score && - strchr(filter, DIFF_STATUS_FILTER_BROKEN)) || - (!p->score && - strchr(filter, DIFF_STATUS_MODIFIED)))) || - ((p->status != DIFF_STATUS_MODIFIED) && - strchr(filter, p->status))) + if (match_filter(options, p)) diff_q(&outq, p); else diff_free_filepair(p); |