diff: drop useless return values in git-diff helpers
Since git-diff has many diff modes, it dispatches to many helpers to perform each one. But every helper simply returns "0", as it exits directly if there are serious errors (and options like --exit-code are handled afterwards). So let's get rid of these useless return values, which makes the code flow more clear. There's very little chance that we'd later want to propagate errors instead of dying immediately. These are all static-local helpers for the git-diff program implementing its various modes. More "lib-ified" code would directly call the underlying functions. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King committed
Aug 21, 2023 at 16:19 UTC
c0049ca0d7d4afb2d71ac76eba45d693facfc1d3
1 file changed
+28
-34
builtin/diff.c
+28
-34
@@ -77,9 +77,9 @@ static void stuff_change(struct diff_options *opt,
77
diff_queue(&diff_queued_diff, one, two);
78
}
79
80
-static int builtin_diff_b_f(struct rev_info *revs,
81
- int argc, const char **argv UNUSED,
82
- struct object_array_entry **blob)
80
+static void builtin_diff_b_f(struct rev_info *revs,
81
+ int argc, const char **argv UNUSED,
82
+ struct object_array_entry **blob)
83
{
84
/* Blob vs file in the working tree*/
85
struct stat st;
@@ -109,12 +109,11 @@ static int builtin_diff_b_f(struct rev_info *revs,
109
path);
110
diffcore_std(&revs->diffopt);
111
diff_flush(&revs->diffopt);
112
- return 0;
112
}
113
115
-static int builtin_diff_blobs(struct rev_info *revs,
116
- int argc, const char **argv UNUSED,
117
- struct object_array_entry **blob)
114
+static void builtin_diff_blobs(struct rev_info *revs,
115
+ int argc, const char **argv UNUSED,
116
+ struct object_array_entry **blob)
117
{
118
const unsigned mode = canon_mode(S_IFREG | 0644);
119
@@ -134,11 +133,10 @@ static int builtin_diff_blobs(struct rev_info *revs,
133
blob_path(blob[0]), blob_path(blob[1]));
134
diffcore_std(&revs->diffopt);
135
diff_flush(&revs->diffopt);
137
- return 0;
136
}
137
140
-static int builtin_diff_index(struct rev_info *revs,
141
- int argc, const char **argv)
138
+static void builtin_diff_index(struct rev_info *revs,
139
+ int argc, const char **argv)
140
{
141
unsigned int option = 0;
142
while (1 < argc) {
@@ -169,13 +167,12 @@ static int builtin_diff_index(struct rev_info *revs,
167
die_errno("repo_read_cache");
168
}
169
run_diff_index(revs, option);
172
- return 0;
170
}
171
175
-static int builtin_diff_tree(struct rev_info *revs,
176
- int argc, const char **argv,
177
- struct object_array_entry *ent0,
178
- struct object_array_entry *ent1)
172
+static void builtin_diff_tree(struct rev_info *revs,
173
+ int argc, const char **argv,
174
+ struct object_array_entry *ent0,
175
+ struct object_array_entry *ent1)
176
{
177
const struct object_id *(oid[2]);
178
struct object_id mb_oid;
@@ -208,13 +205,12 @@ static int builtin_diff_tree(struct rev_info *revs,
205
}
206
diff_tree_oid(oid[0], oid[1], "", &revs->diffopt);
207
log_tree_diff_flush(revs);
211
- return 0;
208
}
209
214
-static int builtin_diff_combined(struct rev_info *revs,
215
- int argc, const char **argv UNUSED,
216
- struct object_array_entry *ent,
217
- int ents, int first_non_parent)
210
+static void builtin_diff_combined(struct rev_info *revs,
211
+ int argc, const char **argv UNUSED,
212
+ struct object_array_entry *ent,
213
+ int ents, int first_non_parent)
214
{
215
struct oid_array parents = OID_ARRAY_INIT;
216
int i;
@@ -235,7 +231,6 @@ static int builtin_diff_combined(struct rev_info *revs,
231
}
232
diff_tree_combined(&ent[first_non_parent].item->oid, &parents, revs);
233
oid_array_clear(&parents);
238
- return 0;
234
}
235
236
static void refresh_index_quietly(void)
@@ -253,7 +248,7 @@ static void refresh_index_quietly(void)
248
repo_update_index_if_able(the_repository, &lock_file);
249
}
250
256
-static int builtin_diff_files(struct rev_info *revs, int argc, const char **argv)
251
+static void builtin_diff_files(struct rev_info *revs, int argc, const char **argv)
252
{
253
unsigned int options = 0;
254
@@ -291,7 +286,6 @@ static int builtin_diff_files(struct rev_info *revs, int argc, const char **argv
286
die_errno("repo_read_index_preload");
287
}
288
run_diff_files(revs, options);
294
- return 0;
289
}
290
291
struct symdiff {
@@ -405,7 +399,7 @@ int cmd_diff(int argc, const char **argv, const char *prefix)
399
int blobs = 0, paths = 0;
400
struct object_array_entry *blob[2];
401
int nongit = 0, no_index = 0;
408
- int result = 0;
402
+ int result;
403
struct symdiff sdiff;
404
405
/*
@@ -584,17 +578,17 @@ int cmd_diff(int argc, const char **argv, const char *prefix)
578
if (!ent.nr) {
579
switch (blobs) {
580
case 0:
587
- result = builtin_diff_files(&rev, argc, argv);
581
+ builtin_diff_files(&rev, argc, argv);
582
break;
583
case 1:
584
if (paths != 1)
585
usage(builtin_diff_usage);
592
- result = builtin_diff_b_f(&rev, argc, argv, blob);
586
+ builtin_diff_b_f(&rev, argc, argv, blob);
587
break;
588
case 2:
589
if (paths)
590
usage(builtin_diff_usage);
597
- result = builtin_diff_blobs(&rev, argc, argv, blob);
591
+ builtin_diff_blobs(&rev, argc, argv, blob);
592
break;
593
default:
594
usage(builtin_diff_usage);
@@ -603,18 +597,18 @@ int cmd_diff(int argc, const char **argv, const char *prefix)
597
else if (blobs)
598
usage(builtin_diff_usage);
599
else if (ent.nr == 1)
606
- result = builtin_diff_index(&rev, argc, argv);
600
+ builtin_diff_index(&rev, argc, argv);
601
else if (ent.nr == 2) {
602
if (sdiff.warn)
603
warning(_("%s...%s: multiple merge bases, using %s"),
604
sdiff.left, sdiff.right, sdiff.base);
611
- result = builtin_diff_tree(&rev, argc, argv,
612
- &ent.objects[0], &ent.objects[1]);
605
+ builtin_diff_tree(&rev, argc, argv,
606
+ &ent.objects[0], &ent.objects[1]);
607
} else
614
- result = builtin_diff_combined(&rev, argc, argv,
615
- ent.objects, ent.nr,
616
- first_non_parent);
617
- result = diff_result_code(&rev.diffopt, result);
608
+ builtin_diff_combined(&rev, argc, argv,
609
+ ent.objects, ent.nr,
610
+ first_non_parent);
611
+ result = diff_result_code(&rev.diffopt, 0);
612
if (1 < rev.diffopt.skip_stat_unmatch)
613
refresh_index_quietly();
614
release_revisions(&rev);