summaryrefslogtreecommitdiffstats
path: root/src/path-prefix.cpp
diff options
context:
space:
mode:
authorEduard Braun <eduard.braun2@gmx.de>2017-11-26 16:51:10 +0000
committerEduard Braun <eduard.braun2@gmx.de>2017-12-04 18:40:15 +0000
commite95f21d655898563072d224e58aba9abcced3115 (patch)
tree6686c294fa9cad302cf11c8419e3bb108acabd3c /src/path-prefix.cpp
parentMerge branch 'transupdate-master' of gitlab.com:Moini/inkscape (diff)
downloadinkscape-e95f21d655898563072d224e58aba9abcced3115.tar.gz
inkscape-e95f21d655898563072d224e58aba9abcced3115.zip
Pull custom code from prefix.h/cpp
These files are actually part of BinReloc Inkscape specific code is in path-prefix.h (and now path-prefix.cpp)
Diffstat (limited to 'src/path-prefix.cpp')
-rw-r--r--src/path-prefix.cpp76
1 files changed, 76 insertions, 0 deletions
diff --git a/src/path-prefix.cpp b/src/path-prefix.cpp
new file mode 100644
index 000000000..a8a09b9db
--- /dev/null
+++ b/src/path-prefix.cpp
@@ -0,0 +1,76 @@
+/*
+ * path-prefix.cpp - Inkscape specific prefix handling
+ *
+ * Authors:
+ * Eduard Braun <eduard.braun2@gmx.de>
+ *
+ * Copyright (C) 2017 Authors
+ *
+ * This file is part of Inkscape.
+ *
+ * Inkscape is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * See the file COPYING for details.
+ *
+ */
+
+
+#ifdef __WIN32__
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+
+#include <glib.h>
+#include "path-prefix.h"
+
+
+/**
+ * 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
+ *
+ * - by default INKSCAPE_DATADIR will be relative to the called executable
+ * (typically inkscape/share but also handles the case where the executable is in a /bin subfolder)
+ * - to override set the INKSCAPE_DATADIR environment variable
+ */
+char *win32_append_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);
+ } else {
+ gchar *module_path = g_win32_get_package_installation_directory_of_module(NULL);
+ datadir = g_build_filename(module_path, "share", NULL);
+ g_free(module_path);
+ }
+ }
+
+ if (!relative_path) {
+ relative_path = "";
+ }
+
+ return g_build_filename(datadir, relative_path, NULL);
+}
+#endif /* __WIN32__ */
+
+
+/*
+ Local Variables:
+ mode:c++
+ c-file-style:"stroustrup"
+ c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
+ indent-tabs-mode:nil
+ fill-column:99
+ End:
+*/
+// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :