From 68f5fd5f7cc0d0e4fc5b89608bae5075d42ff1d1 Mon Sep 17 00:00:00 2001 From: night0721 Date: Fri, 20 Sep 2024 18:23:34 +0100 Subject: [PATCH] Fix data dir and its files creation --- include/util.h | 1 - lib/util.c | 18 +++++++----------- src/client/db.c | 8 +++++--- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/include/util.h b/include/util.h index 3d996ed..54e28e9 100644 --- a/include/util.h +++ b/include/util.h @@ -11,7 +11,6 @@ void *memalloc(size_t size); void *estrdup(void *str); char *replace_home(char *str); void mkdir_p(const char *destdir); -void create_data_dir(); void write_log(int type, const char *fmt, ...); void print_bin(const unsigned char *ptr, size_t length); diff --git a/lib/util.c b/lib/util.c index 9e1f4df..b59fd7b 100644 --- a/lib/util.c +++ b/lib/util.c @@ -70,7 +70,6 @@ char *replace_home(char *str) char *newstr = memalloc(strlen(str) + strlen(home)); /* replace ~ with home */ snprintf(newstr, strlen(str) + strlen(home), "%s%s", home, str + 1); - free(str); return newstr; } @@ -123,24 +122,21 @@ void mkdir_p(const char *destdir) return; } -void create_data_dir() -{ - char *client_data_dir = estrdup(CLIENT_DATA_DIR); - mkdir_p(client_data_dir); - client_data_dir = replace_home(client_data_dir); - free(client_data_dir); -} - void write_log(int type, const char *fmt, ...) { va_list args; va_start(args, fmt); + char *client_log = memalloc(PATH_MAX); - snprintf(client_log, PATH_MAX, "%s/%s", CLIENT_DATA_DIR, "/zen.log"); + char *data_dir = replace_home(CLIENT_DATA_DIR); + snprintf(client_log, PATH_MAX, "%s/%s", data_dir, "zen.log"); + printf("log: %s\n", client_log); + free(data_dir); if (access(client_log, W_OK) != 0) { /* If log file doesn't exist, most likely data dir won't exist too */ - create_data_dir(); + mkdir_p(CLIENT_DATA_DIR); } + FILE *log = fopen(client_log, "a"); if (log != NULL) { time_t now = time(NULL); diff --git a/src/client/db.c b/src/client/db.c index 26ee81d..780ef89 100644 --- a/src/client/db.c +++ b/src/client/db.c @@ -32,10 +32,12 @@ int sqlite_init() char *err_msg = 0; char *zen_db = memalloc(PATH_MAX); - snprintf(zen_db, PATH_MAX, "%s/%s", CLIENT_DATA_DIR, "/zen.db"); + char *data_dir = replace_home(CLIENT_DATA_DIR); + snprintf(zen_db, PATH_MAX, "%s/%s", data_dir, "data.db"); + free(data_dir); if (access(zen_db, W_OK) != 0) { - /* If log file doesn't exist, most likely data dir won't exist too */ - create_data_dir(); + /* If data file doesn't exist, most likely data dir won't exist too */ + mkdir_p(CLIENT_DATA_DIR); } int rc = sqlite3_open(zen_db, &db);