rerere: un-nest merge() further
By consistently using "upon failure, set 'ret' and jump to out" pattern, flatten the function further. Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
1d51eced10
commit
15ed07d532
48
rerere.c
48
rerere.c
|
@ -580,6 +580,7 @@ int rerere_remaining(struct string_list *merge_rr)
|
||||||
*/
|
*/
|
||||||
static int merge(const struct rerere_id *id, const char *path)
|
static int merge(const struct rerere_id *id, const char *path)
|
||||||
{
|
{
|
||||||
|
FILE *f;
|
||||||
int ret;
|
int ret;
|
||||||
mmfile_t cur = {NULL, 0}, base = {NULL, 0}, other = {NULL, 0};
|
mmfile_t cur = {NULL, 0}, base = {NULL, 0}, other = {NULL, 0};
|
||||||
mmbuffer_t result = {NULL, 0};
|
mmbuffer_t result = {NULL, 0};
|
||||||
|
@ -588,8 +589,10 @@ static int merge(const struct rerere_id *id, const char *path)
|
||||||
* Normalize the conflicts in path and write it out to
|
* Normalize the conflicts in path and write it out to
|
||||||
* "thisimage" temporary file.
|
* "thisimage" temporary file.
|
||||||
*/
|
*/
|
||||||
if (handle_file(path, NULL, rerere_path(id, "thisimage")) < 0)
|
if (handle_file(path, NULL, rerere_path(id, "thisimage")) < 0) {
|
||||||
return 1;
|
ret = 1;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
if (read_mmfile(&cur, rerere_path(id, "thisimage")) ||
|
if (read_mmfile(&cur, rerere_path(id, "thisimage")) ||
|
||||||
read_mmfile(&base, rerere_path(id, "preimage")) ||
|
read_mmfile(&base, rerere_path(id, "preimage")) ||
|
||||||
|
@ -603,29 +606,28 @@ static int merge(const struct rerere_id *id, const char *path)
|
||||||
* low-level merge driver settings.
|
* low-level merge driver settings.
|
||||||
*/
|
*/
|
||||||
ret = ll_merge(&result, path, &base, NULL, &cur, "", &other, "", NULL);
|
ret = ll_merge(&result, path, &base, NULL, &cur, "", &other, "", NULL);
|
||||||
if (!ret) {
|
if (ret)
|
||||||
FILE *f;
|
goto out;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* A successful replay of recorded resolution.
|
* A successful replay of recorded resolution.
|
||||||
* Mark that "postimage" was used to help gc.
|
* Mark that "postimage" was used to help gc.
|
||||||
*/
|
*/
|
||||||
if (utime(rerere_path(id, "postimage"), NULL) < 0)
|
if (utime(rerere_path(id, "postimage"), NULL) < 0)
|
||||||
warning("failed utime() on %s: %s",
|
warning("failed utime() on %s: %s",
|
||||||
rerere_path(id, "postimage"),
|
rerere_path(id, "postimage"),
|
||||||
strerror(errno));
|
strerror(errno));
|
||||||
|
|
||||||
/* Update "path" with the resolution */
|
/* Update "path" with the resolution */
|
||||||
f = fopen(path, "w");
|
f = fopen(path, "w");
|
||||||
if (!f)
|
if (!f)
|
||||||
return error("Could not open %s: %s", path,
|
return error("Could not open %s: %s", path,
|
||||||
strerror(errno));
|
strerror(errno));
|
||||||
if (fwrite(result.ptr, result.size, 1, f) != 1)
|
if (fwrite(result.ptr, result.size, 1, f) != 1)
|
||||||
error("Could not write %s: %s", path, strerror(errno));
|
error("Could not write %s: %s", path, strerror(errno));
|
||||||
if (fclose(f))
|
if (fclose(f))
|
||||||
return error("Writing %s failed: %s", path,
|
return error("Writing %s failed: %s", path,
|
||||||
strerror(errno));
|
strerror(errno));
|
||||||
}
|
|
||||||
|
|
||||||
out:
|
out:
|
||||||
free(cur.ptr);
|
free(cur.ptr);
|
||||||
|
|
Loading…
Reference in New Issue