Subject: Re: [PATCH 02/14] fsck.h: use use "enum object_type" instead of "int"

From: Junio C Hamano <[email-masked]>
Date: Wed, 17 Feb 2021 15:40:08 -0800

Ævar Arnfjörð Bjarmason  <[email-masked]> writes:

> Subject: Re: [PATCH 02/14] fsck.h: use use "enum object_type" instead of "int"

use use.

> Change the fsck_walk_func to use an "enum object_type" instead of an
> "int" type. The types are compatible, and ever since this was added in
> 355885d5315 (add generic, type aware object chain walker, 2008-02-25)
> we've used entries from object_type (OBJ_BLOB etc.).
>
> So this doesn't really change anything as far as the generated code is
> concerned, it just gives the compiler more information and makes this
> easier to read.

Yup, as long as we won't trick the compiler into complaining "ah,
but you are not covering OBJ_OFS_DELTA or OBJ_BAD values in your
switch statement", I think a change like this is a good thing.

> Signed-off-by: Ævar Arnfjörð Bjarmason <[email-masked]>
> ---
>  builtin/fsck.c           | 3 ++-
>  builtin/index-pack.c     | 3 ++-
>  builtin/unpack-objects.c | 3 ++-
>  fsck.h                   | 3 ++-
>  4 files changed, 8 insertions(+), 4 deletions(-)
>
> diff --git a/builtin/fsck.c b/builtin/fsck.c
> index 821e7798c70..68f0329e69e 100644
> --- a/builtin/fsck.c
> +++ b/builtin/fsck.c
> @@ -197,7 +197,8 @@ static int traverse_reachable(void)
>  	return !!result;
>  }
>  
> -static int mark_used(struct object *obj, int type, void *data, struct fsck_options *options)
> +static int mark_used(struct object *obj, enum object_type object_type,
> +		     void *data, struct fsck_options *options)
>  {
>  	if (!obj)
>  		return 1;
> diff --git a/builtin/index-pack.c b/builtin/index-pack.c
> index 54f74c48741..2f291a14d4a 100644
> --- a/builtin/index-pack.c
> +++ b/builtin/index-pack.c
> @@ -212,7 +212,8 @@ static void cleanup_thread(void)
>  	free(thread_data);
>  }
>  
> -static int mark_link(struct object *obj, int type, void *data, struct fsck_options *options)
> +static int mark_link(struct object *obj, enum object_type type,
> +		     void *data, struct fsck_options *options)
>  {
>  	if (!obj)
>  		return -1;
> diff --git a/builtin/unpack-objects.c b/builtin/unpack-objects.c
> index dd4a75e030d..ca54fd16688 100644
> --- a/builtin/unpack-objects.c
> +++ b/builtin/unpack-objects.c
> @@ -187,7 +187,8 @@ static void write_cached_object(struct object *obj, struct obj_buffer *obj_buf)
>   * that have reachability requirements and calls this function.
>   * Verify its reachability and validity recursively and write it out.
>   */
> -static int check_object(struct object *obj, int type, void *data, struct fsck_options *options)
> +static int check_object(struct object *obj, enum object_type type,
> +			void *data, struct fsck_options *options)
>  {
>  	struct obj_buffer *obj_buf;
>  
> diff --git a/fsck.h b/fsck.h
> index df0b64a2163..0c75789d219 100644
> --- a/fsck.h
> +++ b/fsck.h
> @@ -23,7 +23,8 @@ int is_valid_msg_type(const char *msg_id, const char *msg_type);
>   *     <0	error signaled and abort
>   *     >0	error signaled and do not abort
>   */
> -typedef int (*fsck_walk_func)(struct object *obj, int type, void *data, struct fsck_options *options);
> +typedef int (*fsck_walk_func)(struct object *obj, enum object_type object_type,
> +			      void *data, struct fsck_options *options);
>  
>  /* callback for fsck_object, type is FSCK_ERROR or FSCK_WARN */
>  typedef int (*fsck_error)(struct fsck_options *o,