From 2306c86fb2ec18c15e04a7373f28c8b438d78271 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Orsini Date: Wed, 17 Oct 2012 10:28:44 +0000 Subject: [PATCH] --- src/note.c | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++----- src/note.h | 1 + src/tw.c | 3 ++- 3 files changed, 56 insertions(+), 6 deletions(-) diff --git a/src/note.c b/src/note.c index f22f97d..c5b225a 100644 --- a/src/note.c +++ b/src/note.c @@ -25,15 +25,16 @@ #include -void note_put(const char *uuid, const char *note) +static char *get_path(const char *uuid) { char *home, *dir, *path; - FILE *f; home = getenv("HOME"); - if (!home) - return ; + if (!home) { + fprintf(stderr, "HOME environment variable not defined\n"); + return NULL; + } dir = malloc(strlen(home) + 1 + strlen(".task") + 1); sprintf(dir, "%s/%s", home, ".task"); @@ -42,6 +43,21 @@ void note_put(const char *uuid, const char *note) path = malloc(strlen(dir) + 1 + strlen(uuid) + strlen(".note") + 1); sprintf(path, "%s/%s.note", dir, uuid); + free(dir); + + return path; +} + +void note_put(const char *uuid, const char *note) +{ + char *path; + FILE *f; + + path = get_path(uuid); + + if (!path) + return ; + printf("note_put %s %s %s\n", path, uuid, note); f = fopen(path, "w"); @@ -53,6 +69,38 @@ void note_put(const char *uuid, const char *note) fprintf(stderr, "Failed to open %s\n", path); } - free(dir); free(path); } + +char *note_get(const char *uuid) +{ + char *str, *tmp, *path; + FILE *f; + char buf[1024]; + size_t s; + + path = get_path(uuid); + + if (!path) + return NULL; + + str = strdup(""); + + f = fopen(path, "r"); + + if (f) { + while ((s = fread(buf, 1, 1024, f))) { + tmp = malloc(strlen(str) + s + (size_t)1); + memcpy(tmp, str, strlen(str)); + memcpy(tmp + strlen(str), buf, s); + tmp[strlen(str) + s] = '\0'; + free(str); + str = tmp; + } + fclose(f); + } else { + fprintf(stderr, "Failed to open %s\n", path); + } + + return str; +} diff --git a/src/note.h b/src/note.h index 1462480..17b98f5 100644 --- a/src/note.h +++ b/src/note.h @@ -23,5 +23,6 @@ #include "tw.h" void note_put(const char *uuid, const char *note); +char *note_get(const char *uuid); #endif diff --git a/src/tw.c b/src/tw.c index 1e9a23c..c92c1ee 100644 --- a/src/tw.c +++ b/src/tw.c @@ -21,6 +21,7 @@ #include #include +#include "note.h" char *task_exec(char *opts) { @@ -137,7 +138,7 @@ struct task **tw_get_all_tasks(const char *status) json = json_object_object_get(jtask, "uuid"); tasks[i]->uuid = strdup(json_object_get_string(json)); - tasks[i]->note = NULL; + tasks[i]->note = note_get(tasks[i]->uuid); } tasks[n] = NULL; -- 2.7.4