diff options
author | Russell Belfer <rb@github.com> | 2014-01-21 12:00:08 -0800 |
---|---|---|
committer | Russell Belfer <rb@github.com> | 2014-01-24 10:54:05 -0800 |
commit | b8e86c62f7512425e29f340a38152978d869e316 (patch) | |
tree | 9071d4d009374f84c35cd23e0e4a3a4c245eceff /src/diff_driver.c | |
parent | 9bbc53d6d424cbdc8b5ca47f6a85b49794c516fe (diff) | |
download | libgit2-b8e86c62f7512425e29f340a38152978d869e316.tar.gz |
Implement matched pattern extract for fn headers
Diffstat (limited to 'src/diff_driver.c')
-rw-r--r-- | src/diff_driver.c | 11 |
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; } } |