From e3dd92ef71ecd06ef2a3ef2ef49beccb5d22cc0f Mon Sep 17 00:00:00 2001
From: Lars Henriksen <LarsHenriksen@get2net.dk>
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 <LarsHenriksen@get2net.dk>
Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
---
 src/calcurse.h |  1 -
 src/ical.c     |  4 +++-
 src/io.c       | 16 ----------------
 src/note.c     |  4 +---
 4 files changed, 4 insertions(+), 21 deletions(-)

(limited to 'src')

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(&note_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(&note);
 	while (fgets(lbuf, BUFSIZ, fp))
 		string_catf(&note, "%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