userdiff: add and use for_each_userdiff_driver()
Refactor the userdiff_find_by_namelen() function so that a new for_each_userdiff_driver() API function does most of the work. This will be useful for the same reason we've got other for_each_*() API functions as part of various APIs, and will be used in a follow-up commit. Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
82512e008c
commit
f12fa9ee6c
13
userdiff.h
13
userdiff.h
@ -21,6 +21,12 @@ struct userdiff_driver {
|
||||
struct notes_cache *textconv_cache;
|
||||
int textconv_want_cache;
|
||||
};
|
||||
enum userdiff_driver_type {
|
||||
USERDIFF_DRIVER_TYPE_BUILTIN = 1<<0,
|
||||
USERDIFF_DRIVER_TYPE_CUSTOM = 1<<1,
|
||||
};
|
||||
typedef int (*each_userdiff_driver_fn)(struct userdiff_driver *,
|
||||
enum userdiff_driver_type, void *);
|
||||
|
||||
int userdiff_config(const char *k, const char *v);
|
||||
struct userdiff_driver *userdiff_find_by_name(const char *name);
|
||||
@ -34,4 +40,11 @@ struct userdiff_driver *userdiff_find_by_path(struct index_state *istate,
|
||||
struct userdiff_driver *userdiff_get_textconv(struct repository *r,
|
||||
struct userdiff_driver *driver);
|
||||
|
||||
/*
|
||||
* Iterate over all userdiff drivers. The userdiff_driver_type
|
||||
* argument to each_userdiff_driver_fn indicates their type. Return
|
||||
* non-zero to exit early from the loop.
|
||||
*/
|
||||
int for_each_userdiff_driver(each_userdiff_driver_fn, void *);
|
||||
|
||||
#endif /* USERDIFF */
|
||||
|
Reference in New Issue
Block a user