Tanay Abhra <[email protected]> writes:
> +int git_configset_get_string_const(struct config_set *cs, const char *key,
> const char **dest)
> +{
> + const char *value;
> + if (!git_configset_get_value(cs, key, &value))
> + return git_config_string(dest, key, value);
> + else
> + return 1;
> +}
> +
> +int git_configset_get_string(struct config_set *cs, const char *key, char
> **dest)
> +{
> + const char *value;
> + if (!git_configset_get_value(cs, key, &value)) {
> + if (!value)
> + return config_error_nonbool(key);
> + *dest = xstrdup(value);
> + return 0;
> + }
> + else
> + return 1;
> +}
Hmm, do we really need duplicate and an almost identical
implementations?
I would have expected either one of these two (expecting the latter
more than the former from the discussion):
1. Because git_configset_get_string_const() returns a const string
not to be touched by the caller, it does not even xstrdup(),
while git_configset_get_string() does.
2. These behave identically, and the only reason we have two is
because some callers want to receive the string in "char *"
while others want to use "const char *".
If you were going route #1, then you would need duplicate but subtly
different implementations; get_string_const() variant would not be
calling git_config_string() because it does xstrdup() the value and
give the caller a new string the caller has to free.
If you were going route #2, the I would have expected there is only
one implementation, _get_string(), and _get_string_const() would
call it while casting the dest parameter it receives.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html