From 6bfc88339ca3bb5694a42c27599c1e0825100844 Mon Sep 17 00:00:00 2001 From: James Booth Date: Thu, 19 Jul 2012 21:30:07 +0100 Subject: Create config directory --- src/common.c | 29 +++++++++++++++++++++++++++++ src/common.h | 1 + src/profanity.c | 1 + 3 files changed, 31 insertions(+) diff --git a/src/common.c b/src/common.c index a015514d..ba4127f9 100644 --- a/src/common.c +++ b/src/common.c @@ -20,10 +20,39 @@ * */ +#include +#include +#include +#include +#include + #include +static void _create_dir(char *name); + void p_slist_free_full(GSList *items, GDestroyNotify free_func) { g_slist_foreach (items, (GFunc) free_func, NULL); g_slist_free (items); } + +void create_config_directory() +{ + GString *dir = g_string_new(getenv("HOME")); + g_string_append(dir, "/.config"); + _create_dir(dir->str); + + g_string_append(dir, "/profanity"); + _create_dir(dir->str); +} + +void _create_dir(char *name) +{ + int e; + struct stat sb; + + e = stat(name, &sb); + if (e != 0) + if (errno == ENOENT) + e = mkdir(name, S_IRWXU); +} diff --git a/src/common.h b/src/common.h index 043e2925..1408aaa3 100644 --- a/src/common.h +++ b/src/common.h @@ -50,5 +50,6 @@ typedef enum { #endif void p_slist_free_full(GSList *items, GDestroyNotify free_func); +void create_config_directory(); #endif diff --git a/src/profanity.c b/src/profanity.c index bba4ebb6..047cc080 100644 --- a/src/profanity.c +++ b/src/profanity.c @@ -65,6 +65,7 @@ void profanity_run(void) void profanity_init(const int disable_tls) { + create_config_directory(); log_init(); prefs_load(); gui_init(); -- cgit 1.4.1-2-gfad0