From e3dd92ef71ecd06ef2a3ef2ef49beccb5d22cc0f Mon Sep 17 00:00:00 2001 From: Lars Henriksen Date: Sun, 15 Nov 2020 09:21:47 +0100 Subject: Do not remove an empty note file after edit session Signed-off-by: Lars Henriksen Signed-off-by: Lukas Fleischer --- src/calcurse.h | 1 - src/ical.c | 4 +++- src/io.c | 16 ---------------- src/note.c | 4 +--- 4 files changed, 4 insertions(+), 21 deletions(-) diff --git a/src/calcurse.h b/src/calcurse.h index c1ca2ef..4dc5968 100644 --- a/src/calcurse.h +++ b/src/calcurse.h @@ -936,7 +936,6 @@ void io_set_lock(void); unsigned io_dump_pid(char *); unsigned io_get_pid(char *); int io_files_equal(const char *, const char *); -int io_file_is_empty(char *); int io_file_cp(const char *, const char *); void io_unset_modified(void); void io_set_modified(void); diff --git a/src/ical.c b/src/ical.c index 2ce378c..160afc2 100644 --- a/src/ical.c +++ b/src/ical.c @@ -213,8 +213,10 @@ static void ical_export_note(FILE *stream, char *name) int has_desc, has_prop, i; asprintf(¬e_file, "%s/%s", path_notes, name); - if (!(fp = fopen(note_file, "r"))) + if (!(fp = fopen(note_file, "r")) || ungetc(getc(fp), fp) == EOF) { + fclose(fp); return; + } string_init(¬e); while (fgets(lbuf, BUFSIZ, fp)) string_catf(¬e, "%s", lbuf); diff --git a/src/io.c b/src/io.c index cd9b389..ff61dae 100644 --- a/src/io.c +++ b/src/io.c @@ -1578,22 +1578,6 @@ unsigned io_get_pid(char *file) return pid; } -/* - * Check whether a file is empty. - */ -int io_file_is_empty(char *file) -{ - FILE *fp; - int ret = -1; - - if (file && (fp = fopen(file, "r"))) { - ret = (fgetc(fp) == '\n' && fgetc(fp) == EOF) || feof(fp); - fclose(fp); - } - - return ret; -} - /* * Check whether two files are equal. */ diff --git a/src/note.c b/src/note.c index 40e0882..4f20d9d 100644 --- a/src/note.c +++ b/src/note.c @@ -94,9 +94,7 @@ void edit_note(char **note, const char *editor) const char *arg[] = { editor, tmppath, NULL }; wins_launch_external(arg); - if (io_file_is_empty(tmppath) > 0) { - erase_note(note); - } else if ((fp = fopen(tmppath, "r"))) { + if ((fp = fopen(tmppath, "r"))) { sha1_stream(fp, sha1); fclose(fp); *note = sha1; -- cgit v1.2.3-70-g09d2