summaryrefslogtreecommitdiffstats
path: root/compton.c
diff options
context:
space:
mode:
Diffstat (limited to 'compton.c')
-rw-r--r--compton.c168
1 files changed, 84 insertions, 84 deletions
diff --git a/compton.c b/compton.c
index 0fb040bf8..cffee1a30 100644
--- a/compton.c
+++ b/compton.c
@@ -4389,90 +4389,6 @@ fork_after(session_t *ps) {
return success;
}
-#ifdef CONFIG_LIBCONFIG
-/**
- * Get a file stream of the configuration file to read.
- *
- * Follows the XDG specification to search for the configuration file.
- */
-static FILE *
-open_config_file(char *cpath, char **ppath) {
- const static char *config_filename = "/compton.conf";
- const static char *config_filename_legacy = "/.compton.conf";
- const static char *config_home_suffix = "/.config";
- const static char *config_system_dir = "/etc/xdg";
-
- char *dir = NULL, *home = NULL;
- char *path = cpath;
- FILE *f = NULL;
-
- if (path) {
- f = fopen(path, "r");
- if (f && ppath)
- *ppath = path;
- return f;
- }
-
- // Check user configuration file in $XDG_CONFIG_HOME firstly
- if (!((dir = getenv("XDG_CONFIG_HOME")) && strlen(dir))) {
- if (!((home = getenv("HOME")) && strlen(home)))
- return NULL;
-
- path = mstrjoin3(home, config_home_suffix, config_filename);
- }
- else
- path = mstrjoin(dir, config_filename);
-
- f = fopen(path, "r");
-
- if (f && ppath)
- *ppath = path;
- else
- free(path);
- if (f)
- return f;
-
- // Then check user configuration file in $HOME
- if ((home = getenv("HOME")) && strlen(home)) {
- path = mstrjoin(home, config_filename_legacy);
- f = fopen(path, "r");
- if (f && ppath)
- *ppath = path;
- else
- free(path);
- if (f)
- return f;
- }
-
- // Check system configuration file in $XDG_CONFIG_DIRS at last
- if ((dir = getenv("XDG_CONFIG_DIRS")) && strlen(dir)) {
- char *part = strtok(dir, ":");
- while (part) {
- path = mstrjoin(part, config_filename);
- f = fopen(path, "r");
- if (f && ppath)
- *ppath = path;
- else
- free(path);
- if (f)
- return f;
- part = strtok(NULL, ":");
- }
- }
- else {
- path = mstrjoin(config_system_dir, config_filename);
- f = fopen(path, "r");
- if (f && ppath)
- *ppath = path;
- else
- free(path);
- if (f)
- return f;
- }
-
- return NULL;
-}
-
/**
* Parse a floating-point number in matrix.
*/
@@ -4601,6 +4517,90 @@ parse_conv_kern(session_t *ps, const char *src) {
return parse_matrix(ps, src);
}
+#ifdef CONFIG_LIBCONFIG
+/**
+ * Get a file stream of the configuration file to read.
+ *
+ * Follows the XDG specification to search for the configuration file.
+ */
+static FILE *
+open_config_file(char *cpath, char **ppath) {
+ const static char *config_filename = "/compton.conf";
+ const static char *config_filename_legacy = "/.compton.conf";
+ const static char *config_home_suffix = "/.config";
+ const static char *config_system_dir = "/etc/xdg";
+
+ char *dir = NULL, *home = NULL;
+ char *path = cpath;
+ FILE *f = NULL;
+
+ if (path) {
+ f = fopen(path, "r");
+ if (f && ppath)
+ *ppath = path;
+ return f;
+ }
+
+ // Check user configuration file in $XDG_CONFIG_HOME firstly
+ if (!((dir = getenv("XDG_CONFIG_HOME")) && strlen(dir))) {
+ if (!((home = getenv("HOME")) && strlen(home)))
+ return NULL;
+
+ path = mstrjoin3(home, config_home_suffix, config_filename);
+ }
+ else
+ path = mstrjoin(dir, config_filename);
+
+ f = fopen(path, "r");
+
+ if (f && ppath)
+ *ppath = path;
+ else
+ free(path);
+ if (f)
+ return f;
+
+ // Then check user configuration file in $HOME
+ if ((home = getenv("HOME")) && strlen(home)) {
+ path = mstrjoin(home, config_filename_legacy);
+ f = fopen(path, "r");
+ if (f && ppath)
+ *ppath = path;
+ else
+ free(path);
+ if (f)
+ return f;
+ }
+
+ // Check system configuration file in $XDG_CONFIG_DIRS at last
+ if ((dir = getenv("XDG_CONFIG_DIRS")) && strlen(dir)) {
+ char *part = strtok(dir, ":");
+ while (part) {
+ path = mstrjoin(part, config_filename);
+ f = fopen(path, "r");
+ if (f && ppath)
+ *ppath = path;
+ else
+ free(path);
+ if (f)
+ return f;
+ part = strtok(NULL, ":");
+ }
+ }
+ else {
+ path = mstrjoin(config_system_dir, config_filename);
+ f = fopen(path, "r");
+ if (f && ppath)
+ *ppath = path;
+ else
+ free(path);
+ if (f)
+ return f;
+ }
+
+ return NULL;
+}
+
/**
* Parse a condition list in configuration file.
*/