diff options
author | Jeff King <peff@peff.net> | 2011-05-23 16:30:14 -0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-05-23 15:46:02 -0700 |
commit | 3813e69031d2df2702f50b9649fa2e40ea11e558 (patch) | |
tree | 1c39328b22138741719fd561c9f32b1ac5d0cffe /userdiff.c | |
parent | 4d5f34719970274990cded2201957eb2262bca10 (diff) | |
download | git-3813e69031d2df2702f50b9649fa2e40ea11e558.tar.gz |
refactor get_textconv to not require diff_filespec
This function actually does two things:
1. Load the userdiff driver for the filespec.
2. Decide whether the driver has a textconv component, and
initialize the textconv cache if applicable.
Only part (1) requires the filespec object, and some callers
may not have a filespec at all. So let's split them it into
two functions, and put part (2) with the userdiff code,
which is a better fit.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'userdiff.c')
-rw-r--r-- | userdiff.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/userdiff.c b/userdiff.c index 1ff47977d5..5d62e795a2 100644 --- a/userdiff.c +++ b/userdiff.c @@ -267,3 +267,20 @@ struct userdiff_driver *userdiff_find_by_path(const char *path) return NULL; return userdiff_find_by_name(check.value); } + +struct userdiff_driver *userdiff_get_textconv(struct userdiff_driver *driver) +{ + if (!driver->textconv) + return NULL; + + if (driver->textconv_want_cache && !driver->textconv_cache) { + struct notes_cache *c = xmalloc(sizeof(*c)); + struct strbuf name = STRBUF_INIT; + + strbuf_addf(&name, "textconv/%s", driver->name); + notes_cache_init(c, name.buf, driver->textconv); + driver->textconv_cache = c; + } + + return driver; +} |