mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
Bug 794916 - Fails to find environment file at startup when installation prefix is '/opt'
This commit is contained in:
parent
5e807a0e18
commit
87f94abc8d
@ -567,9 +567,43 @@ gnc_gbr_find_etc_dir (const gchar *default_etc_dir)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
sysconfdir = gnc_file_path_relative_part(PREFIX, SYSCONFDIR);
|
if (g_path_is_absolute (SYSCONFDIR))
|
||||||
dir = g_build_filename (prefix, sysconfdir, NULL);
|
{
|
||||||
g_free (sysconfdir);
|
sysconfdir = gnc_file_path_relative_part("/", SYSCONFDIR);
|
||||||
|
dir = g_build_filename (prefix, sysconfdir, NULL);
|
||||||
|
g_free (sysconfdir);
|
||||||
|
}
|
||||||
|
else if ((g_strcmp0 (PREFIX, "/opt") == 0) ||
|
||||||
|
(g_str_has_prefix (PREFIX, "/opt/")))
|
||||||
|
{
|
||||||
|
/* If the prefix is "/opt/..." the etc stuff will be installed in
|
||||||
|
* "SYSCONFDIR/opt/...", while the rest will be in "/opt/..."
|
||||||
|
* If this gets relocated after (make install), there will be another
|
||||||
|
* prefix prepended to all of that:
|
||||||
|
* "prefix2/opt/..."
|
||||||
|
* "prefix2/SYSCONFDIR/opt/..."
|
||||||
|
* Note: this most likely won't work on Windows. Don't try a /opt
|
||||||
|
* prefix on that platform...
|
||||||
|
*/
|
||||||
|
gchar *std_etc_dir = g_build_filename ("/", SYSCONFDIR, PREFIX, NULL);
|
||||||
|
|
||||||
|
gchar *base_prefix_pos = g_strstr_len (prefix, -1, PREFIX);
|
||||||
|
if (!base_prefix_pos || base_prefix_pos == prefix)
|
||||||
|
dir = g_build_filename ("/", std_etc_dir, NULL);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gchar *prefix2 = g_strndup (prefix, base_prefix_pos - prefix);
|
||||||
|
dir = g_build_filename (prefix2, std_etc_dir, NULL);
|
||||||
|
}
|
||||||
|
g_free (std_etc_dir);
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sysconfdir = gnc_file_path_relative_part(PREFIX, SYSCONFDIR);
|
||||||
|
dir = g_build_filename (prefix, sysconfdir, NULL);
|
||||||
|
g_free (sysconfdir);
|
||||||
|
}
|
||||||
g_free (prefix);
|
g_free (prefix);
|
||||||
return dir;
|
return dir;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user