Add match_func_rec(), a helper that wraps accessing a record and calling
the appropriate function for checking if it contains a function line.

Signed-off-by: Rene Scharfe <l....@web.de>
---
 xdiff/xemit.c | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/xdiff/xemit.c b/xdiff/xemit.c
index 993724b..0c87637 100644
--- a/xdiff/xemit.c
+++ b/xdiff/xemit.c
@@ -120,6 +120,16 @@ static long def_ff(const char *rec, long len, char *buf, 
long sz, void *priv)
        return -1;
 }
 
+static long match_func_rec(xdfile_t *xdf, xdemitconf_t const *xecfg, long ri,
+                          char *buf, long sz)
+{
+       const char *rec;
+       long len = xdl_get_rec(xdf, ri, &rec);
+       if (!xecfg->find_func)
+               return def_ff(rec, len, buf, sz, xecfg->find_func_priv);
+       return xecfg->find_func(rec, len, buf, sz, xecfg->find_func_priv);
+}
+
 struct func_line {
        long len;
        char buf[80];
@@ -128,7 +138,6 @@ struct func_line {
 static long get_func_line(xdfenv_t *xe, xdemitconf_t const *xecfg,
                          struct func_line *func_line, long start, long limit)
 {
-       find_func_t ff = xecfg->find_func ? xecfg->find_func : def_ff;
        long l, size, step = (start > limit) ? -1 : 1;
        char *buf, dummy[1];
 
@@ -136,9 +145,7 @@ static long get_func_line(xdfenv_t *xe, xdemitconf_t const 
*xecfg,
        size = func_line ? sizeof(func_line->buf) : sizeof(dummy);
 
        for (l = start; l != limit && 0 <= l && l < xe->xdf1.nrec; l += step) {
-               const char *rec;
-               long reclen = xdl_get_rec(&xe->xdf1, l, &rec);
-               long len = ff(rec, reclen, buf, size, xecfg->find_func_priv);
+               long len = match_func_rec(&xe->xdf1, xecfg, l, buf, size);
                if (len >= 0) {
                        if (func_line)
                                func_line->len = len;
-- 
2.8.3

--
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