From ba85d9b6f5e9854c7d4ec47e2a91b53e7f454f21 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Fri, 8 Sep 2017 07:41:58 +0200 Subject: [PATCH] Factor out check for external modifications Move the check to compare the stored hashes of the data files with the current hash to a separate function. This makes the code easier to read and reusable. Signed-off-by: Lukas Fleischer --- src/io.c | 41 +++++++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/src/io.c b/src/io.c index 51205f7..9e75262 100644 --- a/src/io.c +++ b/src/io.c @@ -500,6 +500,28 @@ static int resolve_save_conflict(void) return ret; } +static int io_check_data_files_modified() +{ + FILE *fp; + char sha1_new[SHA1_DIGESTLEN * 2 + 1]; + + if ((fp = fopen(path_apts, "r"))) { + sha1_stream(fp, sha1_new); + fclose(fp); + if (strncmp(sha1_new, apts_sha1, SHA1_DIGESTLEN * 2) != 0) + return 1; + } + + if ((fp = fopen(path_todo, "r"))) { + sha1_stream(fp, sha1_new); + fclose(fp); + if (strncmp(sha1_new, todo_sha1, SHA1_DIGESTLEN * 2) != 0) + return 1; + } + + return 0; +} + /* Save the calendar data */ void io_save_cal(enum save_display display) { @@ -508,28 +530,11 @@ void io_save_cal(enum save_display display) _("The data files were successfully saved"); const char *enter = _("Press [ENTER] to continue"); int show_bar; - FILE *fp; - char sha1_new[SHA1_DIGESTLEN * 2 + 1]; - int conflict = 0; if (read_only) return; - if ((fp = fopen(path_apts, "r"))) { - sha1_stream(fp, sha1_new); - fclose(fp); - if (strncmp(sha1_new, apts_sha1, SHA1_DIGESTLEN * 2) != 0) - conflict = 1; - } - - if (!conflict && (fp = fopen(path_todo, "r"))) { - sha1_stream(fp, sha1_new); - fclose(fp); - if (strncmp(sha1_new, todo_sha1, SHA1_DIGESTLEN * 2) != 0) - conflict = 1; - } - - if (conflict && resolve_save_conflict()) + if (io_check_data_files_modified() && resolve_save_conflict()) return; run_hook("pre-save");