diff options
author | James Booth <boothj5@gmail.com> | 2012-07-19 21:30:07 +0100 |
---|---|---|
committer | James Booth <boothj5@gmail.com> | 2012-07-19 21:30:07 +0100 |
commit | 6bfc88339ca3bb5694a42c27599c1e0825100844 (patch) | |
tree | 873c84a1c532bd542e648073803ec846faeaf115 | |
parent | ecfa3e5d38fc66ea622d70bfb73e01e95d02f1d5 (diff) | |
download | profani-tty-6bfc88339ca3bb5694a42c27599c1e0825100844.tar.gz |
Create config directory
-rw-r--r-- | src/common.c | 29 | ||||
-rw-r--r-- | src/common.h | 1 | ||||
-rw-r--r-- | src/profanity.c | 1 |
3 files changed, 31 insertions, 0 deletions
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 <sys/types.h> +#include <sys/stat.h> +#include <stdlib.h> +#include <errno.h> +#include <stdio.h> + #include <glib.h> +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(); |