config: add options parameter to git_config_from_mem

The underlying config parser knows how to handle a
config_options struct, but git_config_from_mem() always
passes NULL. Let's allow our callers to specify the options
struct.

We could add a "_with_options" variant, but since there are
only a handful of callers, let's just update them to pass
NULL.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Jeff King 2018-06-28 18:05:24 -04:00 committed by Junio C Hamano
parent 63583203df
commit 4574f1aace
4 changed files with 14 additions and 8 deletions

View File

@ -1569,8 +1569,10 @@ int git_config_from_file(config_fn_t fn, const char *filename, void *data)
return git_config_from_file_with_options(fn, filename, data, NULL); return git_config_from_file_with_options(fn, filename, data, NULL);
} }


int git_config_from_mem(config_fn_t fn, const enum config_origin_type origin_type, int git_config_from_mem(config_fn_t fn,
const char *name, const char *buf, size_t len, void *data) const enum config_origin_type origin_type,
const char *name, const char *buf, size_t len,
void *data, const struct config_options *opts)
{ {
struct config_source top; struct config_source top;


@ -1585,7 +1587,7 @@ int git_config_from_mem(config_fn_t fn, const enum config_origin_type origin_typ
top.do_ungetc = config_buf_ungetc; top.do_ungetc = config_buf_ungetc;
top.do_ftell = config_buf_ftell; top.do_ftell = config_buf_ftell;


return do_config_from(&top, fn, data, NULL); return do_config_from(&top, fn, data, opts);
} }


int git_config_from_blob_oid(config_fn_t fn, int git_config_from_blob_oid(config_fn_t fn,
@ -1606,7 +1608,8 @@ int git_config_from_blob_oid(config_fn_t fn,
return error("reference '%s' does not point to a blob", name); return error("reference '%s' does not point to a blob", name);
} }


ret = git_config_from_mem(fn, CONFIG_ORIGIN_BLOB, name, buf, size, data); ret = git_config_from_mem(fn, CONFIG_ORIGIN_BLOB, name, buf, size,
data, NULL);
free(buf); free(buf);


return ret; return ret;

View File

@ -68,8 +68,11 @@ extern int git_config_from_file(config_fn_t fn, const char *, void *);
extern int git_config_from_file_with_options(config_fn_t fn, const char *, extern int git_config_from_file_with_options(config_fn_t fn, const char *,
void *, void *,
const struct config_options *); const struct config_options *);
extern int git_config_from_mem(config_fn_t fn, const enum config_origin_type, extern int git_config_from_mem(config_fn_t fn,
const char *name, const char *buf, size_t len, void *data); const enum config_origin_type,
const char *name,
const char *buf, size_t len,
void *data, const struct config_options *opts);
extern int git_config_from_blob_oid(config_fn_t fn, const char *name, extern int git_config_from_blob_oid(config_fn_t fn, const char *name,
const struct object_id *oid, void *data); const struct object_id *oid, void *data);
extern void git_config_push_parameter(const char *text); extern void git_config_push_parameter(const char *text);

2
fsck.c
View File

@ -1012,7 +1012,7 @@ static int fsck_blob(struct blob *blob, const char *buf,
data.options = options; data.options = options;
data.ret = 0; data.ret = 0;
if (git_config_from_mem(fsck_gitmodules_fn, CONFIG_ORIGIN_BLOB, if (git_config_from_mem(fsck_gitmodules_fn, CONFIG_ORIGIN_BLOB,
".gitmodules", buf, size, &data)) ".gitmodules", buf, size, &data, NULL))
data.ret |= report(options, &blob->object, data.ret |= report(options, &blob->object,
FSCK_MSG_GITMODULES_PARSE, FSCK_MSG_GITMODULES_PARSE,
"could not parse gitmodules blob"); "could not parse gitmodules blob");

View File

@ -561,7 +561,7 @@ static const struct submodule *config_from(struct submodule_cache *cache,
parameter.gitmodules_oid = &oid; parameter.gitmodules_oid = &oid;
parameter.overwrite = 0; parameter.overwrite = 0;
git_config_from_mem(parse_config, CONFIG_ORIGIN_SUBMODULE_BLOB, rev.buf, git_config_from_mem(parse_config, CONFIG_ORIGIN_SUBMODULE_BLOB, rev.buf,
config, config_size, &parameter); config, config_size, &parameter, NULL);
strbuf_release(&rev); strbuf_release(&rev);
free(config); free(config);