diff options
author | Lukas Fleischer <lfleischer@calcurse.org> | 2017-09-08 07:44:35 +0200 |
---|---|---|
committer | Lukas Fleischer <lfleischer@calcurse.org> | 2017-09-08 21:08:54 +0200 |
commit | 57dd3d6b66156936d170893765d45a169e7010af (patch) | |
tree | 934958fe226dfb8655884a6d0aca739809c53ba4 | |
parent | ba85d9b6f5e9854c7d4ec47e2a91b53e7f454f21 (diff) | |
download | calcurse-57dd3d6b66156936d170893765d45a169e7010af.tar.gz calcurse-57dd3d6b66156936d170893765d45a169e7010af.zip |
Only reload if data files were changed
Instead of blindly reloading data in io_reload_data(), compare the
stored hashes of the data files with hashes of the current file contents
and only reload if any of the hashes differs.
Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
-rw-r--r-- | src/calcurse.c | 11 | ||||
-rw-r--r-- | src/calcurse.h | 2 | ||||
-rw-r--r-- | src/io.c | 9 |
3 files changed, 15 insertions, 7 deletions
diff --git a/src/calcurse.c b/src/calcurse.c index 5c77bca..bdd1761 100644 --- a/src/calcurse.c +++ b/src/calcurse.c @@ -277,11 +277,12 @@ static inline void key_generic_save(void) static inline void key_generic_reload(void) { - io_reload_data(); - do_storage(0); - notify_check_next_app(1); - ui_calendar_monthly_view_cache_set_invalid(); - wins_update(FLAG_ALL); + if (io_reload_data()) { + do_storage(0); + notify_check_next_app(1); + ui_calendar_monthly_view_cache_set_invalid(); + wins_update(FLAG_ALL); + } } static inline void key_generic_import(void) diff --git a/src/calcurse.h b/src/calcurse.h index 2707305..5fa4639 100644 --- a/src/calcurse.h +++ b/src/calcurse.h @@ -847,7 +847,7 @@ void io_save_cal(enum save_display); void io_load_app(struct item_filter *); void io_load_todo(struct item_filter *); void io_load_data(struct item_filter *); -void io_reload_data(void); +int io_reload_data(void); void io_load_keys(const char *); int io_check_dir(const char *); unsigned io_dir_exists(const char *); @@ -870,12 +870,13 @@ void io_load_data(struct item_filter *filter) run_hook("post-load"); } -void io_reload_data(void) +int io_reload_data(void) { char *msg_um_asktype = NULL; const char *reload_success = _("The data files were reloaded successfully"); const char *enter = _("Press [ENTER] to continue"); + int ret = 0; if (io_get_modified()) { const char *msg_um_prefix = @@ -902,6 +903,9 @@ void io_reload_data(void) } } + if (!io_check_data_files_modified()) + goto cleanup; + if (notify_bar()) notify_stop_main_thread(); @@ -939,8 +943,11 @@ void io_reload_data(void) if (notify_bar()) notify_start_main_thread(); + ret = 1; + cleanup: mem_free(msg_um_asktype); + return ret; } static void |