| static int driver_cb(struct userdiff_driver *driver, |
| enum userdiff_driver_type type, void *priv) |
| enum userdiff_driver_type *want_type = priv; |
| if (type & *want_type && driver->funcname.pattern) |
| static int cmd__userdiff_config(const char *var, const char *value, void *cb) |
| if (userdiff_config(var, value) < 0) |
| int cmd__userdiff(int argc, const char **argv) |
| enum userdiff_driver_type want = 0; |
| if (!strcmp(argv[1], "list-drivers")) |
| want = (USERDIFF_DRIVER_TYPE_BUILTIN | |
| USERDIFF_DRIVER_TYPE_CUSTOM); |
| else if (!strcmp(argv[1], "list-builtin-drivers")) |
| want = USERDIFF_DRIVER_TYPE_BUILTIN; |
| else if (!strcmp(argv[1], "list-custom-drivers")) |
| want = USERDIFF_DRIVER_TYPE_CUSTOM; |
| return error("unknown argument %s", argv[1]); |
| if (want & USERDIFF_DRIVER_TYPE_CUSTOM) { |
| git_config(cmd__userdiff_config, NULL); |
| for_each_userdiff_driver(driver_cb, &want); |