config: convert multi_replace to flags
We will extend the flexibility of the config API. Before doing so, let's take an existing 'int multi_replace' parameter and replace it with a new 'unsigned flags' parameter that can take multiple options as a bit field. Update all callers that specified multi_replace to now specify the CONFIG_FLAGS_MULTI_REPLACE flag. To add more clarity, extend the documentation of git_config_set_multivar_in_file() including a clear labeling of its arguments. Other config API methods in config.h require only a change of the final parameter from 'int' to 'unsigned'. Signed-off-by: Derrick Stolee <dstolee@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
faefdd61ec
commit
504ee1290e
29
config.h
29
config.h
@ -256,9 +256,22 @@ void git_config_set(const char *, const char *);
|
||||
|
||||
int git_config_parse_key(const char *, char **, size_t *);
|
||||
int git_config_key_is_valid(const char *key);
|
||||
int git_config_set_multivar_gently(const char *, const char *, const char *, int);
|
||||
void git_config_set_multivar(const char *, const char *, const char *, int);
|
||||
int git_config_set_multivar_in_file_gently(const char *, const char *, const char *, const char *, int);
|
||||
|
||||
/*
|
||||
* The following macros specify flag bits that alter the behavior
|
||||
* of the git_config_set_multivar*() methods.
|
||||
*/
|
||||
|
||||
/*
|
||||
* When CONFIG_FLAGS_MULTI_REPLACE is specified, all matching key/values
|
||||
* are removed before a single new pair is written. If the flag is not
|
||||
* present, then set operations replace only the first match.
|
||||
*/
|
||||
#define CONFIG_FLAGS_MULTI_REPLACE (1 << 0)
|
||||
|
||||
int git_config_set_multivar_gently(const char *, const char *, const char *, unsigned);
|
||||
void git_config_set_multivar(const char *, const char *, const char *, unsigned);
|
||||
int git_config_set_multivar_in_file_gently(const char *, const char *, const char *, const char *, unsigned);
|
||||
|
||||
/**
|
||||
* takes four parameters:
|
||||
@ -276,13 +289,15 @@ int git_config_set_multivar_in_file_gently(const char *, const char *, const cha
|
||||
* - the value regex, as a string. It will disregard key/value pairs where value
|
||||
* does not match.
|
||||
*
|
||||
* - a multi_replace value, as an int. If value is equal to zero, nothing or only
|
||||
* one matching key/value is replaced, else all matching key/values (regardless
|
||||
* how many) are removed, before the new pair is written.
|
||||
* - a flags value with bits corresponding to the CONFIG_FLAG_* macros.
|
||||
*
|
||||
* It returns 0 on success.
|
||||
*/
|
||||
void git_config_set_multivar_in_file(const char *, const char *, const char *, const char *, int);
|
||||
void git_config_set_multivar_in_file(const char *config_filename,
|
||||
const char *key,
|
||||
const char *value,
|
||||
const char *value_regex,
|
||||
unsigned flags);
|
||||
|
||||
/**
|
||||
* rename or remove sections in the config file
|
||||
|
Reference in New Issue
Block a user