diff options
| author | Patrick Storz <eduard.braun2@gmx.de> | 2019-06-14 20:53:04 +0000 |
|---|---|---|
| committer | Patrick Storz <eduard.braun2@gmx.de> | 2019-06-14 21:09:56 +0000 |
| commit | 28bf718658008ca52303d9066f21a8781a9008ff (patch) | |
| tree | ee1b370addc1203e6cd5b5959fdcae677ff5f971 /src/path-prefix.cpp | |
| parent | Add extensions directory in user folder to PYTHONPATH (diff) | |
| download | inkscape-28bf718658008ca52303d9066f21a8781a9008ff.tar.gz inkscape-28bf718658008ca52303d9066f21a8781a9008ff.zip | |
append_inkscape_datadir: Canonicalize inkscape_datadir separately
g_canonicalize_filename() needs the second parameter to be absolute
which INKSCAPE_DATADIR is not guaranteed to be (e.g. when supplied
via environment variable).
(follow up to 812f50f709384d6c59587c9f1706e401600291a6)
Diffstat (limited to 'src/path-prefix.cpp')
| -rw-r--r-- | src/path-prefix.cpp | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/src/path-prefix.cpp b/src/path-prefix.cpp index c447bb562..f03c5cb8e 100644 --- a/src/path-prefix.cpp +++ b/src/path-prefix.cpp @@ -37,18 +37,30 @@ char *append_inkscape_datadir(const char *relative_path) { static gchar const *inkscape_datadir; if (!inkscape_datadir) { + gchar *datadir; gchar const *datadir_env = g_getenv("INKSCAPE_DATADIR"); if (datadir_env) { - inkscape_datadir = g_strdup(datadir_env); + datadir = g_strdup(datadir_env); } else { #ifdef _WIN32 gchar *module_path = g_win32_get_package_installation_directory_of_module(NULL); - inkscape_datadir = g_build_filename(module_path, "share", NULL); + datadir = g_build_filename(module_path, "share", NULL); g_free(module_path); #else - inkscape_datadir = INKSCAPE_DATADIR; + datadir = g_strdup(INKSCAPE_DATADIR); #endif } + +#if GLIB_CHECK_VERSION(2,58,0) + inkscape_datadir = g_canonicalize_filename(datadir, NULL); + g_free(datadir); +#else + inkscape_datadir = datadir; +#endif + } + + if (!relative_path) { + relative_path = ""; } #if GLIB_CHECK_VERSION(2,58,0) |
