diff options
Diffstat (limited to 'src/io.c')
-rw-r--r-- | src/io.c | 35 |
1 files changed, 20 insertions, 15 deletions
@@ -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"); |