about summary refs log tree commit diff stats
path: root/src/config/files.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/config/files.c')
-rw-r--r--src/config/files.c73
1 files changed, 61 insertions, 12 deletions
diff --git a/src/config/files.c b/src/config/files.c
index 7b8759b1..d60b4efa 100644
--- a/src/config/files.c
+++ b/src/config/files.c
@@ -35,18 +35,22 @@
 
 #include <stdlib.h>
 #include <string.h>
-
+#include <unistd.h>
 #include <glib.h>
 
 #include "common.h"
 #include "log.h"
 #include "config/files.h"
+#include "config/preferences.h"
+
+static char* _files_get_xdg_config_home(void);
+static char* _files_get_xdg_data_home(void);
 
 void
 files_create_directories(void)
 {
-    gchar *xdg_config = files_get_xdg_config_home();
-    gchar *xdg_data = files_get_xdg_data_home();
+    gchar *xdg_config = _files_get_xdg_config_home();
+    gchar *xdg_data = _files_get_xdg_data_home();
 
     GString *themes_dir = g_string_new(xdg_config);
     g_string_append(themes_dir, "/profanity/themes");
@@ -85,17 +89,17 @@ files_create_directories(void)
     g_free(xdg_data);
 }
 
-gchar*
-files_get_inputrc_path(void)
+char*
+files_get_inputrc_file(void)
 {
-    gchar *xdg_config = files_get_xdg_config_home();
+    gchar *xdg_config = _files_get_xdg_config_home();
     GString *inputrc_file = g_string_new(xdg_config);
     g_free(xdg_config);
 
     g_string_append(inputrc_file, "/profanity/inputrc");
 
     if (g_file_test(inputrc_file->str, G_FILE_TEST_IS_REGULAR)) {
-        gchar *result = strdup(inputrc_file->str);
+        char *result = strdup(inputrc_file->str);
         g_string_free(inputrc_file, TRUE);
 
         return result;
@@ -106,8 +110,53 @@ files_get_inputrc_path(void)
     return NULL;
 }
 
-gchar*
-files_get_xdg_config_home(void)
+char*
+files_get_log_file(void)
+{
+    gchar *xdg_data = _files_get_xdg_data_home();
+    GString *logfile = g_string_new(xdg_data);
+    g_string_append(logfile, "/profanity/logs/profanity");
+    if (!prefs_get_boolean(PREF_LOG_SHARED)) {
+        g_string_append_printf(logfile, "%d", getpid());
+    }
+    g_string_append(logfile, ".log");
+    char *result = strdup(logfile->str);
+    free(xdg_data);
+    g_string_free(logfile, TRUE);
+
+    return result;
+}
+
+char*
+files_get_config_path(char *config_base)
+{
+    gchar *xdg_config = _files_get_xdg_config_home();
+    GString *file_str = g_string_new(xdg_config);
+    g_string_append(file_str, "/profanity/");
+    g_string_append(file_str, config_base);
+    char *result = strdup(file_str->str);
+    g_free(xdg_config);
+    g_string_free(file_str, TRUE);
+
+    return result;
+}
+
+char*
+files_get_data_path(char *data_base)
+{
+    gchar *xdg_data = _files_get_xdg_data_home();
+    GString *file_str = g_string_new(xdg_data);
+    g_string_append(file_str, "/profanity/");
+    g_string_append(file_str, data_base);
+    char *result = strdup(file_str->str);
+    g_free(xdg_data);
+    g_string_free(file_str, TRUE);
+
+    return result;
+}
+
+static char*
+_files_get_xdg_config_home(void)
 {
     gchar *xdg_config_home = getenv("XDG_CONFIG_HOME");
     if (xdg_config_home)
@@ -118,15 +167,15 @@ files_get_xdg_config_home(void)
     } else {
         GString *default_path = g_string_new(getenv("HOME"));
         g_string_append(default_path, "/.config");
-        gchar *result = strdup(default_path->str);
+        char *result = strdup(default_path->str);
         g_string_free(default_path, TRUE);
 
         return result;
     }
 }
 
-gchar*
-files_get_xdg_data_home(void)
+static char*
+_files_get_xdg_data_home(void)
 {
     gchar *xdg_data_home = getenv("XDG_DATA_HOME");
     if (xdg_data_home)