From c1e67e994cba12e992f1a731218497212cc48761 Mon Sep 17 00:00:00 2001 From: Tor Lillqvist Date: Tue, 13 Jan 2009 11:17:25 +0000 Subject: [PATCH] Bug 164002 - query scripts don't work uninstalled on windows 2009-01-12 Tor Lillqvist Bug 164002 - query scripts don't work uninstalled on windows * queryloaders.c (main): Use the configure-time PIXBUF_LIBDIR if the exe is located in a .libs folder, i.e. run in the build directory through a libtool wrapper script or wrapper executable, or in the source folder itself. Otherwise continue to infer the runtime prefix from the exe's location. 2009-01-12 Tor Lillqvist * queryloaders.c (main): Remove the Win9x code path. It had been left by mistake. Win9x code is gone from the rest of GTK+ since 2.12. svn path=/trunk/; revision=22106 --- gdk-pixbuf/ChangeLog | 16 ++++++++++++++++ gdk-pixbuf/queryloaders.c | 38 ++++++++++++++++++++++---------------- 2 files changed, 38 insertions(+), 16 deletions(-) diff --git a/gdk-pixbuf/ChangeLog b/gdk-pixbuf/ChangeLog index d50d57e481..ffeeb1892e 100644 --- a/gdk-pixbuf/ChangeLog +++ b/gdk-pixbuf/ChangeLog @@ -1,3 +1,19 @@ +2009-01-12 Tor Lillqvist + + Bug 164002 - query scripts don't work uninstalled on windows + + * queryloaders.c (main): Use the configure-time PIXBUF_LIBDIR if + the exe is located in a .libs folder, i.e. run in the build + directory through a libtool wrapper script or wrapper executable, + or in the source folder itself. Otherwise continue to infer the + runtime prefix from the exe's location. + +2009-01-12 Tor Lillqvist + + * queryloaders.c (main): Remove the Win9x code path. It had been + left by mistake. Win9x code is gone from the rest of GTK+ since + 2.12. + 2009-01-07 Matthias Clasen Bug 566862 – pixbuf_new_from_file does not autodetect format diff --git a/gdk-pixbuf/queryloaders.c b/gdk-pixbuf/queryloaders.c index e0850f7158..ba81638992 100644 --- a/gdk-pixbuf/queryloaders.c +++ b/gdk-pixbuf/queryloaders.c @@ -230,27 +230,33 @@ int main (int argc, char **argv) * subdirectory of the installation directory, or in * the installation directory itself. */ - if (G_WIN32_HAVE_WIDECHAR_API ()) { - wchar_t fn[1000]; - GetModuleFileNameW (NULL, fn, G_N_ELEMENTS (fn)); - runtime_prefix = g_utf16_to_utf8 (fn, -1, NULL, NULL, NULL); - } - else { - char fn[1000]; - GetModuleFileNameA (NULL, fn, G_N_ELEMENTS (fn)); - runtime_prefix = g_locale_to_utf8 (fn, -1, NULL, NULL, NULL); - } + wchar_t fn[1000]; + GetModuleFileNameW (NULL, fn, G_N_ELEMENTS (fn)); + runtime_prefix = g_utf16_to_utf8 (fn, -1, NULL, NULL, NULL); slash = strrchr (runtime_prefix, '\\'); *slash = '\0'; slash = strrchr (runtime_prefix, '\\'); - if (slash != NULL && g_ascii_strcasecmp (slash + 1, "bin") == 0) { - *slash = '\0'; + /* If running from some weird location, or from the + * build directory (either in the .libs folder where + * libtool places the real executable when using a + * wrapper, or directly from the gdk-pixbuf folder), + * use the compile-time libdir. + */ + if (slash == NULL || + g_ascii_strcasecmp (slash + 1, ".libs") == 0 || + g_ascii_strcasecmp (slash + 1, "gdk-pixbuf") == 0) { + libdir = PIXBUF_LIBDIR; } + else { + if (slash != NULL && g_ascii_strcasecmp (slash + 1, "bin") == 0) { + *slash = '\0'; + } - libdir = g_strconcat (runtime_prefix, - "/", - PIXBUF_LIBDIR + strlen (GTK_PREFIX) + 1, - NULL); + libdir = g_strconcat (runtime_prefix, + "/", + PIXBUF_LIBDIR + strlen (GTK_PREFIX) + 1, + NULL); + } } else { libdir = PIXBUF_LIBDIR;