summaryrefslogtreecommitdiff
path: root/src/diff_driver.c
diff options
context:
space:
mode:
authorRussell Belfer <rb@github.com>2014-01-21 12:00:08 -0800
committerRussell Belfer <rb@github.com>2014-01-24 10:54:05 -0800
commitb8e86c62f7512425e29f340a38152978d869e316 (patch)
tree9071d4d009374f84c35cd23e0e4a3a4c245eceff /src/diff_driver.c
parent9bbc53d6d424cbdc8b5ca47f6a85b49794c516fe (diff)
downloadlibgit2-b8e86c62f7512425e29f340a38152978d869e316.tar.gz
Implement matched pattern extract for fn headers
Diffstat (limited to 'src/diff_driver.c')
-rw-r--r--src/diff_driver.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/diff_driver.c b/src/diff_driver.c
index 169f7b025..56b5b5a51 100644
--- a/src/diff_driver.c
+++ b/src/diff_driver.c
@@ -460,16 +460,21 @@ static int diff_context_line__simple(
static int diff_context_line__pattern_match(
git_diff_driver *driver, git_buf *line)
{
- size_t i;
+ size_t i, maxi = git_array_size(driver->fn_patterns);
regmatch_t pmatch[2];
- for (i = 0; i < git_array_size(driver->fn_patterns); ++i) {
+ for (i = 0; i < maxi; ++i) {
git_diff_driver_pattern *pat = git_array_get(driver->fn_patterns, i);
if (!regexec(&pat->re, line->ptr, 2, pmatch, 0)) {
if (pat->flags & REG_NEGATE)
return false;
- /* TODO: use pmatch data to trim line data */
+
+ /* use pmatch data to trim line data */
+ i = (pmatch[1].rm_so >= 0) ? 1 : 0;
+ git_buf_consume(line, git_buf_cstr(line) + pmatch[i].rm_so);
+ git_buf_truncate(line, pmatch[i].rm_eo - pmatch[i].rm_so);
+
return true;
}
}