package xqf
tag 355045 + patch
thanks
Attached is a patch to fix this release critical xqf bug. With this
patch, xqf again starts up properly (as far as I can see, at least).
Since xqf is not currently in testing, I won't bother to do a
non-maintainer upload.
The problem as far as I can see is that the code tries to load XPM
pictures into the executable, instead of having them as files, and then
tries weird dlopen magic to get the in-executable XPM files. Magic is
not as reliable as technology, and once again it fails. So the first
change was to install the XPM files into /usr/share/xqf.
This was not enough, however, since the source refers to the files with
the wrong names: using _ instead - in filenames. The second change was
to fix that.
I hope this is useful. Happy hacking.
--
Teaching: the proof is in the doing.
diff -ru xqf-1.0.4/debian/changelog xqf-fixed/debian/changelog
--- xqf-1.0.4/debian/changelog 2006-04-08 16:57:41.000000000 +0000
+++ xqf-fixed/debian/changelog 2006-04-08 16:17:02.000000000 +0000
@@ -1,3 +1,10 @@
+xqf (1.0.4-1.1) unstable; urgency=low
+
+ * Non-maintainer upload.
+ * Foo.
+
+ -- Lars Wirzenius <[EMAIL PROTECTED]> Sat, 8 Apr 2006 16:16:55 +0000
+
xqf (1.0.4-1) unstable; urgency=low
* New upstream release.
diff -ru xqf-1.0.4/debian/rules xqf-fixed/debian/rules
--- xqf-1.0.4/debian/rules 2006-04-08 16:57:41.000000000 +0000
+++ xqf-fixed/debian/rules 2006-04-08 16:21:01.000000000 +0000
@@ -12,6 +12,7 @@
binary-install/xqf::
install -m 644 -p $(CURDIR)/debian/xqf.xpm $(CURDIR)/debian/xqf/usr/share/pixmaps/xqf.xpm
+ install -m 644 -p $(CURDIR)/src/xpm/*.xpm $(CURDIR)/debian/xqf/usr/share/xqf
clean::
rm -f config.h
diff -ru xqf-1.0.4/src/loadpixmap.c xqf-fixed/src/loadpixmap.c
--- xqf-1.0.4/src/loadpixmap.c 2005-07-03 17:51:08.000000000 +0000
+++ xqf-fixed/src/loadpixmap.c 2006-04-08 16:46:43.000000000 +0000
@@ -149,7 +149,7 @@
g_return_val_if_fail(pix!=NULL,NULL);
found_filename = find_pixmap_file(filename);
- if(is_suffix(filename, ".xpm")) // try png instead
+ if(!found_filename && is_suffix(filename, ".xpm")) // try png instead
{
char* tmp = g_strdup(filename);
strcpy(tmp+strlen(tmp)-3, "png");
@@ -159,6 +159,7 @@
if(!found_filename)
{
+#if 0
// not file on disk maybe xpm compiled into binary
if(is_suffix(filename, ".xpm"))
{
@@ -191,6 +192,7 @@
pix->pix = gdk_pixmap_colormap_create_from_xpm_d (NULL, colormap, &pix->mask, NULL, xpm);
}
}
+#endif
}
else if(is_suffix(found_filename, ".xpm"))
{
diff -ru xqf-1.0.4/src/pixmaps.c xqf-fixed/src/pixmaps.c
--- xqf-1.0.4/src/pixmaps.c 2005-10-07 12:55:15.000000000 +0000
+++ xqf-fixed/src/pixmaps.c 2006-04-08 16:55:40.000000000 +0000
@@ -327,31 +327,31 @@
create_pixmap (window, "record.xpm", &record_pix);
create_pixmap (window, "sfilter.xpm", &sfilter_pix);
- create_pixmap (window, "sfilter_cfg.xpm", &sfilter_cfg_pix);
+ create_pixmap (window, "sfilter-cfg.xpm", &sfilter_cfg_pix);
create_pixmap (window, "pfilter.xpm", &pfilter_pix);
- create_pixmap (window, "pfilter_cfg.xpm", &pfilter_cfg_pix);
+ create_pixmap (window, "pfilter-cfg.xpm", &pfilter_cfg_pix);
create_pixmap (window, "green_plus.xpm", &gplus_pix);
create_pixmap (window, "red_minus.xpm", &rminus_pix);
- create_pixmap (window, "man_black.xpm", &man_black_pix);
- create_pixmap (window, "man_red.xpm", &man_red_pix);
- create_pixmap (window, "man_yellow.xpm", &man_yellow_pix);
-
- create_pixmap (window, "group_red.xpm", &group_pix[0]);
- create_pixmap (window, "group_green.xpm", &group_pix[1]);
- create_pixmap (window, "group_blue.xpm", &group_pix[2]);
-
- create_pixmap (window, "buddy_red.xpm", &buddy_pix[1]);
- create_pixmap (window, "buddy_green.xpm", &buddy_pix[2]);
- create_pixmap (window, "buddy_blue.xpm", &buddy_pix[4]);
-
- create_pixmap (window, "server_na.xpm", &server_status[0]);
- create_pixmap (window, "server_up.xpm", &server_status[1]);
- create_pixmap (window, "server_down.xpm", &server_status[2]);
- create_pixmap (window, "server_to.xpm", &server_status[3]);
- create_pixmap (window, "server_error.xpm", &server_status[4]);
+ create_pixmap (window, "man-black.xpm", &man_black_pix);
+ create_pixmap (window, "man-red.xpm", &man_red_pix);
+ create_pixmap (window, "man-yellow.xpm", &man_yellow_pix);
+
+ create_pixmap (window, "group-red.xpm", &group_pix[0]);
+ create_pixmap (window, "group-green.xpm", &group_pix[1]);
+ create_pixmap (window, "group-blue.xpm", &group_pix[2]);
+
+ create_pixmap (window, "buddy-red.xpm", &buddy_pix[1]);
+ create_pixmap (window, "buddy-green.xpm", &buddy_pix[2]);
+ create_pixmap (window, "buddy-blue.xpm", &buddy_pix[4]);
+
+ create_pixmap (window, "server-na.xpm", &server_status[0]);
+ create_pixmap (window, "server-up.xpm", &server_status[1]);
+ create_pixmap (window, "server-down.xpm", &server_status[2]);
+ create_pixmap (window, "server-to.xpm", &server_status[3]);
+ create_pixmap (window, "server-error.xpm", &server_status[4]);
create_pixmap (window, "error.xpm", &error_pix);
create_pixmap (window, "delete.xpm", &delete_pix);
diff -ru xqf-1.0.4/src/xqf.c xqf-fixed/src/xqf.c
--- xqf-1.0.4/src/xqf.c 2005-08-23 18:22:19.000000000 +0000
+++ xqf-fixed/src/xqf.c 2006-04-08 16:16:43.000000000 +0000
@@ -3856,6 +3856,7 @@
}
add_pixmap_path_for_theme("default");
+ add_pixmap_directory(xqf_PACKAGE_DATA_DIR);
qstat_configfile = g_strconcat(xqf_PACKAGE_DATA_DIR, "/qstat.cfg", NULL);