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

[PATCH 5/6] run_external_diff: hoist common bits out of conditional

From
Jeff King <peff@peff.net>
Date
Apr 19, 2014, 19:20 UTC
Message-ID
<20140419192045.GA9189@sigill.intra.peff.net>
In-Reply-To
<20140419191128.GA9266@sigill.intra.peff.net>

Whether we have diff_filespecs to give to the diff command or not, we always are going to run the program and pass it the pathname. Let's pull that duplicated part out of the conditional to make it more obvious.

Signed-off-by: Jeff King <peff@peff.net>
---
 diff.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/diff.c b/diff.c
index fdb7f6c..173b657 100644
--- a/diff.c
+++ b/diff.c
@@ -2907,26 +2907,24 @@ static void run_external_diff(const char *pgm,
 	struct argv_array env = ARGV_ARRAY_INIT;
 	struct diff_queue_struct *q = &diff_queued_diff;
 
+	argv_array_push(&argv, pgm);
+	argv_array_push(&argv, name);
+
 	if (one && two) {
 		struct diff_tempfile *temp_one, *temp_two;
 		const char *othername = (other ? other : name);
 		temp_one = prepare_temp_file(name, one);
 		temp_two = prepare_temp_file(othername, two);
-		argv_array_push(&argv, pgm);
-		argv_array_push(&argv, name);
 		argv_array_push(&argv, temp_one->name);
 		argv_array_push(&argv, temp_one->hex);
 		argv_array_push(&argv, temp_one->mode);
 		argv_array_push(&argv, temp_two->name);
 		argv_array_push(&argv, temp_two->hex);
 		argv_array_push(&argv, temp_two->mode);
 		if (other) {
 			argv_array_push(&argv, other);
 			argv_array_push(&argv, xfrm_msg);
 		}
-	} else {
-		argv_array_push(&argv, pgm);
-		argv_array_push(&argv, name);
 	}
 
 	argv_array_pushf(&env, "GIT_DIFF_PATH_COUNTER=%d", ++o->diff_path_counter);
-- 
1.9.1.656.ge8a0637
Previous: Jeff KingNext: Jeff King
Message 9 of 10 in “run_external_diff cleanups”
  1. 0/6 run_external_diff cleanupsJeff King, Apr 19, 2014
  2. 1/6 run_external_diff: use an argv_array for the command lineJeff King, Apr 19, 2014
  3. Max LApr 19, 2014
  4. Jeff KingApr 20, 2014
  5. Eric SunshineApr 20, 2014
  6. 2/6 run_external_diff: use an argv_array for the environmentJeff King, Apr 19, 2014
  7. 3/6 run_external_diff: clean up error handlingJeff King, Apr 19, 2014
  8. 4/6 run_external_diff: drop fflush(NULL)Jeff King, Apr 19, 2014
  9. 5/6 run_external_diff: hoist common bits out of conditionalJeff King, Apr 19, 2014
  10. 6/6 run_external_diff: refactor cmdline setup logicJeff King, Apr 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.