From 3813e69031d2df2702f50b9649fa2e40ea11e558 Mon Sep 17 00:00:00 2001 From: Jeff King Date: Mon, 23 May 2011 16:30:14 -0400 Subject: 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 Signed-off-by: Junio C Hamano --- userdiff.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'userdiff.c') diff --git a/userdiff.c b/userdiff.c index 1ff47977d..5d62e795a 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; +} -- cgit v1.2.1