aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/calcurse.h1
-rw-r--r--src/day.c3
-rw-r--r--src/io.c25
-rw-r--r--src/todo.c3
4 files changed, 32 insertions, 0 deletions
diff --git a/src/calcurse.h b/src/calcurse.h
index 4b28039..0a306f0 100644
--- a/src/calcurse.h
+++ b/src/calcurse.h
@@ -696,6 +696,7 @@ void io_stop_psave_thread (void);
void io_set_lock (void);
unsigned io_dump_pid (char *);
unsigned io_get_pid (char *);
+int io_file_is_empty (char *);
/* keys.c */
void keys_init (void);
diff --git a/src/day.c b/src/day.c
index 0dc888e..50f025b 100644
--- a/src/day.c
+++ b/src/day.c
@@ -1085,6 +1085,9 @@ day_edit_note (char *editor)
(void)snprintf (fullname, BUFSIZ, "%s%s", path_notes, p->note);
wins_launch_external (fullname, editor);
+ if (io_file_is_empty (fullname))
+ erase_note (&p->note, ERASE_FORCE);
+
date = calendar_get_slctd_day_sec ();
switch (p->type)
{
diff --git a/src/io.c b/src/io.c
index 7619696..04ad99f 100644
--- a/src/io.c
+++ b/src/io.c
@@ -3040,3 +3040,28 @@ io_get_pid (char *file)
return pid;
}
+
+/*
+ * Check whether a file is empty.
+ */
+int
+io_file_is_empty (char *file)
+{
+ FILE *fp;
+
+ if (file && (fp = fopen (file, "r")))
+ {
+ if (fgetc (fp) == '\n' || feof (fp))
+ {
+ fclose (fp);
+ return 1;
+ }
+ else
+ {
+ fclose (fp);
+ return 0;
+ }
+ }
+
+ return 1;
+}
diff --git a/src/todo.c b/src/todo.c
index 4076510..125b128 100644
--- a/src/todo.c
+++ b/src/todo.c
@@ -503,6 +503,9 @@ todo_edit_note (char *editor)
}
(void)snprintf (fullname, BUFSIZ, "%s%s", path_notes, i->note);
wins_launch_external (fullname, editor);
+
+ if (io_file_is_empty (fullname))
+ erase_note (&i->note, ERASE_FORCE);
}
/* View a note previously attached to a todo */