Commit 628e92cdb31cb3561549671ea5346a347f2addcd

Ben Straub 2013-12-05T14:47:04

Don't use weird return codes

diff --git a/src/diff_tform.c b/src/diff_tform.c
index 6f29f25..0c9f961 100644
--- a/src/diff_tform.c
+++ b/src/diff_tform.c
@@ -293,8 +293,9 @@ static int normalize_find_opts(
 		if (git_config_get_string(&val, cfg, "diff.renames") < 0)
 			giterr_clear();
 		else if (val) {
-			if (!strcasecmp(val, "false"))
-				return GIT_PASSTHROUGH;
+			int boolval;
+			if (!git__parse_bool(&boolval, val) && !boolval)
+				opts->flags = 0;
 			else if (!strcasecmp(val, "copies") || !strcasecmp(val, "copy"))
 				opts->flags = GIT_DIFF_FIND_RENAMES | GIT_DIFF_FIND_COPIES;
 			else
@@ -834,7 +835,11 @@ int git_diff_find_similar(
 	git_diff_file swap;
 
 	if ((error = normalize_find_opts(diff, &opts, given_opts)) < 0)
-		return (error == GIT_PASSTHROUGH) ? 0 : error;
+		return error;
+
+	/* No flags set; nothing to do */
+	if ((opts.flags & GIT_DIFF_FIND_ALL) == 0)
+		return 0;
 
 	num_deltas = diff->deltas.length;
 
diff --git a/tests/diff/rename.c b/tests/diff/rename.c
index b304ec2..c08c1a8 100644
--- a/tests/diff/rename.c
+++ b/tests/diff/rename.c
@@ -919,6 +919,7 @@ void test_diff_rename__rejected_match_can_match_others(void)
 	char *ptr;
 
 	opts.checkout_strategy = GIT_CHECKOUT_FORCE;
+	findopts.flags = GIT_DIFF_FIND_RENAMES;
 
 	cl_git_pass(git_reference_lookup(&head, g_repo, "HEAD"));
 	cl_git_pass(git_reference_symbolic_set_target(
@@ -1003,6 +1004,7 @@ void test_diff_rename__rejected_match_can_match_others_two(void)
 	struct rename_expected expect = { 2, status, sources, targets };
 
 	opts.checkout_strategy = GIT_CHECKOUT_FORCE;
+	findopts.flags = GIT_DIFF_FIND_RENAMES;
 
 	cl_git_pass(git_reference_lookup(&head, g_repo, "HEAD"));
 	cl_git_pass(git_reference_symbolic_set_target(
@@ -1060,6 +1062,7 @@ void test_diff_rename__rejected_match_can_match_others_three(void)
 	struct rename_expected expect = { 2, status, sources, targets };
 
 	opts.checkout_strategy = GIT_CHECKOUT_FORCE;
+	findopts.flags = GIT_DIFF_FIND_RENAMES;
 
 	cl_git_pass(git_reference_lookup(&head, g_repo, "HEAD"));
 	cl_git_pass(git_reference_symbolic_set_target(