summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/path-prefix.cpp36
-rw-r--r--src/path-prefix.h101
2 files changed, 68 insertions, 69 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__ */
/*
diff --git a/src/path-prefix.h b/src/path-prefix.h
index 429b0ba72..b69ad3753 100644
--- a/src/path-prefix.h
+++ b/src/path-prefix.h
@@ -18,11 +18,12 @@
#endif
#include "prefix.h"
-#ifdef __WIN32__
-char *win32_append_datadir(const char *relative_path);
-#define WIN32_DATADIR(suffix) (win32_append_datadir(suffix))
+
+char *append_inkscape_datadir(const char *relative_path);
+
+#ifdef _WIN32
#undef INKSCAPE_DATADIR
-#define INKSCAPE_DATADIR WIN32_DATADIR(NULL)
+#define INKSCAPE_DATADIR append_inkscape_datadir(NULL)
#endif
#ifdef ENABLE_BINRELOC
@@ -55,30 +56,30 @@ char *win32_append_datadir(const char *relative_path);
# define CREATE_PALETTESDIR BR_DATADIR( INKSCAPE_LIBPREFIX "/share/create/swatches" )
# define CREATE_PATTERNSDIR BR_DATADIR( INKSCAPE_LIBPREFIX "/share/create/patterns/vector" )
#else
-# ifdef WIN32
-# define INKSCAPE_APPICONDIR WIN32_DATADIR("pixmaps")
-# define INKSCAPE_ATTRRELDIR WIN32_DATADIR("attributes")
-# define INKSCAPE_BINDDIR WIN32_DATADIR("bind")
-# define INKSCAPE_EXAMPLESDIR WIN32_DATADIR("examples")
-# define INKSCAPE_EXTENSIONDIR WIN32_DATADIR("extensions")
-# define INKSCAPE_FILTERDIR WIN32_DATADIR("filters")
-# define INKSCAPE_FONTSDIR WIN32_DATADIR("fonts")
-# define INKSCAPE_GRADIENTSDIR WIN32_DATADIR("gradients")
-# define INKSCAPE_KEYSDIR WIN32_DATADIR("keys")
-# define INKSCAPE_PIXMAPDIR WIN32_DATADIR("icons")
-# define INKSCAPE_MARKERSDIR WIN32_DATADIR("markers")
-# define INKSCAPE_PALETTESDIR WIN32_DATADIR("palettes")
-# define INKSCAPE_PATTERNSDIR WIN32_DATADIR("patterns")
-# define INKSCAPE_SCREENSDIR WIN32_DATADIR("screens")
-# define INKSCAPE_SYMBOLSDIR WIN32_DATADIR("symbols")
-# define INKSCAPE_THEMEDIR INKSCAPE_PIXMAPDIR
-# define INKSCAPE_TUTORIALSDIR WIN32_DATADIR("tutorials")
-# define INKSCAPE_TEMPLATESDIR WIN32_DATADIR("templates")
-# define INKSCAPE_UIDIR WIN32_DATADIR("ui")
+# ifdef _WIN32
+# define INKSCAPE_APPICONDIR append_inkscape_datadir("pixmaps")
+# define INKSCAPE_ATTRRELDIR append_inkscape_datadir("attributes")
+# define INKSCAPE_BINDDIR append_inkscape_datadir("bind")
+# define INKSCAPE_EXAMPLESDIR append_inkscape_datadir("examples")
+# define INKSCAPE_EXTENSIONDIR append_inkscape_datadir("extensions")
+# define INKSCAPE_FILTERDIR append_inkscape_datadir("filters")
+# define INKSCAPE_FONTSDIR append_inkscape_datadir("fonts")
+# define INKSCAPE_GRADIENTSDIR append_inkscape_datadir("gradients")
+# define INKSCAPE_KEYSDIR append_inkscape_datadir("keys")
+# define INKSCAPE_PIXMAPDIR append_inkscape_datadir("icons")
+# define INKSCAPE_MARKERSDIR append_inkscape_datadir("markers")
+# define INKSCAPE_PALETTESDIR append_inkscape_datadir("palettes")
+# define INKSCAPE_PATTERNSDIR append_inkscape_datadir("patterns")
+# define INKSCAPE_SCREENSDIR append_inkscape_datadir("screens")
+# define INKSCAPE_SYMBOLSDIR append_inkscape_datadir("symbols")
+# define INKSCAPE_THEMEDIR append_inkscape_datadir("icons")
+# define INKSCAPE_TUTORIALSDIR append_inkscape_datadir("tutorials")
+# define INKSCAPE_TEMPLATESDIR append_inkscape_datadir("templates")
+# define INKSCAPE_UIDIR append_inkscape_datadir("ui")
//CREATE V0.1 WIN32 support
-# define CREATE_GRADIENTSDIR WIN32_DATADIR("create\\gradients\\gimp")
-# define CREATE_PALETTESDIR WIN32_DATADIR("create\\swatches")
-# define CREATE_PATTERNSDIR WIN32_DATADIR("create\\patterns\\vector")
+# define CREATE_GRADIENTSDIR append_inkscape_datadir("create\\gradients\\gimp")
+# define CREATE_PALETTESDIR append_inkscape_datadir("create\\swatches")
+# define CREATE_PATTERNSDIR append_inkscape_datadir("create\\patterns\\vector")
# elif defined ENABLE_OSX_APP_LOCATIONS
# define INKSCAPE_APPICONDIR "Contents/Resources/share/pixmaps"
# define INKSCAPE_ATTRRELDIR "Contents/Resources/share/inkscape/attributes"
@@ -104,30 +105,30 @@ char *win32_append_datadir(const char *relative_path);
# define CREATE_PALETTESDIR "/Library/Application Support/create/swatches"
# define CREATE_PATTERNSDIR "/Library/Application Support/create/patterns/vector"
# else
-# define INKSCAPE_APPICONDIR INKSCAPE_DATADIR "/pixmaps"
-# define INKSCAPE_ATTRRELDIR INKSCAPE_DATADIR "/inkscape/attributes"
-# define INKSCAPE_BINDDIR INKSCAPE_DATADIR "/inkscape/bind"
-# define INKSCAPE_EXAMPLESDIR INKSCAPE_DATADIR "/inkscape/examples"
-# define INKSCAPE_EXTENSIONDIR INKSCAPE_DATADIR "/inkscape/extensions"
-# define INKSCAPE_FILTERDIR INKSCAPE_DATADIR "/inkscape/filters"
-# define INKSCAPE_FONTSDIR INKSCAPE_DATADIR "/inkscape/fonts"
-# define INKSCAPE_GRADIENTSDIR INKSCAPE_DATADIR "/inkscape/gradients"
-# define INKSCAPE_KEYSDIR INKSCAPE_DATADIR "/inkscape/keys"
-# define INKSCAPE_PIXMAPDIR INKSCAPE_DATADIR "/inkscape/icons"
-# define INKSCAPE_MARKERSDIR INKSCAPE_DATADIR "/inkscape/markers"
-# define INKSCAPE_PALETTESDIR INKSCAPE_DATADIR "/inkscape/palettes"
-# define INKSCAPE_PATTERNSDIR INKSCAPE_DATADIR "/inkscape/patterns"
-# define INKSCAPE_SCREENSDIR INKSCAPE_DATADIR "/inkscape/screens"
-# define INKSCAPE_SYMBOLSDIR INKSCAPE_DATADIR "/inkscape/symbols"
-# define INKSCAPE_THEMEDIR INKSCAPE_DATADIR "/icons"
-# define INKSCAPE_TUTORIALSDIR INKSCAPE_DATADIR "/inkscape/tutorials"
-# define INKSCAPE_TEMPLATESDIR INKSCAPE_DATADIR "/inkscape/templates"
-# define INKSCAPE_UIDIR INKSCAPE_DATADIR "/inkscape/ui"
+# define INKSCAPE_APPICONDIR append_inkscape_datadir("pixmaps")
+# define INKSCAPE_ATTRRELDIR append_inkscape_datadir("inkscape/attributes")
+# define INKSCAPE_BINDDIR append_inkscape_datadir("inkscape/bind")
+# define INKSCAPE_EXAMPLESDIR append_inkscape_datadir("inkscape/examples")
+# define INKSCAPE_EXTENSIONDIR append_inkscape_datadir("inkscape/extensions")
+# define INKSCAPE_FILTERDIR append_inkscape_datadir("inkscape/filters")
+# define INKSCAPE_FONTSDIR append_inkscape_datadir("inkscape/fonts")
+# define INKSCAPE_GRADIENTSDIR append_inkscape_datadir("inkscape/gradients")
+# define INKSCAPE_KEYSDIR append_inkscape_datadir("inkscape/keys")
+# define INKSCAPE_PIXMAPDIR append_inkscape_datadir("inkscape/icons")
+# define INKSCAPE_MARKERSDIR append_inkscape_datadir("inkscape/markers")
+# define INKSCAPE_PALETTESDIR append_inkscape_datadir("inkscape/palettes")
+# define INKSCAPE_PATTERNSDIR append_inkscape_datadir("inkscape/patterns")
+# define INKSCAPE_SCREENSDIR append_inkscape_datadir("inkscape/screens")
+# define INKSCAPE_SYMBOLSDIR append_inkscape_datadir("inkscape/symbols")
+# define INKSCAPE_THEMEDIR append_inkscape_datadir("icons")
+# define INKSCAPE_TUTORIALSDIR append_inkscape_datadir("inkscape/tutorials")
+# define INKSCAPE_TEMPLATESDIR append_inkscape_datadir("inkscape/templates")
+# define INKSCAPE_UIDIR append_inkscape_datadir("inkscape/ui")
//CREATE V0.1 support
-# define CREATE_GRADIENTSDIR INKSCAPE_DATADIR "/create/gradients/gimp"
-# define CREATE_PALETTESDIR INKSCAPE_DATADIR "/create/swatches"
-# define CREATE_PATTERNSDIR INKSCAPE_DATADIR "/create/patterns/vector"
-# endif
+# define CREATE_GRADIENTSDIR append_inkscape_datadir("create/gradients/gimp")
+# define CREATE_PALETTESDIR append_inkscape_datadir("create/swatches")
+# define CREATE_PATTERNSDIR append_inkscape_datadir("create/patterns/vector")
+# endif
#endif
#endif /* _PATH_PREFIX_H_ */