From a79a33e8f4da016e4ae42b061db8400337d5a580 Mon Sep 17 00:00:00 2001
From: Lukas Fleischer <calcurse@cryptocrack.de>
Date: Tue, 17 Jan 2012 00:41:19 +0100
Subject: 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>
---
 src/calcurse.h |  1 +
 src/ical.c     | 15 +++------------
 src/note.c     | 19 +++++++++++++++++++
 3 files changed, 23 insertions(+), 12 deletions(-)

(limited to 'src')

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)
-- 
cgit v1.2.3-70-g09d2