From 0586e1159b54c90669130ecfef52cf57c7e6c2de Mon Sep 17 00:00:00 2001 From: Tor Lillqvist Date: Mon, 12 Jan 2009 16:22:44 +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. svn path=/branches/gtk-2-14/; revision=22098 --- gdk-pixbuf/ChangeLog | 12 +++++++++++- gdk-pixbuf/queryloaders.c | 25 +++++++++++++++++++------ 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/gdk-pixbuf/ChangeLog b/gdk-pixbuf/ChangeLog index 9dd2e71d98..fd88c840f4 100644 --- a/gdk-pixbuf/ChangeLog +++ b/gdk-pixbuf/ChangeLog @@ -1,4 +1,14 @@ -2009-01-12 Tor Lillqvist +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 diff --git a/gdk-pixbuf/queryloaders.c b/gdk-pixbuf/queryloaders.c index c534592477..ba81638992 100644 --- a/gdk-pixbuf/queryloaders.c +++ b/gdk-pixbuf/queryloaders.c @@ -236,14 +236,27 @@ int main (int argc, char **argv) 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;