Jeff King <peff@xxxxxxxx> writes: > There are a few parse-option callbacks that do not look at their "unset" > parameters, but also do not set PARSE_OPT_NONEG. At first glance this > seems like a bug, as we'd ignore "--no-if-exists", etc. > > But they do work fine, because when "unset" is true, then "arg" is NULL. > And all three functions pass "arg" on to helper functions which do the > right thing with the NULL. Yuck. That is ugly. > Note that this shortcut would not be correct if any callback used > PARSE_OPT_NOARG (in which case "arg" would be NULL but "unset" would be > false). But none of these do. That is even uglier. Unlike the BUG_ON_OPT_NEG() and BUG_ON_OPT_ARG() that catch discrepancies between options[] flags and the expectation by the callback function, there is no way for us to protect against such mistakes? > So the code is fine as-is. But we'll want to mark the unused "unset" > parameters to quiet -Wunused-parameter. OK. Thanks. > Signed-off-by: Jeff King <peff@xxxxxxxx> > --- > builtin/interpret-trailers.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/builtin/interpret-trailers.c b/builtin/interpret-trailers.c > index 6aadce6a1e..a5f9adf6b9 100644 > --- a/builtin/interpret-trailers.c > +++ b/builtin/interpret-trailers.c > @@ -24,19 +24,19 @@ static enum trailer_if_exists if_exists; > static enum trailer_if_missing if_missing; > > static int option_parse_where(const struct option *opt, > - const char *arg, int unset) > + const char *arg, int unset UNUSED) > { > return trailer_set_where(opt->value, arg); > } > > static int option_parse_if_exists(const struct option *opt, > - const char *arg, int unset) > + const char *arg, int unset UNUSED) > { > return trailer_set_if_exists(opt->value, arg); > } > > static int option_parse_if_missing(const struct option *opt, > - const char *arg, int unset) > + const char *arg, int unset UNUSED) > { > return trailer_set_if_missing(opt->value, arg); > }