Re: [PATCH 1/4] parse: prefer bool to int for boolean returns
- From
Patrick Steinhardt <ps@pks.im>
- Date
- Dec 4, 2025, 11:23 UTC
- Message-ID
- <aTFvL1GV76o-tUJL@pks.im>
- In-Reply-To
- <20251130131441.GA199335@coredump.intra.peff.net>
On Sun, Nov 30, 2025 at 08:14:41AM -0500, Jeff King wrote:
Show 10 quoted lines
> All of the integer parsing functions in parse.[ch] return an int that is > "0" for failure or "1" for success. Since most of the other functions in > Git use "0" for success and "-1" for failure, this can be confusing. > Let's switch the return types to bool to make it clear that we are using > this other convention. Callers should not need to update at all. > > Signed-off-by: Jeff King <peff@peff.net> > --- > Obviously not strictly necessary for this series, but I think a good > idea regardless of the rest of it.
Agreed, I think this is a sensible change as it helps guide users. I know that I was confused by the API several times already.
Show 27 quoted lines
> diff --git a/parse.c b/parse.c > index 48313571aa..f626846def 100644 > --- a/parse.c > +++ b/parse.c > int git_parse_maybe_bool_text(const char *value) > diff --git a/parse.h b/parse.h > index ea32de9a91..f80cc5b9fd 100644 > --- a/parse.h > +++ b/parse.h > @@ -1,13 +1,13 @@ > #ifndef PARSE_H > #define PARSE_H > > -int git_parse_signed(const char *value, intmax_t *ret, intmax_t max); > -int git_parse_unsigned(const char *value, uintmax_t *ret, uintmax_t max); > -int git_parse_ssize_t(const char *, ssize_t *); > -int git_parse_ulong(const char *, unsigned long *); > -int git_parse_int(const char *value, int *ret); > -int git_parse_int64(const char *value, int64_t *ret); > -int git_parse_double(const char *value, double *ret); > +bool git_parse_signed(const char *value, intmax_t *ret, intmax_t max); > +bool git_parse_unsigned(const char *value, uintmax_t *ret, uintmax_t max); > +bool git_parse_ssize_t(const char *, ssize_t *); > +bool git_parse_ulong(const char *, unsigned long *); > +bool git_parse_int(const char *value, int *ret); > +bool git_parse_int64(const char *value, int64_t *ret); > +bool git_parse_double(const char *value, double *ret);
Should we maybe add a comment to these functions while at it to document their behaviour?
Patrick