allow to change the directory containing the notes.
[ptask.git] / src / note.c
index f5e3a91..247d8d9 100644 (file)
 
 #include <log.h>
 #include <note.h>
+#include <pio.h>
+#include <settings.h>
 
-static char *get_path(const char *uuid)
+static const char *NOTE_SUF = ".note";
+
+static char *get_default_path()
 {
-       char *home, *dir, *path;
+       char *home, *dir;
 
        home = getenv("HOME");
 
@@ -41,8 +45,27 @@ static char *get_path(const char *uuid)
        sprintf(dir, "%s/%s", home, ".task");
        mkdir(dir, 0777);
 
-       path = malloc(strlen(dir) + 1 + strlen(uuid) + strlen(".note") + 1);
-       sprintf(path, "%s/%s.note", dir, uuid);
+       return dir;
+}
+
+static char *get_path(const char *uuid)
+{
+       const char *sdir;
+       char *path, *dir;
+
+       sdir = settings_get_notes_dir();
+
+       if (sdir == NULL || *sdir == '\0') {
+               dir = get_default_path();
+               settings_set_notes_dir(dir);
+       } else {
+               dir = strdup(sdir);
+       }
+
+       mkdirs(dir, 0777);
+
+       path = malloc(strlen(dir) + 1 + strlen(uuid) + strlen(NOTE_SUF) + 1);
+       sprintf(path, "%s/%s%s", dir, uuid, NOTE_SUF);
 
        free(dir);