aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/io.c35
1 files changed, 20 insertions, 15 deletions
diff --git a/src/io.c b/src/io.c
index 51205f7..9e75262 100644
--- a/src/io.c
+++ b/src/io.c
@@ -500,36 +500,41 @@ static int resolve_save_conflict(void)
return ret;
}
-/* Save the calendar data */
-void io_save_cal(enum save_display display)
+static int io_check_data_files_modified()
{
- const char *access_pb = _("Problems accessing data file ...");
- const char *save_success =
- _("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;
+ return 1;
}
- if (!conflict && (fp = fopen(path_todo, "r"))) {
+ if ((fp = fopen(path_todo, "r"))) {
sha1_stream(fp, sha1_new);
fclose(fp);
if (strncmp(sha1_new, todo_sha1, SHA1_DIGESTLEN * 2) != 0)
- conflict = 1;
+ return 1;
}
- if (conflict && resolve_save_conflict())
+ return 0;
+}
+
+/* Save the calendar data */
+void io_save_cal(enum save_display display)
+{
+ const char *access_pb = _("Problems accessing data file ...");
+ const char *save_success =
+ _("The data files were successfully saved");
+ const char *enter = _("Press [ENTER] to continue");
+ int show_bar;
+
+ if (read_only)
+ return;
+
+ if (io_check_data_files_modified() && resolve_save_conflict())
return;
run_hook("pre-save");