aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main.cpp17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/main.cpp b/src/main.cpp
index a2de09e..f17f942 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -166,9 +166,12 @@ process_options(int &argc, char **&argv)
static inline void
initialize_environment(const gchar *program)
{
- gchar *default_configpath;
+ gchar *default_configpath, *abs_path;
gchar **env;
+ /*
+ * Initialize $SCITECOCONFIG and $SCITECOPATH
+ */
default_configpath = get_default_config_path(program);
g_setenv("SCITECOCONFIG", default_configpath, FALSE);
#ifdef G_OS_WIN32
@@ -181,6 +184,18 @@ initialize_environment(const gchar *program)
#endif
g_free(default_configpath);
+ /*
+ * $SCITECOCONFIG and $SCITECOPATH may still be relative.
+ * They are canonicalized, so macros can use them even
+ * if the current working directory changes.
+ */
+ abs_path = get_absolute_path(g_getenv("SCITECOCONFIG"));
+ g_setenv("SCITECOCONFIG", abs_path, TRUE);
+ g_free(abs_path);
+ abs_path = get_absolute_path(g_getenv("SCITECOPATH"));
+ g_setenv("SCITECOPATH", abs_path, TRUE);
+ g_free(abs_path);
+
env = g_listenv();
for (gchar **key = env; *key; key++) {