From: Junio C Hamano Date: Thu, 28 Aug 2014 20:43:41 GMT Subject: Re: [PATCH 1/6] Refactor type_from_string() to avoid die()ing in case of errors Message-ID: In-Reply-To: Johannes Schindelin writes: > In the next commits, we will enhance the fsck_tag() function to check > tag objects more thoroughly. To this end, we need a function to verify > that a given string is a valid object type, but that does not die() in > the negative case. > > Signed-off-by: Johannes Schindelin > --- > object.c | 13 ++++++++++++- > object.h | 1 + > 2 files changed, 13 insertions(+), 1 deletion(-) > > diff --git a/object.c b/object.c > index a16b9f9..5eee592 100644 > --- a/object.c > +++ b/object.c > @@ -33,13 +33,24 @@ const char *typename(unsigned int type) > return object_type_strings[type]; > } > > -int type_from_string(const char *str) > +int type_from_string_gently(const char *str) > { > int i; > > for (i = 1; i < ARRAY_SIZE(object_type_strings); i++) > if (!strcmp(str, object_type_strings[i])) > return i; > + > + return -1; > +} > + > +int type_from_string(const char *str) > +{ > + int i = type_from_string_gently(str); > + > + if (i >= 0) > + return i; > + > die("invalid object type \"%s\"", str); > } Hmph. The above is not wrong per-se, but I would have done int type_from_string_gently(const char *str, int gentle); #define type_from_string(str) type_from_string_gently((str), 1) and added two lines to renamed type_from_string() function + if (gently) + return -1;