mirror of
https://github.com/git/git.git
synced 2024-11-27 03:53:55 +08:00
1b261c20ed
The out parameter of `git_config_string()` is a `const char **` even though we transfer ownership of memory to the caller. This is quite misleading and has led to many memory leaks all over the place. Adapt the parameter to instead be `char **`. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
53 lines
1.3 KiB
C
53 lines
1.3 KiB
C
#ifndef USERDIFF_H
|
|
#define USERDIFF_H
|
|
|
|
#include "notes-cache.h"
|
|
|
|
struct index_state;
|
|
struct repository;
|
|
|
|
struct userdiff_funcname {
|
|
char *pattern;
|
|
int cflags;
|
|
};
|
|
|
|
struct userdiff_driver {
|
|
const char *name;
|
|
char *external;
|
|
char *algorithm;
|
|
int binary;
|
|
struct userdiff_funcname funcname;
|
|
char *word_regex;
|
|
char *word_regex_multi_byte;
|
|
char *textconv;
|
|
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);
|
|
struct userdiff_driver *userdiff_find_by_path(struct index_state *istate,
|
|
const char *path);
|
|
|
|
/*
|
|
* Initialize any textconv-related fields in the driver and return it, or NULL
|
|
* if it does not have textconv enabled at all.
|
|
*/
|
|
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 */
|