Subject: Re: [PATCH 3/3][GSOC] fsck: use is_dot_or_dotdot() instead of strcmp()

From: Junio C Hamano <[email-masked]>
Date: Mon, 17 Mar 2014 15:39:26 -0700

Hiroyuki Sano <[email-masked]> writes:

> The is_dot_or_dotdot() is used to check if the string is either "." or "..".
>
> Signed-off-by: Hiroyuki Sano <[email-masked]>
> ---
>  fsck.c | 11 +++++++----
>  1 file changed, 7 insertions(+), 4 deletions(-)
>
> diff --git a/fsck.c b/fsck.c
> index b3022ad..c9d7784 100644
> --- a/fsck.c
> +++ b/fsck.c
> @@ -6,6 +6,7 @@
>  #include "commit.h"
>  #include "tag.h"
>  #include "fsck.h"
> +#include "dir.h"
>  
>  static int fsck_walk_tree(struct tree *tree, fsck_walk_func walk, void *data)
>  {
> @@ -171,10 +172,12 @@ static int fsck_tree(struct tree *item, int strict, fsck_error error_func)
>  			has_full_path = 1;
>  		if (!*name)
>  			has_empty_name = 1;
> -		if (!strcmp(name, "."))
> -			has_dot = 1;
> -		if (!strcmp(name, ".."))
> -			has_dotdot = 1;
> +		if (is_dot_or_dotdot(name)) {
> +			if (!name[1])
> +				has_dot = 1;
> +			else
> +				has_dotdot = 1;
> +		}

In what way is this an improvement?

This looks like "because I was told to", not "because the resulting
code is better" to me.

The other patch on diff-no-index looked sensible, though.

>  		if (!strcmp(name, ".git"))
>  			has_dotgit = 1;
>  		has_zero_pad |= *(char *)desc.buffer == '0';