From e14f802f580d5d339c71675e3520e24c6a99e463 Mon Sep 17 00:00:00 2001
From: Armin Luntzer <armin.luntzer@univie.ac.at>
Date: Mon, 3 Jun 2019 15:58:43 +0200
Subject: [PATCH] more config file path searches

---
 src/client/widgets/sky/sky.c     | 23 +++++++++++++++++++++--
 src/server/backends/SIM/rt_sim.c |  8 ++++++++
 2 files changed, 29 insertions(+), 2 deletions(-)

diff --git a/src/client/widgets/sky/sky.c b/src/client/widgets/sky/sky.c
index c07c2e4..a7abaa6 100644
--- a/src/client/widgets/sky/sky.c
+++ b/src/client/widgets/sky/sky.c
@@ -437,6 +437,24 @@ static int sky_load_config(Sky *p)
 
 	/* search relative path first */
 	ret = sky_load_config_from_prefix(p, "data/", &error);
+
+	if (ret) {
+		g_clear_error(&error);
+		/* try again in confdir */
+		prefix = g_strconcat(CONFDIR, "/data/", NULL);
+		ret = sky_load_config_from_prefix(p, prefix, &error);
+		g_free(prefix);
+	}
+
+
+	if (ret) {
+		g_clear_error(&error);
+		/* try again in confdir */
+		prefix = g_strconcat("etc/", CONFDIR, "/data/", NULL);
+		ret = sky_load_config_from_prefix(p, prefix, &error);
+		g_free(prefix);
+	}
+
 	if (ret) {
 		g_clear_error(&error);
 		/* try again in sysconfdir */
@@ -445,10 +463,11 @@ static int sky_load_config(Sky *p)
 		g_free(prefix);
 	}
 
+
 	if (ret) {
 		g_warning("Could not find sky_objects.cfg: %s. "
-			  "Looked in data/, %sdata and %s/%sdata",
-			  error->message, CONFDIR, SYSCONFDIR, CONFDIR);
+			  "Looked in data/, %sdata, etc/%d/data/ and %s/%sdata",
+			  error->message, CONFDIR, CONFDIR, SYSCONFDIR, CONFDIR);
 		g_clear_error(&error);
 
 		return -1;
diff --git a/src/server/backends/SIM/rt_sim.c b/src/server/backends/SIM/rt_sim.c
index a8013c4..d5f5e37 100644
--- a/src/server/backends/SIM/rt_sim.c
+++ b/src/server/backends/SIM/rt_sim.c
@@ -299,6 +299,14 @@ int sim_load_config(void)
 		g_free(prefix);
 	}
 
+	if (ret) {
+		g_clear_error(&error);
+		/* try again in confdir */
+		prefix = g_strconcat("etc/", CONFDIR, "/", NULL);
+		ret = sim_load_config_from_prefix(prefix, &error);
+		g_free(prefix);
+	}
+
 	if (ret) {
 		g_clear_error(&error);
 		/* try again in sysconfdir */
-- 
GitLab