aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLukas Fleischer <calcurse@cryptocrack.de>2012-01-17 00:41:19 +0100
committerLukas Fleischer <calcurse@cryptocrack.de>2012-01-17 00:52:39 +0100
commita79a33e8f4da016e4ae42b061db8400337d5a580 (patch)
treec025cc9c231dd7d0953950d586f214a458fe7765 /src
parent5dc443fc3d236fc2520df58495e62f197a98a64f (diff)
downloadcalcurse-a79a33e8f4da016e4ae42b061db8400337d5a580.tar.gz
calcurse-a79a33e8f4da016e4ae42b061db8400337d5a580.zip
Split note file generation into separate function
We currently use this in one place only but might reuse this a couple of times later (when migrating to libical). Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
Diffstat (limited to 'src')
-rw-r--r--src/calcurse.h1
-rw-r--r--src/ical.c15
-rw-r--r--src/note.c19
3 files changed, 23 insertions, 12 deletions
diff --git a/src/calcurse.h b/src/calcurse.h
index 5b4bffe..5104d45 100644
--- a/src/calcurse.h
+++ b/src/calcurse.h
@@ -779,6 +779,7 @@ void mem_stats (void);
#endif /* CALCURSE_MEMORY_DEBUG */
/* note.c */
+char *generate_note (const char *);
void edit_note (char **, char *);
void view_note (char *, char *);
void erase_note (char **);
diff --git a/src/ical.c b/src/ical.c
index a40f94a..8d1735b 100644
--- a/src/ical.c
+++ b/src/ical.c
@@ -37,7 +37,6 @@
#include <sys/types.h>
#include "calcurse.h"
-#include "sha1.h"
#define ICALDATEFMT "%Y%m%d"
#define ICALDATETIMEFMT "%Y%m%dT%H%M%S"
@@ -866,9 +865,7 @@ static char *
ical_read_note (char *line, unsigned *noskipped, ical_vevent_e item_type,
const int itemline, FILE *log)
{
- char *sha1 = mem_malloc (SHA1_DIGESTLEN * 2 + 1);
- char *p, *notestr, fullnotename[BUFSIZ];
- FILE *fdo;
+ char *p, *notestr, *note;
if ((p = strchr (line, ':')) != NULL)
{
@@ -888,15 +885,9 @@ ical_read_note (char *line, unsigned *noskipped, ical_vevent_e item_type,
}
else
{
- sha1_digest (notestr, sha1);
- snprintf (fullnotename, BUFSIZ, "%s%s", path_notes, sha1);
- fdo = fopen (fullnotename, "w");
- EXIT_IF (fdo == NULL, _("Warning: could not open %s, Aborting..."),
- fullnotename);
- fprintf (fdo, "%s", notestr);
- file_close (fdo, __FILE_POS__);
+ note = generate_note (notestr);
mem_free (notestr);
- return sha1;
+ return note;
}
}
else
diff --git a/src/note.c b/src/note.c
index e5595fc..2686dd7 100644
--- a/src/note.c
+++ b/src/note.c
@@ -46,6 +46,25 @@ struct note_gc_hash {
HTABLE_ENTRY (note_gc_hash);
};
+/* Create note file from a string and return a newly allocated string that
+ * contains its name. */
+char *
+generate_note (const char *str)
+{
+ char *sha1 = mem_malloc (SHA1_DIGESTLEN * 2 + 1);
+ char notepath[BUFSIZ];
+ FILE *fp;
+
+ sha1_digest (str, sha1);
+ snprintf (notepath, BUFSIZ, "%s%s", path_notes, sha1);
+ fp = fopen (notepath, "w");
+ EXIT_IF (fp == NULL, _("Warning: could not open %s, Aborting..."), notepath);
+ fputs (str, fp);
+ file_close (fp, __FILE_POS__);
+
+ return sha1;
+}
+
/* Edit a note with an external editor. */
void
edit_note (char **note, char *editor)