git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2 3/3][GSOC] fsck: replace if-statements to logical expressions

From
Hiroyuki Sano <sh19910711@gmail.com>
Date
Mar 19, 2014, 11:23 UTC
Message-ID
<1395228230-10189-3-git-send-email-sh19910711@gmail.com>
In-Reply-To
<1395228230-10189-1-git-send-email-sh19910711@gmail.com>

There were two different ways to check flag values, one way is using if-statement, and the other way is using logical expression.

To make sensible, replace if-statements to logical expressions in fsck_tree().

When checking "has_dot" and "has_dotdot", use is_dot_or_dotdot() instead of strcmp() to avoid hard coding.

The is_dot_or_dotdot() is used to check if the string is either "." or "..". Include the "dir.h" header file to use is_dot_or_dotdot().

Signed-off-by: Hiroyuki Sano <sh19910711@gmail.com>
---
 fsck.c | 19 +++++++------------
 1 file changed, 7 insertions(+), 12 deletions(-)
diff --git a/fsck.c b/fsck.c
index b3022ad..08f613d 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)
 {
@@ -165,18 +166,12 @@ static int fsck_tree(struct tree *item, int strict, fsck_error error_func)
 
 		sha1 = tree_entry_extract(&desc, &name, &mode);
 
-		if (is_null_sha1(sha1))
-			has_null_sha1 = 1;
-		if (strchr(name, '/'))
-			has_full_path = 1;
-		if (!*name)
-			has_empty_name = 1;
-		if (!strcmp(name, "."))
-			has_dot = 1;
-		if (!strcmp(name, ".."))
-			has_dotdot = 1;
-		if (!strcmp(name, ".git"))
-			has_dotgit = 1;
+		has_null_sha1 |= is_null_sha1(sha1);
+		has_full_path |= !!strchr(name, '/');
+		has_empty_name |= !*name;
+		has_dot |= is_dot_or_dotdot(name) && !name[1];
+		has_dotdot |= is_dot_or_dotdot(name) && name[1];
+		has_dotgit |= !strcmp(name, ".git");
 		has_zero_pad |= *(char *)desc.buffer == '0';
 		update_tree_entry(&desc);
 
-- 
1.9.0
Previous: Eric SunshineNext: Junio C Hamano
Message 4 of 6 in “[GSOC] diff: rename read_directory() to get_path_list()”
  1. 1/3 [GSOC] diff: rename read_directory() to get_path_list()Hiroyuki Sano, Mar 19, 2014
  2. 2/3 [GSOC] diff: use is_dot_or_dotdot() instead of strcmp()Hiroyuki Sano, Mar 19, 2014
  3. Eric SunshineMar 19, 2014
  4. 3/3 [GSOC] fsck: replace if-statements to logical expressionsHiroyuki Sano, Mar 19, 2014
  5. Junio C HamanoMar 19, 2014
  6. Eric SunshineMar 19, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.