diff mbox series

[05/30] tree-walk.c: migrate to using new "object_type" field when possible

Message ID 20210308150650.18626-6-avarab@gmail.com (mailing list archive)
State New, archived
Headers show
Series Move the read_tree() function to its only user | expand

Commit Message

Ævar Arnfjörð Bjarmason March 8, 2021, 3:06 p.m. UTC
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
 tree-walk.c | 24 +++++++++++++-----------
 1 file changed, 13 insertions(+), 11 deletions(-)

Comments

Elijah Newren March 9, 2021, 4:44 p.m. UTC | #1
On Mon, Mar 8, 2021 at 7:07 AM Ævar Arnfjörð Bjarmason <avarab@gmail.com> wrote:
>
> Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
> ---
>  tree-walk.c | 24 +++++++++++++-----------
>  1 file changed, 13 insertions(+), 11 deletions(-)
>
> diff --git a/tree-walk.c b/tree-walk.c
> index b210967b73b..6e9161901d8 100644
> --- a/tree-walk.c
> +++ b/tree-walk.c
> @@ -521,7 +521,7 @@ int traverse_trees(struct index_state *istate,
>                         if (!entry[i].path)
>                                 continue;
>                         mask |= 1ul << i;
> -                       if (S_ISDIR(entry[i].mode))
> +                       if (entry[i].object_type == OBJ_TREE)
>                                 dirmask |= 1ul << i;
>                         e = &entry[i];
>                 }
> @@ -892,8 +892,8 @@ static int match_entry(const struct pathspec_item *item,
>                  * nothing else (to handle 'submod/' and 'submod'
>                  * uniformly).
>                  */
> -               if (!S_ISDIR(entry->mode) &&
> -                   (!S_ISGITLINK(entry->mode) || matchlen > pathlen + 1))
> +               if (entry->object_type != OBJ_TREE &&
> +                   (entry->object_type != OBJ_COMMIT || matchlen > pathlen + 1))
>                         return 0;
>         }
>
> @@ -1038,7 +1038,7 @@ static enum interesting do_match(struct index_state *istate,
>                     ps->max_depth == -1)
>                         return all_entries_interesting;
>                 return within_depth(base->buf + base_offset, baselen,
> -                                   !!S_ISDIR(entry->mode),
> +                                   entry->object_type == OBJ_TREE,
>                                     ps->max_depth) ?
>                         entry_interesting : entry_not_interesting;
>         }
> @@ -1071,7 +1071,7 @@ static enum interesting do_match(struct index_state *istate,
>
>                         if (within_depth(base_str + matchlen + 1,
>                                          baselen - matchlen - 1,
> -                                        !!S_ISDIR(entry->mode),
> +                                        entry->object_type == OBJ_TREE,
>                                          ps->max_depth))
>                                 goto interesting;
>                         else
> @@ -1094,7 +1094,8 @@ static enum interesting do_match(struct index_state *istate,
>                                  * Match all directories. We'll try to
>                                  * match files later on.
>                                  */
> -                               if (ps->recursive && S_ISDIR(entry->mode))
> +                               if (ps->recursive &&
> +                                   entry->object_type == OBJ_TREE)
>                                         return entry_interesting;
>
>                                 /*
> @@ -1105,7 +1106,7 @@ static enum interesting do_match(struct index_state *istate,
>                                  * be performed in the submodule itself.
>                                  */
>                                 if (ps->recurse_submodules &&
> -                                   S_ISGITLINK(entry->mode) &&
> +                                   entry->object_type == OBJ_COMMIT &&
>                                     !ps_strncmp(item, match + baselen,
>                                                 entry->path,
>                                                 item->nowildcard_len - baselen))
> @@ -1154,7 +1155,8 @@ static enum interesting do_match(struct index_state *istate,
>                  * character.  More accurate matching can then
>                  * be performed in the submodule itself.
>                  */
> -               if (ps->recurse_submodules && S_ISGITLINK(entry->mode) &&
> +               if (ps->recurse_submodules &&
> +                   entry->object_type == OBJ_COMMIT &&
>                     !ps_strncmp(item, match, base->buf + base_offset,
>                                 item->nowildcard_len)) {
>                         strbuf_setlen(base, base_offset + baselen);
> @@ -1170,7 +1172,7 @@ static enum interesting do_match(struct index_state *istate,
>                  * in future, see
>                  * https://lore.kernel.org/git/7vmxo5l2g4.fsf@alter.siamese.dyndns.org/
>                  */
> -               if (ps->recursive && S_ISDIR(entry->mode))
> +               if (ps->recursive && entry->object_type == OBJ_TREE)
>                         return entry_interesting;
>                 continue;
>  interesting:
> @@ -1193,7 +1195,7 @@ static enum interesting do_match(struct index_state *istate,
>                          * can probably return all_entries_interesting or
>                          * all_entries_not_interesting here if matched.
>                          */
> -                       if (S_ISDIR(entry->mode))
> +                       if (entry->object_type == OBJ_TREE)
>                                 return entry_interesting;
>
>                         strbuf_add(base, entry->path, pathlen);
> @@ -1269,7 +1271,7 @@ enum interesting tree_entry_interesting(struct index_state *istate,
>                 return positive;
>
>         /* #15, #19 */
> -       if (S_ISDIR(entry->mode) &&
> +       if (entry->object_type == OBJ_TREE &&
>             positive >= entry_interesting &&
>             negative == entry_interesting)
>                 return entry_interesting;
> --
> 2.31.0.rc0.126.g04f22c5b82

To me, this commit shows the advantage of the new field; the new code
looks much more readable.
diff mbox series

Patch

diff --git a/tree-walk.c b/tree-walk.c
index b210967b73b..6e9161901d8 100644
--- a/tree-walk.c
+++ b/tree-walk.c
@@ -521,7 +521,7 @@  int traverse_trees(struct index_state *istate,
 			if (!entry[i].path)
 				continue;
 			mask |= 1ul << i;
-			if (S_ISDIR(entry[i].mode))
+			if (entry[i].object_type == OBJ_TREE)
 				dirmask |= 1ul << i;
 			e = &entry[i];
 		}
@@ -892,8 +892,8 @@  static int match_entry(const struct pathspec_item *item,
 		 * nothing else (to handle 'submod/' and 'submod'
 		 * uniformly).
 		 */
-		if (!S_ISDIR(entry->mode) &&
-		    (!S_ISGITLINK(entry->mode) || matchlen > pathlen + 1))
+		if (entry->object_type != OBJ_TREE &&
+		    (entry->object_type != OBJ_COMMIT || matchlen > pathlen + 1))
 			return 0;
 	}
 
@@ -1038,7 +1038,7 @@  static enum interesting do_match(struct index_state *istate,
 		    ps->max_depth == -1)
 			return all_entries_interesting;
 		return within_depth(base->buf + base_offset, baselen,
-				    !!S_ISDIR(entry->mode),
+				    entry->object_type == OBJ_TREE,
 				    ps->max_depth) ?
 			entry_interesting : entry_not_interesting;
 	}
@@ -1071,7 +1071,7 @@  static enum interesting do_match(struct index_state *istate,
 
 			if (within_depth(base_str + matchlen + 1,
 					 baselen - matchlen - 1,
-					 !!S_ISDIR(entry->mode),
+					 entry->object_type == OBJ_TREE,
 					 ps->max_depth))
 				goto interesting;
 			else
@@ -1094,7 +1094,8 @@  static enum interesting do_match(struct index_state *istate,
 				 * Match all directories. We'll try to
 				 * match files later on.
 				 */
-				if (ps->recursive && S_ISDIR(entry->mode))
+				if (ps->recursive &&
+				    entry->object_type == OBJ_TREE)
 					return entry_interesting;
 
 				/*
@@ -1105,7 +1106,7 @@  static enum interesting do_match(struct index_state *istate,
 				 * be performed in the submodule itself.
 				 */
 				if (ps->recurse_submodules &&
-				    S_ISGITLINK(entry->mode) &&
+				    entry->object_type == OBJ_COMMIT &&
 				    !ps_strncmp(item, match + baselen,
 						entry->path,
 						item->nowildcard_len - baselen))
@@ -1154,7 +1155,8 @@  static enum interesting do_match(struct index_state *istate,
 		 * character.  More accurate matching can then
 		 * be performed in the submodule itself.
 		 */
-		if (ps->recurse_submodules && S_ISGITLINK(entry->mode) &&
+		if (ps->recurse_submodules &&
+		    entry->object_type == OBJ_COMMIT &&
 		    !ps_strncmp(item, match, base->buf + base_offset,
 				item->nowildcard_len)) {
 			strbuf_setlen(base, base_offset + baselen);
@@ -1170,7 +1172,7 @@  static enum interesting do_match(struct index_state *istate,
 		 * in future, see
 		 * https://lore.kernel.org/git/7vmxo5l2g4.fsf@alter.siamese.dyndns.org/
 		 */
-		if (ps->recursive && S_ISDIR(entry->mode))
+		if (ps->recursive && entry->object_type == OBJ_TREE)
 			return entry_interesting;
 		continue;
 interesting:
@@ -1193,7 +1195,7 @@  static enum interesting do_match(struct index_state *istate,
 			 * can probably return all_entries_interesting or
 			 * all_entries_not_interesting here if matched.
 			 */
-			if (S_ISDIR(entry->mode))
+			if (entry->object_type == OBJ_TREE)
 				return entry_interesting;
 
 			strbuf_add(base, entry->path, pathlen);
@@ -1269,7 +1271,7 @@  enum interesting tree_entry_interesting(struct index_state *istate,
 		return positive;
 
 	/* #15, #19 */
-	if (S_ISDIR(entry->mode) &&
+	if (entry->object_type == OBJ_TREE &&
 	    positive >= entry_interesting &&
 	    negative == entry_interesting)
 		return entry_interesting;