diff options
-rw-r--r-- | src/calcurse.c | 6 | ||||
-rw-r--r-- | src/calcurse.h | 8 | ||||
-rw-r--r-- | src/io.c | 12 |
3 files changed, 17 insertions, 9 deletions
diff --git a/src/calcurse.c b/src/calcurse.c index 57dce89..31be357 100644 --- a/src/calcurse.c +++ b/src/calcurse.c @@ -274,7 +274,7 @@ static inline void key_generic_save(void) char *msg = NULL; int ret; - ret = io_save_cal(); + ret = io_save_cal(interactive); if (ret == IO_SAVE_RELOAD) { ui_todo_load_items(); @@ -505,7 +505,7 @@ static inline void key_generic_scroll_down(void) static inline void key_generic_quit(void) { if (conf.auto_save) - io_save_cal(); + io_save_cal(interactive); if (conf.auto_gc) note_gc(); @@ -540,7 +540,7 @@ static inline void key_generic_cmd(void) if (!strcmp(cmd_name, "write") || !strcmp(cmd_name, "w") || !strcmp(cmd_name, "wq")) { - io_save_cal(); + io_save_cal(interactive); valid = 1; } if (!strcmp(cmd_name, "quit") || !strcmp(cmd_name, "q") || diff --git a/src/calcurse.h b/src/calcurse.h index 17c45f8..49b1a70 100644 --- a/src/calcurse.h +++ b/src/calcurse.h @@ -654,7 +654,11 @@ enum getstr { #define PARSE_DATETIME_HAS_DATE (1 << 0) #define PARSE_DATETIME_HAS_TIME (1 << 1) -/* Return codes for the io_save_cal() function. */ +/* Save types and return codes for the io_save_cal() function. */ +enum save_type { + interactive, + periodic +}; enum { IO_SAVE_CTINUE, IO_SAVE_RELOAD, @@ -862,7 +866,7 @@ unsigned io_save_apts(const char *); void io_dump_todo(const char *); unsigned io_save_todo(const char *); unsigned io_save_keys(void); -int io_save_cal(void); +int io_save_cal(enum save_type); void io_load_app(struct item_filter *); void io_load_todo(struct item_filter *); int io_load_data(struct item_filter *, int); @@ -490,16 +490,20 @@ cleanup: * IO_SAVE_NOOP: cancel save operation (nothing has changed) * IO_SAVE_ERROR: cannot access data */ -int io_save_cal(void) +int io_save_cal(enum save_type s_t) { int ret; if (read_only) return IO_SAVE_CANCEL; - if ((ret = new_data()) == NOKNOW) { + if ((ret = new_data()) == NOKNOW) return IO_SAVE_ERROR; - } else if (ret) { /* New data */ + + if (ret) { /* New data */ + if (s_t == periodic) + return IO_SAVE_CANCEL; + /* Interactively decide what to do. */ if ((ret = resolve_save_conflict())) return ret; } else /* No new data */ @@ -1422,7 +1426,7 @@ static void *io_psave_thread(void *arg) for (;;) { sleep(delay * MININSEC); - io_save_cal(); + io_save_cal(periodic); } } |