diff options
| author | Eduard Braun <eduard.braun2@gmx.de> | 2017-11-26 18:18:26 +0000 |
|---|---|---|
| committer | Eduard Braun <eduard.braun2@gmx.de> | 2017-12-04 18:40:15 +0000 |
| commit | 99c4a240d3c084e1abcfd802fadb5ae7235b9018 (patch) | |
| tree | 4597353fdcaa244c291bad686065cc282f8a445d /src/path-prefix.cpp | |
| parent | Pull custom code from prefix.h/cpp (diff) | |
| download | inkscape-99c4a240d3c084e1abcfd802fadb5ae7235b9018.tar.gz inkscape-99c4a240d3c084e1abcfd802fadb5ae7235b9018.zip | |
Generalize support for INKSCAPE_DATADIR environment variable
Now works unless configured with
ENABLE_BINRELOC or ENABLE_OSX_APP_LOCATIONS
Diffstat (limited to 'src/path-prefix.cpp')
| -rw-r--r-- | src/path-prefix.cpp | 36 |
1 files changed, 17 insertions, 19 deletions
diff --git a/src/path-prefix.cpp b/src/path-prefix.cpp index a8a09b9db..bffba500f 100644 --- a/src/path-prefix.cpp +++ b/src/path-prefix.cpp @@ -18,8 +18,6 @@ */ -#ifdef __WIN32__ - #ifdef HAVE_CONFIG_H #include <config.h> #endif @@ -30,28 +28,29 @@ /** - * Provide a similar mechanism for Win32. Enable a macro, - * WIN32_DATADIR, that can look up subpaths for inkscape resources - */ - -/** - * Get the Windows-equivalent of INKSCAPE_DATADIR and append a relative path + * Determine the location of the Inkscape data directory (typically the share/ folder + * from where Inkscape should be loading resources) and append a relative path * - * - by default INKSCAPE_DATADIR will be relative to the called executable + * - by default use the compile time value of INKSCAPE_DATADIR + * - on Windows inkscape_datadir will be relative to the called executable by default * (typically inkscape/share but also handles the case where the executable is in a /bin subfolder) - * - to override set the INKSCAPE_DATADIR environment variable + * - if the environment variable INKSCAPE_DATADIR is set it will override all of the above */ -char *win32_append_datadir(const char *relative_path) +char *append_inkscape_datadir(const char *relative_path) { - static gchar *datadir; - if (!datadir) { - gchar const *inkscape_datadir = g_getenv("INKSCAPE_DATADIR"); - if (inkscape_datadir) { - datadir = g_strdup(inkscape_datadir); + static gchar *inkscape_datadir; + if (!inkscape_datadir) { + gchar const *datadir_env = g_getenv("INKSCAPE_DATADIR"); + if (datadir_env) { + inkscape_datadir = g_strdup(datadir_env); } else { +#ifdef _WIN32 gchar *module_path = g_win32_get_package_installation_directory_of_module(NULL); - datadir = g_build_filename(module_path, "share", NULL); + inkscape_datadir = g_build_filename(module_path, "share", NULL); g_free(module_path); +#else + inkscape_datadir = INKSCAPE_DATADIR; +#endif } } @@ -59,9 +58,8 @@ char *win32_append_datadir(const char *relative_path) relative_path = ""; } - return g_build_filename(datadir, relative_path, NULL); + return g_build_filename(inkscape_datadir, relative_path, NULL); } -#endif /* __WIN32__ */ /* |
