if (!strcmp(type, "binary"))
return parse_tristate(&drv->binary, k, v);
if (!strcmp(type, "command"))
- return git_config_string((char **) &drv->external, k, v);
- return git_config_string(&drv->external.cmd, k, v);
++ return git_config_string((char **) &drv->external.cmd, k, v);
+ if (!strcmp(type, "trustexitcode")) {
+ drv->external.trust_exit_code = git_config_bool(k, v);
+ return 0;
+ }
if (!strcmp(type, "textconv"))
- return git_config_string(&drv->textconv, k, v);
+ return git_config_string((char **) &drv->textconv, k, v);
if (!strcmp(type, "cachetextconv"))
return parse_bool(&drv->textconv_want_cache, k, v);
if (!strcmp(type, "wordregex"))
int cflags;
};
+ struct external_diff {
+ char *cmd;
+ unsigned trust_exit_code:1;
+ };
+
struct userdiff_driver {
const char *name;
- const char *external;
+ struct external_diff external;
- char *algorithm;
+ const char *algorithm;
int binary;
struct userdiff_funcname funcname;
- char *word_regex;
- char *word_regex_multi_byte;
- char *textconv;
+ const char *word_regex;
+ const char *word_regex_multi_byte;
+ const char *textconv;
struct notes_cache *textconv_cache;
int textconv_want_cache;
};