[PATCH 2/2] Simplify "external diff from attributes" logic

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Since we already store the given diff attribute in the filespec,
we can just as well reuse that, instead of going through the whole
attributes checking process again, when checking for an external
diff program.

Signed-off-by: Johannes Schindelin <johannes.schindelin@xxxxxx>
---
 diff.c |   39 +++++++++++++++++----------------------
 1 files changed, 17 insertions(+), 22 deletions(-)

diff --git a/diff.c b/diff.c
index a5444df..121524e 100644
--- a/diff.c
+++ b/diff.c
@@ -1195,6 +1195,20 @@ int diff_filespec_is_binary(struct diff_filespec *one)
 	return one->is_binary;
 }
 
+static const char *external_diff_attr(struct diff_filespec *one)
+{
+	diff_filespec_check_attr(one);
+	if (one->diff_attr) {
+		struct ll_diff_driver *drv;
+
+		read_config_if_needed();
+		for (drv = user_diff; drv; drv = drv->next)
+			if (!strcmp(drv->name, one->diff_attr))
+				return drv->cmd;
+	}
+	return NULL;
+}
+
 static const char *funcname_pattern(const char *ident)
 {
 	struct funcname_pattern *pp;
@@ -1860,27 +1874,6 @@ static void run_external_diff(const char *pgm,
 	}
 }
 
-static const char *external_diff_attr(const char *name)
-{
-	struct git_attr_check attr_diff_check;
-
-	setup_diff_attr_check(&attr_diff_check);
-	if (!git_checkattr(name, 1, &attr_diff_check)) {
-		const char *value = attr_diff_check.value;
-		if (!ATTR_TRUE(value) &&
-		    !ATTR_FALSE(value) &&
-		    !ATTR_UNSET(value)) {
-			struct ll_diff_driver *drv;
-
-			read_config_if_needed();
-			for (drv = user_diff; drv; drv = drv->next)
-				if (!strcmp(drv->name, value))
-					return drv->cmd;
-		}
-	}
-	return NULL;
-}
-
 static void run_diff_cmd(const char *pgm,
 			 const char *name,
 			 const char *other,
@@ -1893,7 +1886,9 @@ static void run_diff_cmd(const char *pgm,
 	if (!o->allow_external)
 		pgm = NULL;
 	else {
-		const char *cmd = external_diff_attr(name);
+		const char *cmd = external_diff_attr(one);
+		if (!cmd)
+			cmd = external_diff_attr(two);
 		if (cmd)
 			pgm = cmd;
 	}
-- 
1.5.3.rc0.2712.g125b7f

-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux