Subject: Re: [PATCH 6/9] builtin-init-db.c: use parse_options()

From: Olivier Marin <[email-masked]>
Date: Fri, 25 Jul 2008 17:20:37 +0200

Michele Ballabio a écrit :
> 
>>> +		  PARSE_OPT_OPTARG, parse_opt_shared_cb, PERM_GROUP },
>> Are you sure the default value is really used here?
> 
> Yes. Perhaps I don't understand your question. Can you explain what you mean?

If I read the code correctly in parse-options.c, with OPTION_CALLBACK, the
default value is not "automatically" used. You can use it in your callback
if you want, but because you don't, I think it's never used.

> Would you like this better, with PARSE_OPT_NONEG?

No, I'm fine with the negated option.

> Or do you prefer changing the callback like this:
> 
> +static int parse_opt_shared_cb(const struct option *opt, const char *arg,
> +                              int unset)
> +{
> +       *(int *)(opt->value) = unset ? PERM_UMASK : git_config_perm("arg", arg);
> +       return 0;
> +}

I think it's better but what I suggested is more something like:

static int parse_opt_shared_cb(const struct option *opt, const char *arg,
			       int unset)
{
	*(int *)(opt->value) = unset ? -1 : git_config_perm("arg", arg);
	return 0;
}

int shared = -1;

{ OPTION_CALLBACK, 0, "shared", &shared,
	"permissions", "setup as shared repository",
	PARSE_OPT_OPTARG, parse_perm_callback },

if (shared >= 0)
	shared_repository = shared;

This way we do not change shared_repository during parsing, so we do not
loose the initial value.

But it seems nobody care about this kind of details, so perhaps, you can
just ignore this suggestion.

Olivier.