From 3bb3dca05e4afd0a4bb88233fe68dba7b484f56a Mon Sep 17 00:00:00 2001 From: Jesse Keating Date: Tue, 29 Sep 2009 07:20:22 +0000 Subject: [PATCH 01/55] Initialize branch F-12 for xchat --- branch | 1 + 1 file changed, 1 insertion(+) create mode 100644 branch diff --git a/branch b/branch new file mode 100644 index 0000000..06de2d2 --- /dev/null +++ b/branch @@ -0,0 +1 @@ +F-12 From 0e2d55dec0b8ac1e93ff56cb3bc4e54e00baeab2 Mon Sep 17 00:00:00 2001 From: Bill Nottingham Date: Wed, 25 Nov 2009 22:40:54 +0000 Subject: [PATCH 02/55] Fix typo that causes a failure to update the common directory. (releng #2781) --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 6548b34..7c2ed50 100644 --- a/Makefile +++ b/Makefile @@ -1,10 +1,10 @@ # Makefile for source rpm: xchat -# $Id: Makefile,v 1.1 2004/09/09 14:33:13 cvsdist Exp $ +# $Id: Makefile,v 1.2 2007/10/15 19:31:32 notting Exp $ NAME := xchat SPECFILE = $(firstword $(wildcard *.spec)) define find-makefile-common -for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done +for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$d/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done endef MAKEFILE_COMMON := $(shell $(find-makefile-common)) From 08d48beafc68f4f65d2fea9d7ac595eb2c069382 Mon Sep 17 00:00:00 2001 From: Bill Nottingham Date: Thu, 26 Nov 2009 01:29:42 +0000 Subject: [PATCH 03/55] Fix typo that causes a failure to update the common directory. (releng #2781) --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 6548b34..7c2ed50 100644 --- a/Makefile +++ b/Makefile @@ -1,10 +1,10 @@ # Makefile for source rpm: xchat -# $Id: Makefile,v 1.1 2004/09/09 14:33:13 cvsdist Exp $ +# $Id: Makefile,v 1.2 2007/10/15 19:31:32 notting Exp $ NAME := xchat SPECFILE = $(firstword $(wildcard *.spec)) define find-makefile-common -for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done +for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$d/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done endef MAKEFILE_COMMON := $(shell $(find-makefile-common)) From 11d2f71e5c9e4b01d7826f02d837d49f49f9ecf8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0t=C4=9Bp=C3=A1n=20Kasal?= Date: Mon, 7 Dec 2009 00:22:13 +0000 Subject: [PATCH 04/55] - rebuild against perl 5.10.1 --- xchat.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xchat.spec b/xchat.spec index 8dec97d..5b247d9 100644 --- a/xchat.spec +++ b/xchat.spec @@ -4,7 +4,7 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat Version: 2.8.6 -Release: 13%{?dist} +Release: 14%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ @@ -165,6 +165,9 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Mon Dec 7 2009 Stepan Kasal - 1:2.8.6-14 +- rebuild against perl 5.10.1 + * Thu Sep 10 2009 Christopher Aillon - 1:2.8.6-13 - Drop the antiquated OPN reference From 690f2692d272f35dfad86f7340068e4f0c5e4c68 Mon Sep 17 00:00:00 2001 From: Kevin Fenzi Date: Thu, 17 Dec 2009 03:14:36 +0000 Subject: [PATCH 05/55] Add patch to allow switching to next channel with activity --- xchat-2.8.6-change-page-activity.patch | 339 +++++++++++++++++++++++++ xchat.spec | 9 +- 2 files changed, 347 insertions(+), 1 deletion(-) create mode 100644 xchat-2.8.6-change-page-activity.patch diff --git a/xchat-2.8.6-change-page-activity.patch b/xchat-2.8.6-change-page-activity.patch new file mode 100644 index 0000000..970158d --- /dev/null +++ b/xchat-2.8.6-change-page-activity.patch @@ -0,0 +1,339 @@ +diff -paur xchat2.orig/src/common/inbound.c xchat2/src/common/inbound.c +--- xchat2.orig/src/common/inbound.c 2008-07-20 17:31:44.898468115 +0200 ++++ xchat2/src/common/inbound.c 2008-07-19 19:57:09.799906780 +0200 +@@ -297,7 +297,10 @@ is_hilight (char *from, char *text, sess + { + g_free (text); + if (sess != current_tab) ++ { + sess->nick_said = TRUE; ++ lastact_update(sess); ++ } + fe_set_hilight (sess); + return 1; + } +@@ -344,6 +347,7 @@ inbound_action (session *sess, char *cha + sess->msg_said = TRUE; + sess->new_data = FALSE; + } ++ lastact_update(sess); + } + + user = userlist_find (sess, from); +@@ -395,6 +399,7 @@ inbound_chanmsg (server *serv, session * + { + sess->msg_said = TRUE; + sess->new_data = FALSE; ++ lastact_update(sess); + } + + user = userlist_find (sess, from); +diff -paur xchat2.orig/src/common/xchat.c xchat2/src/common/xchat.c +--- xchat2.orig/src/common/xchat.c 2008-07-20 17:31:44.900468825 +0200 ++++ xchat2/src/common/xchat.c 2008-07-20 17:33:57.089468218 +0200 +@@ -71,6 +71,23 @@ GSList *usermenu_list = 0; + GSList *urlhandler_list = 0; + GSList *tabmenu_list = 0; + ++/* ++ * This array contains 5 double linked lists, one for each priority in the ++ * "interesting session" queue ("channel" stands for everything but ++ * SESS_DIALOG): ++ * ++ * [0] queries with hilight ++ * [1] queries ++ * [2] channels with hilight ++ * [3] channels with dialogue ++ * [4] channels with other data ++ * ++ * Each time activity happens the corresponding session is put at the ++ * beginning of one of the lists. The aim is to be able to switch to the ++ * session with the most important/recent activity. ++ */ ++GList *sess_list_by_lastact[5] = {NULL, NULL, NULL, NULL, NULL}; ++ + static int in_xchat_exit = FALSE; + int xchat_is_quitting = FALSE; + /* command-line args */ +@@ -93,6 +110,105 @@ struct xchatprefs prefs; + SSL_CTX *ctx = NULL; + #endif + ++/* ++ * Update the priority queue of the "interesting sessions" ++ * (sess_list_by_lastact). ++ */ ++void ++lastact_update(session *sess) ++{ ++ int newidx; ++ ++ /* Find the priority (for the order see before) */ ++ if (sess->type == SESS_DIALOG) ++ { ++ if (sess->nick_said) ++ newidx = LACT_QUERY_HI; ++ else if (sess->msg_said) ++ newidx = LACT_QUERY; ++ else if (sess->new_data) ++ newidx = LACT_QUERY; ++ else ++ newidx = LACT_NONE; ++ } ++ else ++ { ++ if (sess->nick_said) ++ newidx = LACT_CHAN_HI; ++ else if (sess->msg_said) ++ newidx = LACT_CHAN; ++ else if (sess->new_data) ++ newidx = LACT_CHAN_DATA; ++ else ++ newidx = LACT_NONE; ++ } ++ ++ /* Check if this update is a no-op */ ++ if (sess->lastact_idx == newidx && ++ ((newidx != LACT_NONE && sess->lastact_elem == sess_list_by_lastact[newidx]) || ++ (newidx == LACT_NONE))) ++ return; ++ ++ /* Remove from the old position (and, if no new position, return */ ++ else if (sess->lastact_idx != LACT_NONE && sess->lastact_elem) ++ { ++ sess_list_by_lastact[sess->lastact_idx] = g_list_remove_link( ++ sess_list_by_lastact[sess->lastact_idx], ++ sess->lastact_elem); ++ if (newidx == LACT_NONE) ++ { ++ sess->lastact_idx = newidx; ++ return; ++ } ++ } ++ ++ /* No previous position, allocate new */ ++ else if (!sess->lastact_elem) ++ sess->lastact_elem = g_list_prepend(sess->lastact_elem, sess); ++ ++ sess->lastact_idx = newidx; ++ sess_list_by_lastact[newidx] = g_list_concat( ++ sess->lastact_elem, sess_list_by_lastact[newidx]); ++} ++ ++/* ++ * Extract the first session from the priority queue of sessions with recent ++ * activity. Return NULL if no such session can be found. ++ * ++ * If filter is specified, skip a session if filter(session) returns 0. This ++ * can be used for UI-specific needs, e.g. in fe-gtk we want to filter out ++ * detached sessions. ++ */ ++session * ++lastact_getfirst(int (*filter) (session *sess)) ++{ ++ int i; ++ session *sess = NULL; ++ GList *curitem; ++ ++ /* 5 is the number of priority classes LACT_ */ ++ for (i = 0; i < 5 && !sess; i++) ++ { ++ curitem = sess_list_by_lastact[i]; ++ while (curitem && !sess) ++ { ++ sess = g_list_nth_data(curitem, 0); ++ if (!sess || (filter && !filter(sess))) ++ { ++ sess = NULL; ++ curitem = g_list_next(curitem); ++ } ++ } ++ ++ if (sess) ++ { ++ sess_list_by_lastact[i] = g_list_remove_link(sess_list_by_lastact[i], curitem); ++ sess->lastact_idx = LACT_NONE; ++ } ++ } ++ ++ return sess; ++} + + int + is_session (session * sess) +@@ -362,6 +478,9 @@ session_new (server *serv, char *from, i + + sess_list = g_slist_prepend (sess_list, sess); + ++ sess->lastact_elem = NULL; ++ sess->lastact_idx = LACT_NONE; ++ + fe_new_window (sess, focus); + + return sess; +@@ -533,6 +652,16 @@ session_free (session *killsess) + current_sess = sess_list->data; + } + ++ if (killsess->lastact_elem) ++ { ++ if (killsess->lastact_idx != LACT_NONE) ++ sess_list_by_lastact[killsess->lastact_idx] = g_list_delete_link( ++ sess_list_by_lastact[killsess->lastact_idx], ++ killsess->lastact_elem); ++ else ++ g_list_free_1(killsess->lastact_elem); ++ } ++ + free (killsess); + + if (!sess_list && !in_xchat_exit) +diff -paur xchat2.orig/src/common/xchat.h xchat2/src/common/xchat.h +--- xchat2.orig/src/common/xchat.h 2008-07-20 17:31:44.901467675 +0200 ++++ xchat2/src/common/xchat.h 2008-07-20 17:33:28.240467970 +0200 +@@ -320,6 +320,15 @@ struct xchatprefs + #define SET_ON 1 + #define SET_DEFAULT 2 /* use global setting */ + ++/* Priorities in the "interesting sessions" priority queue ++ * (see xchat.c:sess_list_by_lastact) */ ++#define LACT_NONE -1 /* no queues */ ++#define LACT_QUERY_HI 0 /* query with hilight */ ++#define LACT_QUERY 1 /* query with messages */ ++#define LACT_CHAN_HI 2 /* channel with hilight */ ++#define LACT_CHAN 3 /* channel with messages */ ++#define LACT_CHAN_DATA 4 /* channel with other data */ ++ + typedef struct session + { + /* Per-Channel Alerts */ +@@ -369,6 +378,10 @@ typedef struct session + + int type; /* SESS_* */ + ++ GList *lastact_elem; /* our GList element in sess_list_by_lastact */ ++ int lastact_idx; /* the sess_list_by_lastact[] index of the list we're in. ++ * For valid values, see defines of LACT_*. */ ++ + int new_data:1; /* new data avail? (purple tab) */ + int nick_said:1; /* your nick mentioned? (blue tab) */ + int msg_said:1; /* new msg available? (red tab) */ +diff -paur xchat2.orig/src/common/xchatc.h xchat2/src/common/xchatc.h +--- xchat2.orig/src/common/xchatc.h 2008-07-20 17:31:44.901467675 +0200 ++++ xchat2/src/common/xchatc.h 2008-07-20 11:43:36.673967630 +0200 +@@ -25,10 +25,13 @@ extern GSList *ignore_list; + extern GSList *usermenu_list; + extern GSList *urlhandler_list; + extern GSList *tabmenu_list; ++extern GList *sess_list_by_lastact[]; + + session * find_channel (server *serv, char *chan); + session * find_dialog (server *serv, char *nick); + session * new_ircwindow (server *serv, char *name, int type, int focus); ++void lastact_update (session * sess); ++session * lastact_getfirst (int (*filter) (session *sess)); + int is_session (session * sess); + void session_free (session *killsess); + void lag_check (void); +diff -paur xchat2.orig/src/fe-gtk/fe-gtk.c xchat2/src/fe-gtk/fe-gtk.c +--- xchat2.orig/src/fe-gtk/fe-gtk.c 2008-07-20 17:31:44.958466232 +0200 ++++ xchat2/src/fe-gtk/fe-gtk.c 2008-07-19 19:58:57.431961788 +0200 +@@ -603,6 +603,7 @@ fe_print_text (struct session *sess, cha + sess->gui->is_tab && !sess->nick_said && stamp == 0) + { + sess->new_data = TRUE; ++ lastact_update(sess); + if (sess->msg_said) + fe_set_tab_color (sess, 2); + else +diff -paur xchat2.orig/src/fe-gtk/fkeys.c xchat2/src/fe-gtk/fkeys.c +--- xchat2.orig/src/fe-gtk/fkeys.c 2008-07-20 17:31:44.960465847 +0200 ++++ xchat2/src/fe-gtk/fkeys.c 2008-07-20 12:20:50.186930065 +0200 +@@ -158,7 +158,7 @@ static const struct key_action key_actio + {key_action_handle_command, "Run Command", + N_("The \002Run Command\002 action runs the data in Data 1 as if it has been typed into the entry box where you pressed the key sequence. Thus it can contain text (which will be sent to the channel/person), commands or user commands. When run all \002\\n\002 characters in Data 1 are used to deliminate seperate commands so it is possible to run more than one command. If you want a \002\\\002 in the actual text run then enter \002\\\\\002")}, + {key_action_page_switch, "Change Page", +- N_("The \002Change Page\002 command switches between pages in the notebook. Set Data 1 to the page you want to switch to. If Data 2 is set to anything then the switch will be relative to the current position")}, ++ N_("The \002Change Page\002 command switches between pages in the notebook. Set Data 1 to the page you want to switch to. If Data 2 is set to anything then the switch will be relative to the current position. Set Data 1 to auto to switch to the page with the most recent and important activity (queries first, then channels with hilight, channels with dialogue, channels with other data)")}, + {key_action_insert, "Insert in Buffer", + N_("The \002Insert in Buffer\002 command will insert the contents of Data 1 into the entry where the key sequence was pressed at the current cursor position")}, + {key_action_scroll_page, "Scroll Page", +@@ -402,6 +402,7 @@ key_load_defaults () + "A\n3\nChange Page\nD1:3\nD2!\n\n"\ + "A\n2\nChange Page\nD1:2\nD2!\n\n"\ + "A\n1\nChange Page\nD1:1\nD2!\n\n"\ ++ "A\ngrave\nChange Page\nD1:auto\nD2!\n\n"\ + "C\no\nInsert in Buffer\nD1:\nD2!\n\n"\ + "C\nb\nInsert in Buffer\nD1:\nD2!\n\n"\ + "C\nk\nInsert in Buffer\nD1:\nD2!\n\n"\ +@@ -1196,6 +1197,20 @@ key_action_handle_command (GtkWidget * w + return 0; + } + ++/* ++ * Check if the given session is inside the main window. This predicate ++ * is passed to lastact_pop as a way to filter out detached sessions. ++ * XXX: Consider moving this in a different file? ++ */ ++static int ++session_check_is_tab(session *sess) ++{ ++ if (!sess || !sess->gui) ++ return FALSE; ++ ++ return (sess->gui->is_tab); ++} ++ + static int + key_action_page_switch (GtkWidget * wid, GdkEventKey * evt, char *d1, + char *d2, struct session *sess) +@@ -1209,6 +1224,30 @@ key_action_page_switch (GtkWidget * wid, + if (!len) + return 1; + ++ if (strcasecmp(d1, "auto") == 0) ++ { ++ /* Auto switch makes no sense in detached sessions */ ++ if (!sess->gui->is_tab) ++ return 1; ++ ++ /* Obtain a session with recent activity */ ++ session *newsess = lastact_getfirst(session_check_is_tab); ++ ++ if (newsess) ++ { ++ /* ++ * Only sessions in the current window should be considered (i.e. ++ * we don't want to move the focus on a different window). This ++ * call could, in theory, do this, but we checked before that ++ * newsess->gui->is_tab and sess->gui->is_tab. ++ */ ++ mg_bring_tofront_sess(newsess); ++ return 0; ++ } ++ else ++ return 1; ++ } ++ + for (i = 0; i < len; i++) + { + if (d1[i] < '0' || d1[i] > '9') +diff -paur xchat2.orig/src/fe-gtk/maingui.c xchat2/src/fe-gtk/maingui.c +--- xchat2.orig/src/fe-gtk/maingui.c 2008-07-20 17:31:44.964469466 +0200 ++++ xchat2/src/fe-gtk/maingui.c 2008-07-19 19:58:58.255909127 +0200 +@@ -359,6 +359,7 @@ fe_set_tab_color (struct session *sess, + + break; + } ++ lastact_update(sess); + } + } + +@@ -643,6 +644,7 @@ mg_focus (session *sess) + sess->nick_said = FALSE; + sess->msg_said = FALSE; + sess->new_data = FALSE; ++ lastact_update(sess); + /* when called via mg_changui_new, is_tab might be true, but + sess->res->tab is still NULL. */ + if (sess->res->tab) diff --git a/xchat.spec b/xchat.spec index 5b247d9..e68efe3 100644 --- a/xchat.spec +++ b/xchat.spec @@ -4,7 +4,7 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat Version: 2.8.6 -Release: 14%{?dist} +Release: 15%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ @@ -28,6 +28,9 @@ Patch40: xchat-2.8.4-shm-pixmaps.patch Patch41: xchat-2.8.6-default-utf8.patch # fix literal underscore in "C_onnect" button (#512034, Edward Sheldrake) Patch42: xchat-2.8.6-connect-mnemonic.patch +# patch to add ability to change to tab with most recent activity +# See http://sourceforge.net/tracker/?func=detail&aid=2022871&group_id=239&atid=350239 +Patch50: xchat-2.8.6-change-page-activity.patch BuildRequires: perl perl(ExtUtils::Embed) python-devel openssl-devel pkgconfig, tcl-devel BuildRequires: GConf2-devel @@ -76,6 +79,7 @@ This package contains the X-Chat plugin providing the Tcl scripting interface. %patch40 -p1 -b .shm-pixmaps %patch41 -p1 -b .default-utf8 %patch42 -p1 -b .connect-mnemonic +%patch50 -p1 -b .active-channel-switch sed -i -e 's/#define GTK_DISABLE_DEPRECATED//g' src/fe-gtk/*.c @@ -165,6 +169,9 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Wed Dec 16 2009 Kevin Fenzi - 1:2.8.6-15 +- Add patch to allow switching to next channel with activity. + * Mon Dec 7 2009 Stepan Kasal - 1:2.8.6-14 - rebuild against perl 5.10.1 From 33d39edf21d86aeea0e1aa14590538f0fbb2a288 Mon Sep 17 00:00:00 2001 From: Kevin Kofler Date: Wed, 21 Apr 2010 07:03:34 +0000 Subject: [PATCH 06/55] - Add port numbers for Freenode (Debarshi Ray) 2.8.6-16 - Added IRCClient .desktop file subcategory (#485306) - Added GTK .desktop file subcategory - Added curly brackets to the name macro for consistency. --- xchat-2.8.6-freenode-ports.patch | 35 ++++++++++++++++++++++++++++++++ xchat.spec | 21 +++++++++++++++---- 2 files changed, 52 insertions(+), 4 deletions(-) create mode 100644 xchat-2.8.6-freenode-ports.patch diff --git a/xchat-2.8.6-freenode-ports.patch b/xchat-2.8.6-freenode-ports.patch new file mode 100644 index 0000000..3e336fd --- /dev/null +++ b/xchat-2.8.6-freenode-ports.patch @@ -0,0 +1,35 @@ +From bc98c28e891408145bed2b18d3c02adbadadde31 Mon Sep 17 00:00:00 2001 +From: Debarshi Ray +Date: Sat, 30 Jan 2010 13:05:21 +0200 +Subject: [PATCH] Added port numbers for Freenode + +http://freenode.net/irc_servers.shtml +--- + src/common/servlist.c | 11 ++++++++++- + 1 files changed, 10 insertions(+), 1 deletions(-) + +diff --git a/src/common/servlist.c b/src/common/servlist.c +index c6839e0..3082966 100644 +--- a/src/common/servlist.c ++++ b/src/common/servlist.c +@@ -207,7 +207,16 @@ static const struct defaultserver def[] = + {0, "irc.vendetta.com"}, + + {"FreeNode", 0}, +- {0, "irc.freenode.net"}, ++ {0, "irc.freenode.net/6665"}, ++ {0, "irc.freenode.net/6666"}, ++ {0, "irc.freenode.net/6667"}, ++ {0, "irc.freenode.net/8000"}, ++ {0, "irc.freenode.net/8001"}, ++ {0, "irc.freenode.net/8002"}, ++#ifdef USE_OPENSSL ++ {0, "irc.freenode.net/+7000"}, ++ {0, "irc.freenode.net/+7070"}, ++#endif + + /* {"Freeworld", 0}, + {0, "kabel.freeworld.nu"}, +-- +1.6.6 + diff --git a/xchat.spec b/xchat.spec index e68efe3..d546eac 100644 --- a/xchat.spec +++ b/xchat.spec @@ -4,7 +4,7 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat Version: 2.8.6 -Release: 15%{?dist} +Release: 17%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ @@ -31,6 +31,8 @@ Patch42: xchat-2.8.6-connect-mnemonic.patch # patch to add ability to change to tab with most recent activity # See http://sourceforge.net/tracker/?func=detail&aid=2022871&group_id=239&atid=350239 Patch50: xchat-2.8.6-change-page-activity.patch +# add port numbers for Freenode (Debarshi Ray) +Patch51: xchat-2.8.6-freenode-ports.patch BuildRequires: perl perl(ExtUtils::Embed) python-devel openssl-devel pkgconfig, tcl-devel BuildRequires: GConf2-devel @@ -80,6 +82,7 @@ This package contains the X-Chat plugin providing the Tcl scripting interface. %patch41 -p1 -b .default-utf8 %patch42 -p1 -b .connect-mnemonic %patch50 -p1 -b .active-channel-switch +%patch51 -p1 -b .freenode-ports sed -i -e 's/#define GTK_DISABLE_DEPRECATED//g' src/fe-gtk/*.c @@ -114,9 +117,11 @@ make %{?_smp_mflags} # Install the .desktop file properly %{__rm} -f $RPM_BUILD_ROOT%{_datadir}/applications/xchat.desktop desktop-file-install --vendor="" \ - --dir $RPM_BUILD_ROOT%{_datadir}/applications xchat.desktop + --dir $RPM_BUILD_ROOT%{_datadir}/applications \ + --add-category=IRCClient \ + --add-category=GTK xchat.desktop -%find_lang %name +%find_lang %{name} # do not Provide plugins .so %define _use_internal_dependency_generator 0 @@ -169,8 +174,16 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Wed Apr 21 2010 Kevin Kofler - 1:2.8.6-17 +- Add port numbers for Freenode (Debarshi Ray) + +* Fri Apr 09 2010 Rudolf Kastl - 1:2.8.6-16 +- Added IRCClient .desktop file subcategory (#485306) +- Added GTK .desktop file subcategory +- Added curly brackets to the name macro for consistency. + * Wed Dec 16 2009 Kevin Fenzi - 1:2.8.6-15 -- Add patch to allow switching to next channel with activity. +- Add patch to allow switching to next channel with activity. * Mon Dec 7 2009 Stepan Kasal - 1:2.8.6-14 - rebuild against perl 5.10.1 From 75299fbd2074779c6e8f3e7518745cf008757574 Mon Sep 17 00:00:00 2001 From: Kevin Kofler Date: Sat, 1 May 2010 07:15:54 +0000 Subject: [PATCH 07/55] Sync from devel: 2.8.6-17 - Add port numbers for Freenode (Debarshi Ray) 2.8.6-16 - Added IRCClient .desktop file subcategory (#485306) - Added GTK .desktop file subcategory - Added curly brackets to the name macro for consistency. 2.8.6-15 - Add patch to allow switching to next channel with activity. 2.8.6-14 - rebuild against perl 5.10.1 --- xchat-2.8.6-change-page-activity.patch | 339 +++++++++++++++++++++++++ xchat-2.8.6-freenode-ports.patch | 35 +++ xchat.spec | 29 ++- 3 files changed, 400 insertions(+), 3 deletions(-) create mode 100644 xchat-2.8.6-change-page-activity.patch create mode 100644 xchat-2.8.6-freenode-ports.patch diff --git a/xchat-2.8.6-change-page-activity.patch b/xchat-2.8.6-change-page-activity.patch new file mode 100644 index 0000000..970158d --- /dev/null +++ b/xchat-2.8.6-change-page-activity.patch @@ -0,0 +1,339 @@ +diff -paur xchat2.orig/src/common/inbound.c xchat2/src/common/inbound.c +--- xchat2.orig/src/common/inbound.c 2008-07-20 17:31:44.898468115 +0200 ++++ xchat2/src/common/inbound.c 2008-07-19 19:57:09.799906780 +0200 +@@ -297,7 +297,10 @@ is_hilight (char *from, char *text, sess + { + g_free (text); + if (sess != current_tab) ++ { + sess->nick_said = TRUE; ++ lastact_update(sess); ++ } + fe_set_hilight (sess); + return 1; + } +@@ -344,6 +347,7 @@ inbound_action (session *sess, char *cha + sess->msg_said = TRUE; + sess->new_data = FALSE; + } ++ lastact_update(sess); + } + + user = userlist_find (sess, from); +@@ -395,6 +399,7 @@ inbound_chanmsg (server *serv, session * + { + sess->msg_said = TRUE; + sess->new_data = FALSE; ++ lastact_update(sess); + } + + user = userlist_find (sess, from); +diff -paur xchat2.orig/src/common/xchat.c xchat2/src/common/xchat.c +--- xchat2.orig/src/common/xchat.c 2008-07-20 17:31:44.900468825 +0200 ++++ xchat2/src/common/xchat.c 2008-07-20 17:33:57.089468218 +0200 +@@ -71,6 +71,23 @@ GSList *usermenu_list = 0; + GSList *urlhandler_list = 0; + GSList *tabmenu_list = 0; + ++/* ++ * This array contains 5 double linked lists, one for each priority in the ++ * "interesting session" queue ("channel" stands for everything but ++ * SESS_DIALOG): ++ * ++ * [0] queries with hilight ++ * [1] queries ++ * [2] channels with hilight ++ * [3] channels with dialogue ++ * [4] channels with other data ++ * ++ * Each time activity happens the corresponding session is put at the ++ * beginning of one of the lists. The aim is to be able to switch to the ++ * session with the most important/recent activity. ++ */ ++GList *sess_list_by_lastact[5] = {NULL, NULL, NULL, NULL, NULL}; ++ + static int in_xchat_exit = FALSE; + int xchat_is_quitting = FALSE; + /* command-line args */ +@@ -93,6 +110,105 @@ struct xchatprefs prefs; + SSL_CTX *ctx = NULL; + #endif + ++/* ++ * Update the priority queue of the "interesting sessions" ++ * (sess_list_by_lastact). ++ */ ++void ++lastact_update(session *sess) ++{ ++ int newidx; ++ ++ /* Find the priority (for the order see before) */ ++ if (sess->type == SESS_DIALOG) ++ { ++ if (sess->nick_said) ++ newidx = LACT_QUERY_HI; ++ else if (sess->msg_said) ++ newidx = LACT_QUERY; ++ else if (sess->new_data) ++ newidx = LACT_QUERY; ++ else ++ newidx = LACT_NONE; ++ } ++ else ++ { ++ if (sess->nick_said) ++ newidx = LACT_CHAN_HI; ++ else if (sess->msg_said) ++ newidx = LACT_CHAN; ++ else if (sess->new_data) ++ newidx = LACT_CHAN_DATA; ++ else ++ newidx = LACT_NONE; ++ } ++ ++ /* Check if this update is a no-op */ ++ if (sess->lastact_idx == newidx && ++ ((newidx != LACT_NONE && sess->lastact_elem == sess_list_by_lastact[newidx]) || ++ (newidx == LACT_NONE))) ++ return; ++ ++ /* Remove from the old position (and, if no new position, return */ ++ else if (sess->lastact_idx != LACT_NONE && sess->lastact_elem) ++ { ++ sess_list_by_lastact[sess->lastact_idx] = g_list_remove_link( ++ sess_list_by_lastact[sess->lastact_idx], ++ sess->lastact_elem); ++ if (newidx == LACT_NONE) ++ { ++ sess->lastact_idx = newidx; ++ return; ++ } ++ } ++ ++ /* No previous position, allocate new */ ++ else if (!sess->lastact_elem) ++ sess->lastact_elem = g_list_prepend(sess->lastact_elem, sess); ++ ++ sess->lastact_idx = newidx; ++ sess_list_by_lastact[newidx] = g_list_concat( ++ sess->lastact_elem, sess_list_by_lastact[newidx]); ++} ++ ++/* ++ * Extract the first session from the priority queue of sessions with recent ++ * activity. Return NULL if no such session can be found. ++ * ++ * If filter is specified, skip a session if filter(session) returns 0. This ++ * can be used for UI-specific needs, e.g. in fe-gtk we want to filter out ++ * detached sessions. ++ */ ++session * ++lastact_getfirst(int (*filter) (session *sess)) ++{ ++ int i; ++ session *sess = NULL; ++ GList *curitem; ++ ++ /* 5 is the number of priority classes LACT_ */ ++ for (i = 0; i < 5 && !sess; i++) ++ { ++ curitem = sess_list_by_lastact[i]; ++ while (curitem && !sess) ++ { ++ sess = g_list_nth_data(curitem, 0); ++ if (!sess || (filter && !filter(sess))) ++ { ++ sess = NULL; ++ curitem = g_list_next(curitem); ++ } ++ } ++ ++ if (sess) ++ { ++ sess_list_by_lastact[i] = g_list_remove_link(sess_list_by_lastact[i], curitem); ++ sess->lastact_idx = LACT_NONE; ++ } ++ } ++ ++ return sess; ++} + + int + is_session (session * sess) +@@ -362,6 +478,9 @@ session_new (server *serv, char *from, i + + sess_list = g_slist_prepend (sess_list, sess); + ++ sess->lastact_elem = NULL; ++ sess->lastact_idx = LACT_NONE; ++ + fe_new_window (sess, focus); + + return sess; +@@ -533,6 +652,16 @@ session_free (session *killsess) + current_sess = sess_list->data; + } + ++ if (killsess->lastact_elem) ++ { ++ if (killsess->lastact_idx != LACT_NONE) ++ sess_list_by_lastact[killsess->lastact_idx] = g_list_delete_link( ++ sess_list_by_lastact[killsess->lastact_idx], ++ killsess->lastact_elem); ++ else ++ g_list_free_1(killsess->lastact_elem); ++ } ++ + free (killsess); + + if (!sess_list && !in_xchat_exit) +diff -paur xchat2.orig/src/common/xchat.h xchat2/src/common/xchat.h +--- xchat2.orig/src/common/xchat.h 2008-07-20 17:31:44.901467675 +0200 ++++ xchat2/src/common/xchat.h 2008-07-20 17:33:28.240467970 +0200 +@@ -320,6 +320,15 @@ struct xchatprefs + #define SET_ON 1 + #define SET_DEFAULT 2 /* use global setting */ + ++/* Priorities in the "interesting sessions" priority queue ++ * (see xchat.c:sess_list_by_lastact) */ ++#define LACT_NONE -1 /* no queues */ ++#define LACT_QUERY_HI 0 /* query with hilight */ ++#define LACT_QUERY 1 /* query with messages */ ++#define LACT_CHAN_HI 2 /* channel with hilight */ ++#define LACT_CHAN 3 /* channel with messages */ ++#define LACT_CHAN_DATA 4 /* channel with other data */ ++ + typedef struct session + { + /* Per-Channel Alerts */ +@@ -369,6 +378,10 @@ typedef struct session + + int type; /* SESS_* */ + ++ GList *lastact_elem; /* our GList element in sess_list_by_lastact */ ++ int lastact_idx; /* the sess_list_by_lastact[] index of the list we're in. ++ * For valid values, see defines of LACT_*. */ ++ + int new_data:1; /* new data avail? (purple tab) */ + int nick_said:1; /* your nick mentioned? (blue tab) */ + int msg_said:1; /* new msg available? (red tab) */ +diff -paur xchat2.orig/src/common/xchatc.h xchat2/src/common/xchatc.h +--- xchat2.orig/src/common/xchatc.h 2008-07-20 17:31:44.901467675 +0200 ++++ xchat2/src/common/xchatc.h 2008-07-20 11:43:36.673967630 +0200 +@@ -25,10 +25,13 @@ extern GSList *ignore_list; + extern GSList *usermenu_list; + extern GSList *urlhandler_list; + extern GSList *tabmenu_list; ++extern GList *sess_list_by_lastact[]; + + session * find_channel (server *serv, char *chan); + session * find_dialog (server *serv, char *nick); + session * new_ircwindow (server *serv, char *name, int type, int focus); ++void lastact_update (session * sess); ++session * lastact_getfirst (int (*filter) (session *sess)); + int is_session (session * sess); + void session_free (session *killsess); + void lag_check (void); +diff -paur xchat2.orig/src/fe-gtk/fe-gtk.c xchat2/src/fe-gtk/fe-gtk.c +--- xchat2.orig/src/fe-gtk/fe-gtk.c 2008-07-20 17:31:44.958466232 +0200 ++++ xchat2/src/fe-gtk/fe-gtk.c 2008-07-19 19:58:57.431961788 +0200 +@@ -603,6 +603,7 @@ fe_print_text (struct session *sess, cha + sess->gui->is_tab && !sess->nick_said && stamp == 0) + { + sess->new_data = TRUE; ++ lastact_update(sess); + if (sess->msg_said) + fe_set_tab_color (sess, 2); + else +diff -paur xchat2.orig/src/fe-gtk/fkeys.c xchat2/src/fe-gtk/fkeys.c +--- xchat2.orig/src/fe-gtk/fkeys.c 2008-07-20 17:31:44.960465847 +0200 ++++ xchat2/src/fe-gtk/fkeys.c 2008-07-20 12:20:50.186930065 +0200 +@@ -158,7 +158,7 @@ static const struct key_action key_actio + {key_action_handle_command, "Run Command", + N_("The \002Run Command\002 action runs the data in Data 1 as if it has been typed into the entry box where you pressed the key sequence. Thus it can contain text (which will be sent to the channel/person), commands or user commands. When run all \002\\n\002 characters in Data 1 are used to deliminate seperate commands so it is possible to run more than one command. If you want a \002\\\002 in the actual text run then enter \002\\\\\002")}, + {key_action_page_switch, "Change Page", +- N_("The \002Change Page\002 command switches between pages in the notebook. Set Data 1 to the page you want to switch to. If Data 2 is set to anything then the switch will be relative to the current position")}, ++ N_("The \002Change Page\002 command switches between pages in the notebook. Set Data 1 to the page you want to switch to. If Data 2 is set to anything then the switch will be relative to the current position. Set Data 1 to auto to switch to the page with the most recent and important activity (queries first, then channels with hilight, channels with dialogue, channels with other data)")}, + {key_action_insert, "Insert in Buffer", + N_("The \002Insert in Buffer\002 command will insert the contents of Data 1 into the entry where the key sequence was pressed at the current cursor position")}, + {key_action_scroll_page, "Scroll Page", +@@ -402,6 +402,7 @@ key_load_defaults () + "A\n3\nChange Page\nD1:3\nD2!\n\n"\ + "A\n2\nChange Page\nD1:2\nD2!\n\n"\ + "A\n1\nChange Page\nD1:1\nD2!\n\n"\ ++ "A\ngrave\nChange Page\nD1:auto\nD2!\n\n"\ + "C\no\nInsert in Buffer\nD1:\nD2!\n\n"\ + "C\nb\nInsert in Buffer\nD1:\nD2!\n\n"\ + "C\nk\nInsert in Buffer\nD1:\nD2!\n\n"\ +@@ -1196,6 +1197,20 @@ key_action_handle_command (GtkWidget * w + return 0; + } + ++/* ++ * Check if the given session is inside the main window. This predicate ++ * is passed to lastact_pop as a way to filter out detached sessions. ++ * XXX: Consider moving this in a different file? ++ */ ++static int ++session_check_is_tab(session *sess) ++{ ++ if (!sess || !sess->gui) ++ return FALSE; ++ ++ return (sess->gui->is_tab); ++} ++ + static int + key_action_page_switch (GtkWidget * wid, GdkEventKey * evt, char *d1, + char *d2, struct session *sess) +@@ -1209,6 +1224,30 @@ key_action_page_switch (GtkWidget * wid, + if (!len) + return 1; + ++ if (strcasecmp(d1, "auto") == 0) ++ { ++ /* Auto switch makes no sense in detached sessions */ ++ if (!sess->gui->is_tab) ++ return 1; ++ ++ /* Obtain a session with recent activity */ ++ session *newsess = lastact_getfirst(session_check_is_tab); ++ ++ if (newsess) ++ { ++ /* ++ * Only sessions in the current window should be considered (i.e. ++ * we don't want to move the focus on a different window). This ++ * call could, in theory, do this, but we checked before that ++ * newsess->gui->is_tab and sess->gui->is_tab. ++ */ ++ mg_bring_tofront_sess(newsess); ++ return 0; ++ } ++ else ++ return 1; ++ } ++ + for (i = 0; i < len; i++) + { + if (d1[i] < '0' || d1[i] > '9') +diff -paur xchat2.orig/src/fe-gtk/maingui.c xchat2/src/fe-gtk/maingui.c +--- xchat2.orig/src/fe-gtk/maingui.c 2008-07-20 17:31:44.964469466 +0200 ++++ xchat2/src/fe-gtk/maingui.c 2008-07-19 19:58:58.255909127 +0200 +@@ -359,6 +359,7 @@ fe_set_tab_color (struct session *sess, + + break; + } ++ lastact_update(sess); + } + } + +@@ -643,6 +644,7 @@ mg_focus (session *sess) + sess->nick_said = FALSE; + sess->msg_said = FALSE; + sess->new_data = FALSE; ++ lastact_update(sess); + /* when called via mg_changui_new, is_tab might be true, but + sess->res->tab is still NULL. */ + if (sess->res->tab) diff --git a/xchat-2.8.6-freenode-ports.patch b/xchat-2.8.6-freenode-ports.patch new file mode 100644 index 0000000..3e336fd --- /dev/null +++ b/xchat-2.8.6-freenode-ports.patch @@ -0,0 +1,35 @@ +From bc98c28e891408145bed2b18d3c02adbadadde31 Mon Sep 17 00:00:00 2001 +From: Debarshi Ray +Date: Sat, 30 Jan 2010 13:05:21 +0200 +Subject: [PATCH] Added port numbers for Freenode + +http://freenode.net/irc_servers.shtml +--- + src/common/servlist.c | 11 ++++++++++- + 1 files changed, 10 insertions(+), 1 deletions(-) + +diff --git a/src/common/servlist.c b/src/common/servlist.c +index c6839e0..3082966 100644 +--- a/src/common/servlist.c ++++ b/src/common/servlist.c +@@ -207,7 +207,16 @@ static const struct defaultserver def[] = + {0, "irc.vendetta.com"}, + + {"FreeNode", 0}, +- {0, "irc.freenode.net"}, ++ {0, "irc.freenode.net/6665"}, ++ {0, "irc.freenode.net/6666"}, ++ {0, "irc.freenode.net/6667"}, ++ {0, "irc.freenode.net/8000"}, ++ {0, "irc.freenode.net/8001"}, ++ {0, "irc.freenode.net/8002"}, ++#ifdef USE_OPENSSL ++ {0, "irc.freenode.net/+7000"}, ++ {0, "irc.freenode.net/+7070"}, ++#endif + + /* {"Freeworld", 0}, + {0, "kabel.freeworld.nu"}, +-- +1.6.6 + diff --git a/xchat.spec b/xchat.spec index 8dec97d..d546eac 100644 --- a/xchat.spec +++ b/xchat.spec @@ -4,7 +4,7 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat Version: 2.8.6 -Release: 13%{?dist} +Release: 17%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ @@ -28,6 +28,11 @@ Patch40: xchat-2.8.4-shm-pixmaps.patch Patch41: xchat-2.8.6-default-utf8.patch # fix literal underscore in "C_onnect" button (#512034, Edward Sheldrake) Patch42: xchat-2.8.6-connect-mnemonic.patch +# patch to add ability to change to tab with most recent activity +# See http://sourceforge.net/tracker/?func=detail&aid=2022871&group_id=239&atid=350239 +Patch50: xchat-2.8.6-change-page-activity.patch +# add port numbers for Freenode (Debarshi Ray) +Patch51: xchat-2.8.6-freenode-ports.patch BuildRequires: perl perl(ExtUtils::Embed) python-devel openssl-devel pkgconfig, tcl-devel BuildRequires: GConf2-devel @@ -76,6 +81,8 @@ This package contains the X-Chat plugin providing the Tcl scripting interface. %patch40 -p1 -b .shm-pixmaps %patch41 -p1 -b .default-utf8 %patch42 -p1 -b .connect-mnemonic +%patch50 -p1 -b .active-channel-switch +%patch51 -p1 -b .freenode-ports sed -i -e 's/#define GTK_DISABLE_DEPRECATED//g' src/fe-gtk/*.c @@ -110,9 +117,11 @@ make %{?_smp_mflags} # Install the .desktop file properly %{__rm} -f $RPM_BUILD_ROOT%{_datadir}/applications/xchat.desktop desktop-file-install --vendor="" \ - --dir $RPM_BUILD_ROOT%{_datadir}/applications xchat.desktop + --dir $RPM_BUILD_ROOT%{_datadir}/applications \ + --add-category=IRCClient \ + --add-category=GTK xchat.desktop -%find_lang %name +%find_lang %{name} # do not Provide plugins .so %define _use_internal_dependency_generator 0 @@ -165,6 +174,20 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Wed Apr 21 2010 Kevin Kofler - 1:2.8.6-17 +- Add port numbers for Freenode (Debarshi Ray) + +* Fri Apr 09 2010 Rudolf Kastl - 1:2.8.6-16 +- Added IRCClient .desktop file subcategory (#485306) +- Added GTK .desktop file subcategory +- Added curly brackets to the name macro for consistency. + +* Wed Dec 16 2009 Kevin Fenzi - 1:2.8.6-15 +- Add patch to allow switching to next channel with activity. + +* Mon Dec 7 2009 Stepan Kasal - 1:2.8.6-14 +- rebuild against perl 5.10.1 + * Thu Sep 10 2009 Christopher Aillon - 1:2.8.6-13 - Drop the antiquated OPN reference From a0db7a425eff91842ca58c29539233a7869fd07c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcela=20Ma=C5=A1l=C3=A1=C5=88ov=C3=A1?= Date: Wed, 2 Jun 2010 09:16:04 +0000 Subject: [PATCH 08/55] - Mass rebuild with perl-5.12.0 --- xchat.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xchat.spec b/xchat.spec index d546eac..81c0da6 100644 --- a/xchat.spec +++ b/xchat.spec @@ -4,7 +4,7 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat Version: 2.8.6 -Release: 17%{?dist} +Release: 18%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ @@ -174,6 +174,9 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Wed Jun 02 2010 Marcela Maslanova - 1:2.8.6-18 +- Mass rebuild with perl-5.12.0 + * Wed Apr 21 2010 Kevin Kofler - 1:2.8.6-17 - Add port numbers for Freenode (Debarshi Ray) From 5fcbc4f24d70efe75b8d1051b61663767a4eb125 Mon Sep 17 00:00:00 2001 From: Kevin Kofler Date: Thu, 3 Jun 2010 22:23:50 +0000 Subject: [PATCH 09/55] - Update to 2.8.8 (#597735) - Use xz tarball (new in 2.8.8) - Drop smallfixes, redhat-desktop (remaining part), shm-pixmaps and connect-mnemonic patches (all fixed upstream) --- .cvsignore | 2 +- sources | 2 +- xc286-smallfixes.diff | 68 ------------------ xchat-2.8.4-redhat-desktop.patch | 14 ---- xchat-2.8.4-shm-pixmaps.patch | 106 ----------------------------- xchat-2.8.6-connect-mnemonic.patch | 11 --- xchat.spec | 22 +++--- 7 files changed, 12 insertions(+), 213 deletions(-) delete mode 100644 xc286-smallfixes.diff delete mode 100644 xchat-2.8.4-redhat-desktop.patch delete mode 100644 xchat-2.8.4-shm-pixmaps.patch delete mode 100644 xchat-2.8.6-connect-mnemonic.patch diff --git a/.cvsignore b/.cvsignore index b916783..1f5f78f 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -xchat-2.8.6.tar.bz2 +xchat-2.8.8.tar.xz diff --git a/sources b/sources index 1bcf67b..6ce9832 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -1f2670865d43a23a9abc596dde999aca xchat-2.8.6.tar.bz2 +9a11f13121ff0af787bba3b014378e58 xchat-2.8.8.tar.xz diff --git a/xc286-smallfixes.diff b/xc286-smallfixes.diff deleted file mode 100644 index da90015..0000000 --- a/xc286-smallfixes.diff +++ /dev/null @@ -1,68 +0,0 @@ -# -# Various small fixes from CVS that are considered safe to apply to 2.8.6. -# ---- xchat-2.8.6/src/common/cfgfiles.c 2008-02-05 21:02:47.000000000 +1100 -+++ xchat-2.8.6p1/src/common/cfgfiles.c 2008-06-15 13:45:43.000000000 +1000 -@@ -886,7 +886,6 @@ - set_showval (session *sess, const struct prefs *var, char *tbuf) - { - int len, dots, j; -- static const char *offon[] = { "OFF", "ON" }; - - len = strlen (var->name); - memcpy (tbuf, var->name, len); -@@ -909,8 +908,10 @@ - *((int *) &prefs + var->offset)); - break; - case TYPE_BOOL: -- sprintf (tbuf + len, "\0033:\017 %s\n", offon[ -- *((int *) &prefs + var->offset)]); -+ if (*((int *) &prefs + var->offset)) -+ sprintf (tbuf + len, "\0033:\017 %s\n", "ON"); -+ else -+ sprintf (tbuf + len, "\0033:\017 %s\n", "OFF"); - break; - } - PrintText (sess, tbuf); ---- xchat-2.8.6/src/common/chanopt.c 2008-06-10 22:00:55.000000000 +1000 -+++ xchat-2.8.6p1/src/common/chanopt.c 2008-06-15 13:48:04.000000000 +1000 -@@ -32,7 +32,7 @@ - - #define S_F(xx) STRUCT_OFFSET_STR(struct session,xx) - --channel_options chanopt[] = -+static const channel_options chanopt[] = - { - {"alert_beep", "BEEP", S_F(alert_beep)}, - {"alert_taskbar", NULL, S_F(alert_taskbar)}, ---- xchat-2.8.6/src/common/servlist.c 2008-04-01 19:22:34.000000000 +1100 -+++ xchat-2.8.6p1/src/common/servlist.c 2008-06-15 13:57:41.000000000 +1000 -@@ -509,6 +509,8 @@ - list = g_slist_nth (net->servlist, net->selected); - if (!list) - list = net->servlist; -+ if (!list) -+ return; - ircserv = list->data; - - /* incase a protocol switch is added to the servlist gui */ ---- xchat-2.8.6/src/common/text.c 2008-03-28 13:20:04.000000000 +1100 -+++ xchat-2.8.6p1/src/common/text.c 2008-06-15 13:59:59.000000000 +1000 -@@ -216,7 +216,7 @@ - static void - scrollback_save (session *sess, char *text) - { -- char buf[1024]; -+ char buf[512 * 4]; - time_t stamp; - int len; - -@@ -266,7 +266,7 @@ - scrollback_load (session *sess) - { - int fh; -- char buf[1024]; -+ char buf[512 * 4]; - char *text; - time_t stamp; - int lines; diff --git a/xchat-2.8.4-redhat-desktop.patch b/xchat-2.8.4-redhat-desktop.patch deleted file mode 100644 index 3dc1c1d..0000000 --- a/xchat-2.8.4-redhat-desktop.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -ur xchat-2.8.4/xchat.desktop xchat-2.8.4-redhat-desktop/xchat.desktop ---- xchat-2.8.4/xchat.desktop 2007-06-23 17:50:27.000000000 +0200 -+++ xchat-2.8.4-redhat-desktop/xchat.desktop 2007-07-04 12:00:46.000000000 +0200 -@@ -16,8 +16,8 @@ - Comment[zh_TW]=X-Chat 聊天程式 - Comment=Chat with other people using Internet Relay Chat - Exec=xchat --Icon=xchat.png -+Icon=xchat - Terminal=false - Type=Application --Categories=Application;Network; -+Categories=Network; - StartupNotify=true diff --git a/xchat-2.8.4-shm-pixmaps.patch b/xchat-2.8.4-shm-pixmaps.patch deleted file mode 100644 index 21602ca..0000000 --- a/xchat-2.8.4-shm-pixmaps.patch +++ /dev/null @@ -1,106 +0,0 @@ -diff -ur xchat-2.8.4/src/fe-gtk/xtext.c xchat-2.8.4-shm-pixmaps/src/fe-gtk/xtext.c ---- xchat-2.8.4/src/fe-gtk/xtext.c 2007-06-08 11:57:07.000000000 +0200 -+++ xchat-2.8.4-shm-pixmaps/src/fe-gtk/xtext.c 2008-05-23 00:56:52.000000000 +0200 -@@ -1347,6 +1347,22 @@ - } - } - -+#ifdef USE_SHM -+static int -+have_shm_pixmaps(Display *dpy) -+{ -+ static int checked = 0, major, minor; -+ static Bool have = FALSE; -+ -+ if (!checked) { -+ XShmQueryVersion(dpy, &major, &minor, &have); -+ checked = 1; -+ } -+ -+ return have; -+} -+#endif -+ - static void - gtk_xtext_paint (GtkWidget *widget, GdkRectangle *area) - { -@@ -1363,8 +1379,12 @@ - { - xtext->last_win_x = x; - xtext->last_win_y = y; --#if !defined(USE_SHM) && !defined(WIN32) -+#ifndef WIN32 -+#ifdef USE_SHM -+ if (xtext->shaded && !have_shm_pixmaps(GDK_WINDOW_XDISPLAY (xtext->draw_buf))) -+#else - if (xtext->shaded) -+#endif - { - xtext->recycle = TRUE; - gtk_xtext_load_trans (xtext); -@@ -3549,6 +3569,11 @@ - GC tgc; - Display *xdisplay = GDK_WINDOW_XDISPLAY (xtext->draw_buf); - -+#ifdef USE_SHM -+ int shm_pixmaps; -+ shm_pixmaps = have_shm_pixmaps(xdisplay); -+#endif -+ - XGetGeometry (xdisplay, p, &root, &dummy, &dummy, &width, &height, - &dummy, &depth); - -@@ -3566,18 +3591,20 @@ - XFreeGC (xdisplay, tgc); - - #ifdef USE_SHM -- ximg = get_image (xtext, xdisplay, &xtext->shminfo, 0, 0, w, h, depth, tmp); --#else -- ximg = XGetImage (xdisplay, tmp, 0, 0, w, h, -1, ZPixmap); -+ if (shm_pixmaps) -+ ximg = get_image (xtext, xdisplay, &xtext->shminfo, 0, 0, w, h, depth, tmp); -+ else - #endif -+ ximg = XGetImage (xdisplay, tmp, 0, 0, w, h, -1, ZPixmap); - XFreePixmap (xdisplay, tmp); - } else - { - #ifdef USE_SHM -- ximg = get_image (xtext, xdisplay, &xtext->shminfo, x, y, w, h, depth, p); --#else -- ximg = XGetImage (xdisplay, p, x, y, w, h, -1, ZPixmap); -+ if (shm_pixmaps) -+ ximg = get_image (xtext, xdisplay, &xtext->shminfo, x, y, w, h, depth, p); -+ else - #endif -+ ximg = XGetImage (xdisplay, p, x, y, w, h, -1, ZPixmap); - } - - if (!ximg) -@@ -3602,7 +3629,7 @@ - else - { - #ifdef USE_SHM -- if (xtext->shm) -+ if (xtext->shm && shm_pixmaps) - { - #if (GTK_MAJOR_VERSION == 2) && (GTK_MINOR_VERSION == 0) - shaded_pix = gdk_pixmap_foreign_new ( -@@ -3620,7 +3647,7 @@ - } - - #ifdef USE_SHM -- if (!xtext->shm) -+ if (!xtext->shm || !shm_pixmaps) - #endif - XPutImage (xdisplay, GDK_WINDOW_XWINDOW (shaded_pix), - GDK_GC_XGC (xtext->fgc), ximg, 0, 0, 0, 0, w, h); -@@ -3640,7 +3667,7 @@ - if (xtext->pixmap) - { - #ifdef USE_SHM -- if (xtext->shm) -+ if (xtext->shm && have_shm_pixmaps(GDK_WINDOW_XDISPLAY (xtext->draw_buf))) - { - XFreePixmap (GDK_WINDOW_XDISPLAY (xtext->pixmap), - GDK_WINDOW_XWINDOW (xtext->pixmap)); diff --git a/xchat-2.8.6-connect-mnemonic.patch b/xchat-2.8.6-connect-mnemonic.patch deleted file mode 100644 index e49ea01..0000000 --- a/xchat-2.8.6-connect-mnemonic.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff -urp xchat-2.8.6.orig/src/fe-gtk/gtkutil.c xchat-2.8.6/src/fe-gtk/gtkutil.c ---- xchat-2.8.6.orig/src/fe-gtk/gtkutil.c 2009-07-18 11:25:02.000000000 +0100 -+++ xchat-2.8.6/src/fe-gtk/gtkutil.c 2009-07-18 11:27:01.000000000 +0100 -@@ -376,6 +376,7 @@ gtkutil_button (GtkWidget *box, char *st - { - gtk_button_set_label (GTK_BUTTON (wid), labeltext); - gtk_button_set_image (GTK_BUTTON (wid), gtk_image_new_from_stock (stock, GTK_ICON_SIZE_MENU)); -+ gtk_button_set_use_underline (GTK_BUTTON (wid), TRUE); - if (box) - gtk_container_add (GTK_CONTAINER (box), wid); - } diff --git a/xchat.spec b/xchat.spec index 81c0da6..1a28f98 100644 --- a/xchat.spec +++ b/xchat.spec @@ -3,31 +3,26 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat -Version: 2.8.6 -Release: 18%{?dist} +Version: 2.8.8 +Release: 1%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ URL: http://www.xchat.org -Source: http://www.xchat.org/files/source/2.8/xchat-%{version}.tar.bz2 +Source: http://www.xchat.org/files/source/2.8/xchat-%{version}.tar.xz BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) # Patches 0-9 reserved for official xchat.org patches -Patch0: xc286-smallfixes.diff -Patch10: xchat-2.8.4-redhat-desktop.patch Patch12: xchat-1.8.7-use-sysconf-to-detect-cpus.patch # see #241923 Patch35: xchat-2.8.4-disable-tray-icon-by-default.patch -Patch40: xchat-2.8.4-shm-pixmaps.patch # Upstream XChat 2.8.6 defaults to Latin1 (what upstream calls the "IRC" # encoding). Default to UTF-8 instead (as previous versions did, at least when # running under a UTF-8 locale). # Both the "IRC" and "UTF-8" settings will try to accept both Latin1 and UTF-8 # when it comes in, however "IRC" sends Latin1, "UTF-8" sends UTF-8. Patch41: xchat-2.8.6-default-utf8.patch -# fix literal underscore in "C_onnect" button (#512034, Edward Sheldrake) -Patch42: xchat-2.8.6-connect-mnemonic.patch # patch to add ability to change to tab with most recent activity # See http://sourceforge.net/tracker/?func=detail&aid=2022871&group_id=239&atid=350239 Patch50: xchat-2.8.6-change-page-activity.patch @@ -73,14 +68,11 @@ This package contains the X-Chat plugin providing the Tcl scripting interface. %prep %setup -q # Various small fixes from CVS that are considered safe to apply to 2.8.6. -%patch0 -p1 +# (currently none) -%patch10 -p1 -b .desktop-file %patch12 -p0 -b .use-sysconf-to-detect-cpus %patch35 -p1 -b .tray-icon -%patch40 -p1 -b .shm-pixmaps %patch41 -p1 -b .default-utf8 -%patch42 -p1 -b .connect-mnemonic %patch50 -p1 -b .active-channel-switch %patch51 -p1 -b .freenode-ports @@ -174,6 +166,12 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Thu Jun 03 2010 Kevin Kofler - 1:2.8.8-1 +- Update to 2.8.8 (#597735) +- Use xz tarball (new in 2.8.8) +- Drop smallfixes, redhat-desktop (remaining part), shm-pixmaps and + connect-mnemonic patches (all fixed upstream) + * Wed Jun 02 2010 Marcela Maslanova - 1:2.8.6-18 - Mass rebuild with perl-5.12.0 From e4b471135d2a35f735b2051da6aad65fed10bad1 Mon Sep 17 00:00:00 2001 From: Kevin Kofler Date: Thu, 3 Jun 2010 23:08:26 +0000 Subject: [PATCH 10/55] Sync from devel: 2.8.8-1 - Update to 2.8.8 (#597735) - Use xz tarball (new in 2.8.8) - Drop smallfixes, redhat-desktop (remaining part), shm-pixmaps and connect-mnemonic patches (all fixed upstream) 2.8.6-18 - Mass rebuild with perl-5.12.0 --- .cvsignore | 2 +- sources | 2 +- xc286-smallfixes.diff | 68 ------------------ xchat-2.8.4-redhat-desktop.patch | 14 ---- xchat-2.8.4-shm-pixmaps.patch | 106 ----------------------------- xchat-2.8.6-connect-mnemonic.patch | 11 --- xchat.spec | 25 +++---- 7 files changed, 15 insertions(+), 213 deletions(-) delete mode 100644 xc286-smallfixes.diff delete mode 100644 xchat-2.8.4-redhat-desktop.patch delete mode 100644 xchat-2.8.4-shm-pixmaps.patch delete mode 100644 xchat-2.8.6-connect-mnemonic.patch diff --git a/.cvsignore b/.cvsignore index b916783..1f5f78f 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -xchat-2.8.6.tar.bz2 +xchat-2.8.8.tar.xz diff --git a/sources b/sources index 1bcf67b..6ce9832 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -1f2670865d43a23a9abc596dde999aca xchat-2.8.6.tar.bz2 +9a11f13121ff0af787bba3b014378e58 xchat-2.8.8.tar.xz diff --git a/xc286-smallfixes.diff b/xc286-smallfixes.diff deleted file mode 100644 index da90015..0000000 --- a/xc286-smallfixes.diff +++ /dev/null @@ -1,68 +0,0 @@ -# -# Various small fixes from CVS that are considered safe to apply to 2.8.6. -# ---- xchat-2.8.6/src/common/cfgfiles.c 2008-02-05 21:02:47.000000000 +1100 -+++ xchat-2.8.6p1/src/common/cfgfiles.c 2008-06-15 13:45:43.000000000 +1000 -@@ -886,7 +886,6 @@ - set_showval (session *sess, const struct prefs *var, char *tbuf) - { - int len, dots, j; -- static const char *offon[] = { "OFF", "ON" }; - - len = strlen (var->name); - memcpy (tbuf, var->name, len); -@@ -909,8 +908,10 @@ - *((int *) &prefs + var->offset)); - break; - case TYPE_BOOL: -- sprintf (tbuf + len, "\0033:\017 %s\n", offon[ -- *((int *) &prefs + var->offset)]); -+ if (*((int *) &prefs + var->offset)) -+ sprintf (tbuf + len, "\0033:\017 %s\n", "ON"); -+ else -+ sprintf (tbuf + len, "\0033:\017 %s\n", "OFF"); - break; - } - PrintText (sess, tbuf); ---- xchat-2.8.6/src/common/chanopt.c 2008-06-10 22:00:55.000000000 +1000 -+++ xchat-2.8.6p1/src/common/chanopt.c 2008-06-15 13:48:04.000000000 +1000 -@@ -32,7 +32,7 @@ - - #define S_F(xx) STRUCT_OFFSET_STR(struct session,xx) - --channel_options chanopt[] = -+static const channel_options chanopt[] = - { - {"alert_beep", "BEEP", S_F(alert_beep)}, - {"alert_taskbar", NULL, S_F(alert_taskbar)}, ---- xchat-2.8.6/src/common/servlist.c 2008-04-01 19:22:34.000000000 +1100 -+++ xchat-2.8.6p1/src/common/servlist.c 2008-06-15 13:57:41.000000000 +1000 -@@ -509,6 +509,8 @@ - list = g_slist_nth (net->servlist, net->selected); - if (!list) - list = net->servlist; -+ if (!list) -+ return; - ircserv = list->data; - - /* incase a protocol switch is added to the servlist gui */ ---- xchat-2.8.6/src/common/text.c 2008-03-28 13:20:04.000000000 +1100 -+++ xchat-2.8.6p1/src/common/text.c 2008-06-15 13:59:59.000000000 +1000 -@@ -216,7 +216,7 @@ - static void - scrollback_save (session *sess, char *text) - { -- char buf[1024]; -+ char buf[512 * 4]; - time_t stamp; - int len; - -@@ -266,7 +266,7 @@ - scrollback_load (session *sess) - { - int fh; -- char buf[1024]; -+ char buf[512 * 4]; - char *text; - time_t stamp; - int lines; diff --git a/xchat-2.8.4-redhat-desktop.patch b/xchat-2.8.4-redhat-desktop.patch deleted file mode 100644 index 3dc1c1d..0000000 --- a/xchat-2.8.4-redhat-desktop.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -ur xchat-2.8.4/xchat.desktop xchat-2.8.4-redhat-desktop/xchat.desktop ---- xchat-2.8.4/xchat.desktop 2007-06-23 17:50:27.000000000 +0200 -+++ xchat-2.8.4-redhat-desktop/xchat.desktop 2007-07-04 12:00:46.000000000 +0200 -@@ -16,8 +16,8 @@ - Comment[zh_TW]=X-Chat 聊天程式 - Comment=Chat with other people using Internet Relay Chat - Exec=xchat --Icon=xchat.png -+Icon=xchat - Terminal=false - Type=Application --Categories=Application;Network; -+Categories=Network; - StartupNotify=true diff --git a/xchat-2.8.4-shm-pixmaps.patch b/xchat-2.8.4-shm-pixmaps.patch deleted file mode 100644 index 21602ca..0000000 --- a/xchat-2.8.4-shm-pixmaps.patch +++ /dev/null @@ -1,106 +0,0 @@ -diff -ur xchat-2.8.4/src/fe-gtk/xtext.c xchat-2.8.4-shm-pixmaps/src/fe-gtk/xtext.c ---- xchat-2.8.4/src/fe-gtk/xtext.c 2007-06-08 11:57:07.000000000 +0200 -+++ xchat-2.8.4-shm-pixmaps/src/fe-gtk/xtext.c 2008-05-23 00:56:52.000000000 +0200 -@@ -1347,6 +1347,22 @@ - } - } - -+#ifdef USE_SHM -+static int -+have_shm_pixmaps(Display *dpy) -+{ -+ static int checked = 0, major, minor; -+ static Bool have = FALSE; -+ -+ if (!checked) { -+ XShmQueryVersion(dpy, &major, &minor, &have); -+ checked = 1; -+ } -+ -+ return have; -+} -+#endif -+ - static void - gtk_xtext_paint (GtkWidget *widget, GdkRectangle *area) - { -@@ -1363,8 +1379,12 @@ - { - xtext->last_win_x = x; - xtext->last_win_y = y; --#if !defined(USE_SHM) && !defined(WIN32) -+#ifndef WIN32 -+#ifdef USE_SHM -+ if (xtext->shaded && !have_shm_pixmaps(GDK_WINDOW_XDISPLAY (xtext->draw_buf))) -+#else - if (xtext->shaded) -+#endif - { - xtext->recycle = TRUE; - gtk_xtext_load_trans (xtext); -@@ -3549,6 +3569,11 @@ - GC tgc; - Display *xdisplay = GDK_WINDOW_XDISPLAY (xtext->draw_buf); - -+#ifdef USE_SHM -+ int shm_pixmaps; -+ shm_pixmaps = have_shm_pixmaps(xdisplay); -+#endif -+ - XGetGeometry (xdisplay, p, &root, &dummy, &dummy, &width, &height, - &dummy, &depth); - -@@ -3566,18 +3591,20 @@ - XFreeGC (xdisplay, tgc); - - #ifdef USE_SHM -- ximg = get_image (xtext, xdisplay, &xtext->shminfo, 0, 0, w, h, depth, tmp); --#else -- ximg = XGetImage (xdisplay, tmp, 0, 0, w, h, -1, ZPixmap); -+ if (shm_pixmaps) -+ ximg = get_image (xtext, xdisplay, &xtext->shminfo, 0, 0, w, h, depth, tmp); -+ else - #endif -+ ximg = XGetImage (xdisplay, tmp, 0, 0, w, h, -1, ZPixmap); - XFreePixmap (xdisplay, tmp); - } else - { - #ifdef USE_SHM -- ximg = get_image (xtext, xdisplay, &xtext->shminfo, x, y, w, h, depth, p); --#else -- ximg = XGetImage (xdisplay, p, x, y, w, h, -1, ZPixmap); -+ if (shm_pixmaps) -+ ximg = get_image (xtext, xdisplay, &xtext->shminfo, x, y, w, h, depth, p); -+ else - #endif -+ ximg = XGetImage (xdisplay, p, x, y, w, h, -1, ZPixmap); - } - - if (!ximg) -@@ -3602,7 +3629,7 @@ - else - { - #ifdef USE_SHM -- if (xtext->shm) -+ if (xtext->shm && shm_pixmaps) - { - #if (GTK_MAJOR_VERSION == 2) && (GTK_MINOR_VERSION == 0) - shaded_pix = gdk_pixmap_foreign_new ( -@@ -3620,7 +3647,7 @@ - } - - #ifdef USE_SHM -- if (!xtext->shm) -+ if (!xtext->shm || !shm_pixmaps) - #endif - XPutImage (xdisplay, GDK_WINDOW_XWINDOW (shaded_pix), - GDK_GC_XGC (xtext->fgc), ximg, 0, 0, 0, 0, w, h); -@@ -3640,7 +3667,7 @@ - if (xtext->pixmap) - { - #ifdef USE_SHM -- if (xtext->shm) -+ if (xtext->shm && have_shm_pixmaps(GDK_WINDOW_XDISPLAY (xtext->draw_buf))) - { - XFreePixmap (GDK_WINDOW_XDISPLAY (xtext->pixmap), - GDK_WINDOW_XWINDOW (xtext->pixmap)); diff --git a/xchat-2.8.6-connect-mnemonic.patch b/xchat-2.8.6-connect-mnemonic.patch deleted file mode 100644 index e49ea01..0000000 --- a/xchat-2.8.6-connect-mnemonic.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff -urp xchat-2.8.6.orig/src/fe-gtk/gtkutil.c xchat-2.8.6/src/fe-gtk/gtkutil.c ---- xchat-2.8.6.orig/src/fe-gtk/gtkutil.c 2009-07-18 11:25:02.000000000 +0100 -+++ xchat-2.8.6/src/fe-gtk/gtkutil.c 2009-07-18 11:27:01.000000000 +0100 -@@ -376,6 +376,7 @@ gtkutil_button (GtkWidget *box, char *st - { - gtk_button_set_label (GTK_BUTTON (wid), labeltext); - gtk_button_set_image (GTK_BUTTON (wid), gtk_image_new_from_stock (stock, GTK_ICON_SIZE_MENU)); -+ gtk_button_set_use_underline (GTK_BUTTON (wid), TRUE); - if (box) - gtk_container_add (GTK_CONTAINER (box), wid); - } diff --git a/xchat.spec b/xchat.spec index d546eac..1a28f98 100644 --- a/xchat.spec +++ b/xchat.spec @@ -3,31 +3,26 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat -Version: 2.8.6 -Release: 17%{?dist} +Version: 2.8.8 +Release: 1%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ URL: http://www.xchat.org -Source: http://www.xchat.org/files/source/2.8/xchat-%{version}.tar.bz2 +Source: http://www.xchat.org/files/source/2.8/xchat-%{version}.tar.xz BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) # Patches 0-9 reserved for official xchat.org patches -Patch0: xc286-smallfixes.diff -Patch10: xchat-2.8.4-redhat-desktop.patch Patch12: xchat-1.8.7-use-sysconf-to-detect-cpus.patch # see #241923 Patch35: xchat-2.8.4-disable-tray-icon-by-default.patch -Patch40: xchat-2.8.4-shm-pixmaps.patch # Upstream XChat 2.8.6 defaults to Latin1 (what upstream calls the "IRC" # encoding). Default to UTF-8 instead (as previous versions did, at least when # running under a UTF-8 locale). # Both the "IRC" and "UTF-8" settings will try to accept both Latin1 and UTF-8 # when it comes in, however "IRC" sends Latin1, "UTF-8" sends UTF-8. Patch41: xchat-2.8.6-default-utf8.patch -# fix literal underscore in "C_onnect" button (#512034, Edward Sheldrake) -Patch42: xchat-2.8.6-connect-mnemonic.patch # patch to add ability to change to tab with most recent activity # See http://sourceforge.net/tracker/?func=detail&aid=2022871&group_id=239&atid=350239 Patch50: xchat-2.8.6-change-page-activity.patch @@ -73,14 +68,11 @@ This package contains the X-Chat plugin providing the Tcl scripting interface. %prep %setup -q # Various small fixes from CVS that are considered safe to apply to 2.8.6. -%patch0 -p1 +# (currently none) -%patch10 -p1 -b .desktop-file %patch12 -p0 -b .use-sysconf-to-detect-cpus %patch35 -p1 -b .tray-icon -%patch40 -p1 -b .shm-pixmaps %patch41 -p1 -b .default-utf8 -%patch42 -p1 -b .connect-mnemonic %patch50 -p1 -b .active-channel-switch %patch51 -p1 -b .freenode-ports @@ -174,6 +166,15 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Thu Jun 03 2010 Kevin Kofler - 1:2.8.8-1 +- Update to 2.8.8 (#597735) +- Use xz tarball (new in 2.8.8) +- Drop smallfixes, redhat-desktop (remaining part), shm-pixmaps and + connect-mnemonic patches (all fixed upstream) + +* Wed Jun 02 2010 Marcela Maslanova - 1:2.8.6-18 +- Mass rebuild with perl-5.12.0 + * Wed Apr 21 2010 Kevin Kofler - 1:2.8.6-17 - Add port numbers for Freenode (Debarshi Ray) From 77b88b18ed93d21b0497a15c4f8a0f42572a54b0 Mon Sep 17 00:00:00 2001 From: Kevin Kofler Date: Thu, 3 Jun 2010 23:13:29 +0000 Subject: [PATCH 11/55] - --enable-ntlm (no longer enabled by default) --- xchat.spec | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/xchat.spec b/xchat.spec index 1a28f98..d0393fa 100644 --- a/xchat.spec +++ b/xchat.spec @@ -4,7 +4,7 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat Version: 2.8.8 -Release: 1%{?dist} +Release: 2%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ @@ -92,7 +92,8 @@ export LDFLAGS=$(perl -MExtUtils::Embed -e ldopts) --enable-tcl=%{_libdir} \ --enable-ipv6 \ --enable-spell=libsexy \ - --enable-shm + --enable-shm \ + --enable-ntlm # gtkspell breaks Input Method commit with ENTER @@ -166,6 +167,9 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Thu Jun 03 2010 Kevin Kofler - 1:2.8.8-2 +- --enable-ntlm (no longer enabled by default) + * Thu Jun 03 2010 Kevin Kofler - 1:2.8.8-1 - Update to 2.8.8 (#597735) - Use xz tarball (new in 2.8.8) From 31a183b7df31d6614b72285db89c23d59d05a7d5 Mon Sep 17 00:00:00 2001 From: Kevin Kofler Date: Thu, 3 Jun 2010 23:13:29 +0000 Subject: [PATCH 12/55] - --enable-ntlm (no longer enabled by default) --- xchat.spec | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/xchat.spec b/xchat.spec index 1a28f98..d0393fa 100644 --- a/xchat.spec +++ b/xchat.spec @@ -4,7 +4,7 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat Version: 2.8.8 -Release: 1%{?dist} +Release: 2%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ @@ -92,7 +92,8 @@ export LDFLAGS=$(perl -MExtUtils::Embed -e ldopts) --enable-tcl=%{_libdir} \ --enable-ipv6 \ --enable-spell=libsexy \ - --enable-shm + --enable-shm \ + --enable-ntlm # gtkspell breaks Input Method commit with ENTER @@ -166,6 +167,9 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Thu Jun 03 2010 Kevin Kofler - 1:2.8.8-2 +- --enable-ntlm (no longer enabled by default) + * Thu Jun 03 2010 Kevin Kofler - 1:2.8.8-1 - Update to 2.8.8 (#597735) - Use xz tarball (new in 2.8.8) From 0c5724ca0906c9afe34213e902cffe9c32ac73a1 Mon Sep 17 00:00:00 2001 From: Kevin Kofler Date: Thu, 3 Jun 2010 23:37:36 +0000 Subject: [PATCH 13/55] - Rebuild again for perl-5.12.0 --- xchat.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xchat.spec b/xchat.spec index d0393fa..854c6f7 100644 --- a/xchat.spec +++ b/xchat.spec @@ -4,7 +4,7 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat Version: 2.8.8 -Release: 2%{?dist} +Release: 3%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ @@ -167,6 +167,9 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Thu Jun 03 2010 Kevin Kofler - 1:2.8.8-3 +- Rebuild again for perl-5.12.0 + * Thu Jun 03 2010 Kevin Kofler - 1:2.8.8-2 - --enable-ntlm (no longer enabled by default) From 4dc2ccedc92ac98b9a44786c13dcdd7bfc22590b Mon Sep 17 00:00:00 2001 From: Mamoru Tasaka Date: Tue, 27 Jul 2010 14:57:13 +0000 Subject: [PATCH 14/55] - Rebuild against python 2.7 --- xchat.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xchat.spec b/xchat.spec index 854c6f7..3cf460b 100644 --- a/xchat.spec +++ b/xchat.spec @@ -4,7 +4,7 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat Version: 2.8.8 -Release: 3%{?dist} +Release: 4%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ @@ -167,6 +167,9 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Tue Jul 27 2010 Mamoru Tasaka - 1:2.8.8-4 +- Rebuild against python 2.7 + * Thu Jun 03 2010 Kevin Kofler - 1:2.8.8-3 - Rebuild again for perl-5.12.0 From 5d577d48a6a641c240c6c7a16830f91bd9629401 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 29 Jul 2010 15:35:03 +0000 Subject: [PATCH 15/55] dist-git conversion --- .cvsignore => .gitignore | 0 Makefile | 21 --------------------- branch | 1 - 3 files changed, 22 deletions(-) rename .cvsignore => .gitignore (100%) delete mode 100644 Makefile delete mode 100644 branch diff --git a/.cvsignore b/.gitignore similarity index 100% rename from .cvsignore rename to .gitignore diff --git a/Makefile b/Makefile deleted file mode 100644 index 7c2ed50..0000000 --- a/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -# Makefile for source rpm: xchat -# $Id: Makefile,v 1.2 2007/10/15 19:31:32 notting Exp $ -NAME := xchat -SPECFILE = $(firstword $(wildcard *.spec)) - -define find-makefile-common -for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$d/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done -endef - -MAKEFILE_COMMON := $(shell $(find-makefile-common)) - -ifeq ($(MAKEFILE_COMMON),) -# attempt a checkout -define checkout-makefile-common -test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2 -endef - -MAKEFILE_COMMON := $(shell $(checkout-makefile-common)) -endif - -include $(MAKEFILE_COMMON) diff --git a/branch b/branch deleted file mode 100644 index 06de2d2..0000000 --- a/branch +++ /dev/null @@ -1 +0,0 @@ -F-12 From b75d014fe727fc2096a327aec0febbb8a5c3701d Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 29 Jul 2010 15:35:12 +0000 Subject: [PATCH 16/55] dist-git conversion --- .cvsignore => .gitignore | 0 Makefile | 21 --------------------- 2 files changed, 21 deletions(-) rename .cvsignore => .gitignore (100%) delete mode 100644 Makefile diff --git a/.cvsignore b/.gitignore similarity index 100% rename from .cvsignore rename to .gitignore diff --git a/Makefile b/Makefile deleted file mode 100644 index 7c2ed50..0000000 --- a/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -# Makefile for source rpm: xchat -# $Id: Makefile,v 1.2 2007/10/15 19:31:32 notting Exp $ -NAME := xchat -SPECFILE = $(firstword $(wildcard *.spec)) - -define find-makefile-common -for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$d/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done -endef - -MAKEFILE_COMMON := $(shell $(find-makefile-common)) - -ifeq ($(MAKEFILE_COMMON),) -# attempt a checkout -define checkout-makefile-common -test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2 -endef - -MAKEFILE_COMMON := $(shell $(checkout-makefile-common)) -endif - -include $(MAKEFILE_COMMON) From 08a899eb7a51d39915473e75da9655f08d768e9c Mon Sep 17 00:00:00 2001 From: "Owen W. Taylor" Date: Mon, 15 Nov 2010 18:31:05 -0500 Subject: [PATCH 17/55] Add patch to work with libnotify-0.7 --- xchat-2.8.8-libnotify07.patch | 24 ++++++++++++++++++++++++ xchat.spec | 9 ++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 xchat-2.8.8-libnotify07.patch diff --git a/xchat-2.8.8-libnotify07.patch b/xchat-2.8.8-libnotify07.patch new file mode 100644 index 0000000..2a6dce9 --- /dev/null +++ b/xchat-2.8.8-libnotify07.patch @@ -0,0 +1,24 @@ +diff -up xchat-2.8.8/src/fe-gtk/plugin-tray.c.libnotify07 xchat-2.8.8/src/fe-gtk/plugin-tray.c +--- xchat-2.8.8/src/fe-gtk/plugin-tray.c.libnotify07 2010-11-15 17:32:15.708325783 -0500 ++++ xchat-2.8.8/src/fe-gtk/plugin-tray.c 2010-11-15 18:05:17.322141789 -0500 +@@ -125,8 +125,9 @@ static void *nn_mod = NULL; + /* prototypes */ + static gboolean (*nn_init) (char *); + static void (*nn_uninit) (void); +-static void *(*nn_new_with_status_icon) (const gchar *summary, const gchar *message, const gchar *icon, GtkStatusIcon *status_icon); +-static void *(*nn_new) (const gchar *summary, const gchar *message, const gchar *icon, GtkWidget *attach); ++/* recent versions of libnotify don't take the fourth GtkWidget argument, but passing an ++ * extra NULL argument will be fine */ ++static void *(*nn_new) (const gchar *summary, const gchar *message, const gchar *icon, gpointer dummy); + static gboolean (*nn_show) (void *noti, GError **error); + static void (*nn_set_timeout) (void *noti, gint timeout); + +@@ -160,8 +161,6 @@ libnotify_notify_new (const char *title, + goto bad; + if (!g_module_symbol (nn_mod, "notify_uninit", (gpointer)&nn_uninit)) + goto bad; +- if (!g_module_symbol (nn_mod, "notify_notification_new_with_status_icon", (gpointer)&nn_new_with_status_icon)) +- goto bad; + if (!g_module_symbol (nn_mod, "notify_notification_new", (gpointer)&nn_new)) + goto bad; + if (!g_module_symbol (nn_mod, "notify_notification_show", (gpointer)&nn_show)) diff --git a/xchat.spec b/xchat.spec index 3cf460b..016901b 100644 --- a/xchat.spec +++ b/xchat.spec @@ -4,7 +4,7 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat Version: 2.8.8 -Release: 4%{?dist} +Release: 5%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ @@ -28,6 +28,9 @@ Patch41: xchat-2.8.6-default-utf8.patch Patch50: xchat-2.8.6-change-page-activity.patch # add port numbers for Freenode (Debarshi Ray) Patch51: xchat-2.8.6-freenode-ports.patch +# work with libnotify 0.7 +# https://sourceforge.net/tracker/?func=detail&aid=3109838&group_id=239&atid=100239 +Patch52: xchat-2.8.8-libnotify07.patch BuildRequires: perl perl(ExtUtils::Embed) python-devel openssl-devel pkgconfig, tcl-devel BuildRequires: GConf2-devel @@ -75,6 +78,7 @@ This package contains the X-Chat plugin providing the Tcl scripting interface. %patch41 -p1 -b .default-utf8 %patch50 -p1 -b .active-channel-switch %patch51 -p1 -b .freenode-ports +%patch52 -p1 -b .libnotify07 sed -i -e 's/#define GTK_DISABLE_DEPRECATED//g' src/fe-gtk/*.c @@ -167,6 +171,9 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Mon Nov 15 2010 Owen Taylor - 1:2.8.8-5 +- Add patch to work with libnotify-0.7 + * Tue Jul 27 2010 Mamoru Tasaka - 1:2.8.8-4 - Rebuild against python 2.7 From 32adcbbd9883539dec68469bc5041c9898564274 Mon Sep 17 00:00:00 2001 From: Kevin Kofler Date: Fri, 10 Dec 2010 16:36:31 +0100 Subject: [PATCH 18/55] * Fri Dec 10 2010 Kevin Kofler - 1:2.8.8-6 - Requires: alsa-utils for aplay (#661957) --- xchat.spec | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/xchat.spec b/xchat.spec index 016901b..d24ce39 100644 --- a/xchat.spec +++ b/xchat.spec @@ -4,7 +4,7 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat Version: 2.8.8 -Release: 5%{?dist} +Release: 6%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ @@ -45,6 +45,9 @@ BuildRequires: desktop-file-utils >= 0.10 Requires(post): GConf2 >= %{gconf_version} Requires(preun): GConf2 >= %{gconf_version} +# For aplay: +Requires: alsa-utils + # Ensure that a compatible libperl is installed Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) @@ -171,6 +174,9 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Fri Dec 10 2010 Kevin Kofler - 1:2.8.8-6 +- Requires: alsa-utils for aplay (#661957) + * Mon Nov 15 2010 Owen Taylor - 1:2.8.8-5 - Add patch to work with libnotify-0.7 From 36c310cf82f802e862cf47e578c6f87291a9eef7 Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Mon, 7 Feb 2011 21:45:58 -0600 Subject: [PATCH 19/55] - Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild --- xchat.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xchat.spec b/xchat.spec index d24ce39..a94733b 100644 --- a/xchat.spec +++ b/xchat.spec @@ -4,7 +4,7 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat Version: 2.8.8 -Release: 6%{?dist} +Release: 7%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ @@ -174,6 +174,9 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Mon Feb 07 2011 Fedora Release Engineering - 1:2.8.8-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + * Fri Dec 10 2010 Kevin Kofler - 1:2.8.8-6 - Requires: alsa-utils for aplay (#661957) From 2227e38dca185a15eb63453d77163cfae8f3c258 Mon Sep 17 00:00:00 2001 From: Christopher Aillon Date: Thu, 7 Apr 2011 16:21:04 -0700 Subject: [PATCH 20/55] Update the dynamic libnotify check for the newer soname See bug https://bugzilla.redhat.com/show_bug.cgi?id=693362 The xchat code currently does: nn_mod = g_module_open ("libnotify", G_MODULE_BIND_LAZY); which looks for "libnotify" which fails, then "libnotify.so" which fails, then "libnotify.la" which fails. The above then looks for "/usr/lib64/libnotify.so". On developer systems with libnotify-devel installed, this file exists, so it happily loads libnotify support for us. However, on user systems, it does not exist which leads to that g_module_open call outright failing. This explains why it appeared to be working for me and presumably Owen too, but not for the reporter. Then, the xchat code tries to load the (wrong) versioned module. Naturally, that fails, too. At that point, it then falls back to use notify-send. I'm not sure the motivations for dynamically loading the library instead of linking directly, but I think a correct minimalistic fix is to do: - nn_mod = g_module_open ("libnotify", G_MODULE_BIND_LAZY); + nn_mod = g_module_open ("libnotify.so.4", G_MODULE_BIND_LAZY); This adds the newest versioned library at the top of the check, and still keeps the old versioned library. However, it also removes the devel only library from the list which reduces the chances that developers will be blind to this issue in the future. There's no real reason to look there anyway since users just won't have that installed. But this is all really just a hack. The proper fix should be simply to link directly against libnotify. notify-send is part of libnotify anyway so it is entirely reasonable to expect systems that have notify-send installed to also have libnotify itself installed. --- xchat-2.8.8-libnotifyso4.patch | 22 ++++++++++++++++++++++ xchat.spec | 7 ++++++- 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 xchat-2.8.8-libnotifyso4.patch diff --git a/xchat-2.8.8-libnotifyso4.patch b/xchat-2.8.8-libnotifyso4.patch new file mode 100644 index 0000000..bf3ecde --- /dev/null +++ b/xchat-2.8.8-libnotifyso4.patch @@ -0,0 +1,22 @@ +diff -p -U8 xchat-2.8.8/src/fe-gtk/plugin-tray.c.libnotifyso4 xchat-2.8.8/src/fe-gtk/plugin-tray.c +--- xchat-2.8.8/src/fe-gtk/plugin-tray.c.libnotifyso4 2011-04-07 15:08:10.620286679 -0700 ++++ xchat-2.8.8/src/fe-gtk/plugin-tray.c 2011-04-07 15:08:40.830908993 -0700 +@@ -144,17 +144,17 @@ libnotify_cleanup (void) + + static gboolean + libnotify_notify_new (const char *title, const char *text, GtkStatusIcon *icon) + { + void *noti; + + if (!nn_mod) + { +- nn_mod = g_module_open ("libnotify", G_MODULE_BIND_LAZY); ++ nn_mod = g_module_open ("libnotify.so.4", G_MODULE_BIND_LAZY); + if (!nn_mod) + { + nn_mod = g_module_open ("libnotify.so.1", G_MODULE_BIND_LAZY); + if (!nn_mod) + return FALSE; + } + + if (!g_module_symbol (nn_mod, "notify_init", (gpointer)&nn_init)) diff --git a/xchat.spec b/xchat.spec index a94733b..da55a1d 100644 --- a/xchat.spec +++ b/xchat.spec @@ -4,7 +4,7 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat Version: 2.8.8 -Release: 7%{?dist} +Release: 8%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ @@ -31,6 +31,7 @@ Patch51: xchat-2.8.6-freenode-ports.patch # work with libnotify 0.7 # https://sourceforge.net/tracker/?func=detail&aid=3109838&group_id=239&atid=100239 Patch52: xchat-2.8.8-libnotify07.patch +Patch53: xchat-2.8.8-libnotifyso4.patch BuildRequires: perl perl(ExtUtils::Embed) python-devel openssl-devel pkgconfig, tcl-devel BuildRequires: GConf2-devel @@ -82,6 +83,7 @@ This package contains the X-Chat plugin providing the Tcl scripting interface. %patch50 -p1 -b .active-channel-switch %patch51 -p1 -b .freenode-ports %patch52 -p1 -b .libnotify07 +%patch53 -p1 -b .libnotifyso4 sed -i -e 's/#define GTK_DISABLE_DEPRECATED//g' src/fe-gtk/*.c @@ -174,6 +176,9 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Tue Apr 7 2011 Christopher Aillon - 1:2.8.8-8 +- Update the dynamic libnotify check for the newer soname (#693362) + * Mon Feb 07 2011 Fedora Release Engineering - 1:2.8.8-7 - Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild From f0ad18da5d6675f010097a019a30b82cf25940cc Mon Sep 17 00:00:00 2001 From: Christopher Aillon Date: Thu, 7 Apr 2011 20:26:32 -0700 Subject: [PATCH 21/55] Link against libnotify https://sourceforge.net/tracker/?func=detail&aid=3280223&group_id=239&atid=100239 --- xchat-2.8.8-libnotifyso4.patch | 22 -- xchat-2.8.8-link-against-libnotify.patch | 343 +++++++++++++++++++++++ xchat.spec | 17 +- 3 files changed, 357 insertions(+), 25 deletions(-) delete mode 100644 xchat-2.8.8-libnotifyso4.patch create mode 100644 xchat-2.8.8-link-against-libnotify.patch diff --git a/xchat-2.8.8-libnotifyso4.patch b/xchat-2.8.8-libnotifyso4.patch deleted file mode 100644 index bf3ecde..0000000 --- a/xchat-2.8.8-libnotifyso4.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff -p -U8 xchat-2.8.8/src/fe-gtk/plugin-tray.c.libnotifyso4 xchat-2.8.8/src/fe-gtk/plugin-tray.c ---- xchat-2.8.8/src/fe-gtk/plugin-tray.c.libnotifyso4 2011-04-07 15:08:10.620286679 -0700 -+++ xchat-2.8.8/src/fe-gtk/plugin-tray.c 2011-04-07 15:08:40.830908993 -0700 -@@ -144,17 +144,17 @@ libnotify_cleanup (void) - - static gboolean - libnotify_notify_new (const char *title, const char *text, GtkStatusIcon *icon) - { - void *noti; - - if (!nn_mod) - { -- nn_mod = g_module_open ("libnotify", G_MODULE_BIND_LAZY); -+ nn_mod = g_module_open ("libnotify.so.4", G_MODULE_BIND_LAZY); - if (!nn_mod) - { - nn_mod = g_module_open ("libnotify.so.1", G_MODULE_BIND_LAZY); - if (!nn_mod) - return FALSE; - } - - if (!g_module_symbol (nn_mod, "notify_init", (gpointer)&nn_init)) diff --git a/xchat-2.8.8-link-against-libnotify.patch b/xchat-2.8.8-link-against-libnotify.patch new file mode 100644 index 0000000..31e6c08 --- /dev/null +++ b/xchat-2.8.8-link-against-libnotify.patch @@ -0,0 +1,343 @@ +From: Christopher Aillon +Date: Thu, 7 Apr 2011 19:34:14 -0700 +Subject: [PATCH] Link directly against libnotify + +Dynamically loading the library isn't ideal since the soname +can change silently on us. Additionally, notify-send is +shipped as part of libnotify, so we aren't actually bringing +in a new dependency. Since we'd need to patch the source and +rebuild for new sonames anyway, there's little benefit to +dynamically loading libnotify. + +Plus, this has the benefit of cleaning up the code, as well as +ensuring we'll catch any future soname changes sooner. + +https://bugzilla.redhat.com/show_bug.cgi?id=693362 +https://sourceforge.net/tracker/?func=detail&aid=3280223&group_id=239&atid=100239 +--- + configure.in | 23 +++++++ + src/fe-gtk/plugin-tray.c | 144 ++++++++++------------------------------------- + 2 files changed, 55 insertions(+), 112 deletions(-) + +diff -p -U8 xchat-2.8.8/configure.in.libnotifyso4 xchat-2.8.8/configure.in +--- xchat-2.8.8/configure.in.libnotifyso4 2010-05-29 23:01:16.000000000 -0700 ++++ xchat-2.8.8/configure.in 2011-04-07 19:27:00.448137113 -0700 +@@ -34,16 +34,17 @@ AH_VERBATIM([PREFIX],[#undef PREFIX]) + AH_VERBATIM([XCHATLIBDIR],[#undef XCHATLIBDIR]) + AH_VERBATIM([XCHATSHAREDIR],[#undef XCHATSHAREDIR]) + AH_VERBATIM([SOCKS],[#undef SOCKS]) + AH_VERBATIM([USE_MSPROXY],[#undef USE_MSPROXY]) + dnl AH_VERBATIM([USE_GNOME],[#undef USE_GNOME]) + AH_VERBATIM([USE_SHM],[#undef USE_SHM]) + AH_VERBATIM([USE_GTKSPELL],[#undef USE_GTKSPELL]) + AH_VERBATIM([USE_LIBSEXY],[#undef USE_LIBSEXY]) ++AH_VERBATIM([USE_LIBNOTIFY],[#undef USE_LIBNOTIFY]) + AH_VERBATIM([USE_IPV6],[#undef USE_IPV6]) + AH_VERBATIM([USE_MMX],[#undef USE_MMX]) + AH_VERBATIM([USE_OPENSSL],[#undef USE_OPENSSL]) + AH_VERBATIM([USE_PLUGIN],[#undef USE_PLUGIN]) + AH_VERBATIM([USE_XFT],[#undef USE_XFT]) + AH_VERBATIM([USE_XLIB],[#undef USE_XLIB]) + AH_VERBATIM([USE_SIGACTION],[#undef USE_SIGACTION]) + AH_VERBATIM([USING_FREEBSD],[#undef USING_FREEBSD]) +@@ -126,16 +127,20 @@ AC_ARG_ENABLE(tcl, + AC_ARG_ENABLE(plugin, + [ --disable-plugin disable plugin support], + plugin=$enableval, plugin=yes) + + AC_ARG_ENABLE(dbus, + [ --disable-dbus disable DBUS support], + dbus=$enableval, dbus=yes) + ++AC_ARG_ENABLE(libnotify, ++[ --disable-libnotify disable libnotify support], ++ libnotify=$enableval, libnotify=yes) ++ + AC_ARG_ENABLE(mmx, + [ --disable-mmx disable MMX assembly routines], + mmx=$enableval, mmx=yes) + + AC_ARG_ENABLE(shm, + [ --enable-shm enable use of XShm for fast tinting (default: no)], + shm=$enableval, shm=no) + +@@ -482,16 +487,32 @@ if test "x$dbus" = "xyes" ; then + + DBUS_SERVICES_DIR="$DATADIR/dbus-1/services" + AC_SUBST(DBUS_SERVICES_DIR) + AC_DEFINE_UNQUOTED(DBUS_SERVICES_DIR, "$DBUS_SERVICES_DIR", [Where services dir for DBUS is]) + fi + fi + + dnl ********************************************************************* ++dnl ** LIBNOTIFY ******************************************************** ++dnl ********************************************************************* ++ ++if test "x$libnotify" = "xyes" ; then ++ PKG_CHECK_MODULES(LIBNOTIFY, libnotify >= 0.4, [], [ ++ AC_MSG_RESULT(no) ++ libnotify=no ++ ]) ++ if test "$libnotify" != "no" ; then ++ GUI_LIBS="$GUI_LIBS $LIBNOTIFY_LIBS" ++ GUI_CFLAGS="$GUI_CFLAGS $LIBNOTIFY_CFLAGS" ++ AC_DEFINE(USE_LIBNOTIFY) ++ fi ++fi ++ ++dnl ********************************************************************* + dnl ** SPELL ************************************************************ + dnl ********************************************************************* + + if test "$spell" = "gtkspell" ; then + PKG_CHECK_MODULES(GTKSPELL, gtkspell-2.0 >= 2.0.2, [], [ + AC_MSG_RESULT(no) + spell=no + ]) +@@ -519,16 +540,17 @@ if test "$spell" = "static" ; then + fi + + dnl ********************************************************************* + dnl ** CONDITIONALS ***************************************************** + dnl ********************************************************************* + + AM_CONDITIONAL(USE_OPENSSL, test "x$openssl" = "xyes") + AM_CONDITIONAL(USE_LIBSEXY, test "x$spell" = "xstatic") ++AM_CONDITIONAL(USE_LIBNOTIFY, test "x$libnotify" = "xyes") + AM_CONDITIONAL(DO_TEXT, test "x$textfe" = "xyes") + AM_CONDITIONAL(DO_GTK, test "x$gtkfe" = "xyes") + AM_CONDITIONAL(DO_PERL, test "x$perl" = "xyes") + AM_CONDITIONAL(DO_PYTHON, test "x$python" = "xyes") + AM_CONDITIONAL(DO_TCL, test "x$tcl" = "xyes") + AM_CONDITIONAL(DO_PLUGIN, test "x$plugin" = "xyes") + AM_CONDITIONAL(USE_DBUS, test "x$dbus" = "xyes") + AM_CONDITIONAL(DO_GCONF, test "x$GCONFTOOL" != "xno") +@@ -807,16 +829,17 @@ echo mmx tinting ......... : $mmx\ spell + echo XShm tinting ........ : $shm\ plugin interface ...... : $plugin + if test "$xft" = no; then + echo text backend ........ : pango\ nls/gettext ........... : $USE_NLS + else + echo text backend ........ : xft\ nls/gettext ........... : $USE_NLS + fi + echo openssl support ..... : $openssl\ ipv6 support .......... : $ipv6 + echo dbus support ........ : $dbus\ msproxy ntlm \(ISA\) .... : $have_ntlm ++echo libnotify support ... : $libnotify + echo + echo The binary will be installed in $prefix/bin + echo + + if test "$gtkfe" = no; then + echo Warning: The GTK \(GUI\) frontend will not be built. + echo + fi +diff -p -U8 xchat-2.8.8/src/fe-gtk/plugin-tray.c.libnotifyso4 xchat-2.8.8/src/fe-gtk/plugin-tray.c +--- xchat-2.8.8/src/fe-gtk/plugin-tray.c.libnotifyso4 2011-04-07 17:57:27.524307905 -0700 ++++ xchat-2.8.8/src/fe-gtk/plugin-tray.c 2011-04-07 19:18:33.429475719 -0700 +@@ -10,17 +10,27 @@ + #include "../common/fe.h" + #include "../common/util.h" + #include "fe-gtk.h" + #include "pixmaps.h" + #include "maingui.h" + #include "menu.h" + #include + +-#define LIBNOTIFY ++#ifdef USE_LIBNOTIFY ++#include ++#ifndef NOTIFY_CHECK_VERSION ++#define NOTIFY_CHECK_VERSION(x,y,z) 0 ++#endif ++#if NOTIFY_CHECK_VERSION(0,7,0) ++#define XC_NOTIFY_NEW(a,b,c,d) notify_notification_new(a,b,c) ++#else ++#define XC_NOTIFY_NEW(a,b,c,d) notify_notification_new(a,b,c,d) ++#endif ++#endif + + typedef enum /* current icon status */ + { + TS_NONE, + TS_MESSAGE, + TS_HIGHLIGHT, + TS_FILEOFFER, + TS_CUSTOM /* plugin */ +@@ -112,90 +122,16 @@ tray_count_networks (void) + + void + fe_tray_set_tooltip (const char *text) + { + if (sticon) + gtk_status_icon_set_tooltip (sticon, text); + } + +-#ifdef LIBNOTIFY +- +-/* dynamic access to libnotify.so */ +- +-static void *nn_mod = NULL; +-/* prototypes */ +-static gboolean (*nn_init) (char *); +-static void (*nn_uninit) (void); +-/* recent versions of libnotify don't take the fourth GtkWidget argument, but passing an +- * extra NULL argument will be fine */ +-static void *(*nn_new) (const gchar *summary, const gchar *message, const gchar *icon, gpointer dummy); +-static gboolean (*nn_show) (void *noti, GError **error); +-static void (*nn_set_timeout) (void *noti, gint timeout); +- +-static void +-libnotify_cleanup (void) +-{ +- if (nn_mod) +- { +- nn_uninit (); +- g_module_close (nn_mod); +- nn_mod = NULL; +- } +-} +- +-static gboolean +-libnotify_notify_new (const char *title, const char *text, GtkStatusIcon *icon) +-{ +- void *noti; +- +- if (!nn_mod) +- { +- nn_mod = g_module_open ("libnotify", G_MODULE_BIND_LAZY); +- if (!nn_mod) +- { +- nn_mod = g_module_open ("libnotify.so.1", G_MODULE_BIND_LAZY); +- if (!nn_mod) +- return FALSE; +- } +- +- if (!g_module_symbol (nn_mod, "notify_init", (gpointer)&nn_init)) +- goto bad; +- if (!g_module_symbol (nn_mod, "notify_uninit", (gpointer)&nn_uninit)) +- goto bad; +- if (!g_module_symbol (nn_mod, "notify_notification_new", (gpointer)&nn_new)) +- goto bad; +- if (!g_module_symbol (nn_mod, "notify_notification_show", (gpointer)&nn_show)) +- goto bad; +- if (!g_module_symbol (nn_mod, "notify_notification_set_timeout", (gpointer)&nn_set_timeout)) +- goto bad; +- if (!nn_init (PACKAGE_NAME)) +- goto bad; +- } +- +- text = strip_color (text, -1, STRIP_ALL|STRIP_ESCMARKUP); +- title = strip_color (title, -1, STRIP_ALL); +- noti = nn_new (title, text, XCHATSHAREDIR"/pixmaps/xchat.png", NULL); +- g_free ((char *)title); +- g_free ((char *)text); +- +- nn_set_timeout (noti, prefs.input_balloon_time*1000); +- nn_show (noti, NULL); +- g_object_unref (G_OBJECT (noti)); +- +- return TRUE; +- +-bad: +- g_module_close (nn_mod); +- nn_mod = NULL; +- return FALSE; +-} +- +-#endif +- + void + fe_tray_set_balloon (const char *title, const char *text) + { + #ifndef WIN32 + const char *argv[8]; + const char *path; + char time[16]; + WinStatus ws; +@@ -208,52 +144,36 @@ fe_tray_set_balloon (const char *title, + /* bit 1 of flags means "no balloons unless hidden/iconified" */ + if (ws != WS_HIDDEN && (prefs.gui_tray_flags & 2)) + return; + + /* FIXME: this should close the current balloon */ + if (!text) + return; + +-#ifdef LIBNOTIFY +- /* try it via libnotify.so */ +- if (libnotify_notify_new (title, text, sticon)) +- return; /* success */ +-#endif ++#ifdef USE_LIBNOTIFY ++ NotifyNotification *notification; ++ char *notify_text, *notify_title; + +- /* try it the crude way */ +- path = g_find_program_in_path ("notify-send"); +- if (path) +- { +- sprintf(time, "%d000",prefs.input_balloon_time); +- argv[0] = path; +- argv[1] = "-i"; +- argv[2] = "gtk-dialog-info"; +- if (access (XCHATSHAREDIR"/pixmaps/xchat.png", R_OK) == 0) +- argv[2] = XCHATSHAREDIR"/pixmaps/xchat.png"; +- argv[3] = "-t"; +- argv[4] = time; +- argv[5] = title; +- text = strip_color (text, -1, STRIP_ALL|STRIP_ESCMARKUP); +- argv[6] = text; +- argv[7] = NULL; +- xchat_execv (argv); +- g_free ((char *)path); +- g_free ((char *)text); +- } +- else +- { +- /* show this error only once */ +- static unsigned char said_it = FALSE; +- if (!said_it) +- { +- said_it = TRUE; +- fe_message (_("Cannot find 'notify-send' to open balloon alerts.\nPlease install libnotify."), FE_MSG_ERROR); +- } +- } ++ if (!notify_is_initted()) ++ notify_init(PACKAGE_NAME); ++ ++ notify_text = strip_color (text, -1, STRIP_ALL|STRIP_ESCMARKUP); ++ notify_title = strip_color (title, -1, STRIP_ALL); ++ ++ notification = XC_NOTIFY_NEW (notify_title, notify_text, XCHATSHAREDIR"/pixmaps/xchat.png", NULL); ++ ++ g_free ((char *)notify_title); ++ g_free ((char *)notify_text); ++ ++ notify_notification_set_timeout (notification, prefs.input_balloon_time*1000); ++ notify_notification_show (notification, NULL); ++ ++ g_object_unref (notification); ++#endif + #endif + } + + static void + tray_set_balloonf (const char *text, const char *format, ...) + { + va_list args; + char *buf; +@@ -840,13 +760,13 @@ tray_plugin_init (xchat_plugin *plugin_h + return 1; /* return 1 for success */ + } + + int + tray_plugin_deinit (xchat_plugin *plugin_handle) + { + #ifdef WIN32 + tray_cleanup (); +-#elif defined(LIBNOTIFY) +- libnotify_cleanup (); ++#elif defined(USE_LIBNOTIFY) ++ notify_uninit (); + #endif + return 1; + } diff --git a/xchat.spec b/xchat.spec index da55a1d..e8b3271 100644 --- a/xchat.spec +++ b/xchat.spec @@ -31,8 +31,9 @@ Patch51: xchat-2.8.6-freenode-ports.patch # work with libnotify 0.7 # https://sourceforge.net/tracker/?func=detail&aid=3109838&group_id=239&atid=100239 Patch52: xchat-2.8.8-libnotify07.patch -Patch53: xchat-2.8.8-libnotifyso4.patch - +# link against libnotify +# https://sourceforge.net/tracker/?func=detail&aid=3280223&group_id=239&atid=100239 +Patch53: xchat-2.8.8-link-against-libnotify.patch BuildRequires: perl perl(ExtUtils::Embed) python-devel openssl-devel pkgconfig, tcl-devel BuildRequires: GConf2-devel BuildRequires: dbus-devel >= 0.60, dbus-glib-devel >= 0.60 @@ -42,6 +43,9 @@ BuildRequires: libtool BuildRequires: libntlm-devel BuildRequires: libsexy-devel BuildRequires: desktop-file-utils >= 0.10 +BuildRequires: libnotify-devel +# For xchat-2.8.8-link-against-libnotify.patch +BuildRequires: autoconf # For gconftool-2: Requires(post): GConf2 >= %{gconf_version} Requires(preun): GConf2 >= %{gconf_version} @@ -83,7 +87,7 @@ This package contains the X-Chat plugin providing the Tcl scripting interface. %patch50 -p1 -b .active-channel-switch %patch51 -p1 -b .freenode-ports %patch52 -p1 -b .libnotify07 -%patch53 -p1 -b .libnotifyso4 +%patch53 -p1 -b .link-against-libnotify sed -i -e 's/#define GTK_DISABLE_DEPRECATED//g' src/fe-gtk/*.c @@ -94,6 +98,10 @@ find . -name CVS -type d | xargs rm -rf export CFLAGS="$RPM_OPT_FLAGS $(perl -MExtUtils::Embed -e ccopts)" export LDFLAGS=$(perl -MExtUtils::Embed -e ldopts) +# For xchat-2.8.8-link-against-libnotify.patch +autoconf +autoheader + %configure --disable-textfe \ --enable-gtkfe \ --enable-openssl \ @@ -176,6 +184,9 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Tue Apr 7 2011 Christopher Aillon - 1:2.8.8-9 +- Link against libnotify (#693362) + * Tue Apr 7 2011 Christopher Aillon - 1:2.8.8-8 - Update the dynamic libnotify check for the newer soname (#693362) From 082c71c27496ba55a626b11bacac016aeb2ee9af Mon Sep 17 00:00:00 2001 From: Christopher Aillon Date: Thu, 7 Apr 2011 20:33:22 -0700 Subject: [PATCH 22/55] Forgot to bump the release number... --- xchat.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xchat.spec b/xchat.spec index e8b3271..75e9cfd 100644 --- a/xchat.spec +++ b/xchat.spec @@ -4,7 +4,7 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat Version: 2.8.8 -Release: 8%{?dist} +Release: 9%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ From 0d213ed34cf4ff6b872be25503e6a834b10031ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcela=20Ma=C5=A1l=C3=A1=C5=88ov=C3=A1?= Date: Fri, 17 Jun 2011 12:45:47 +0200 Subject: [PATCH 23/55] Perl mass rebuild --- xchat.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xchat.spec b/xchat.spec index 75e9cfd..6c44668 100644 --- a/xchat.spec +++ b/xchat.spec @@ -4,7 +4,7 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat Version: 2.8.8 -Release: 9%{?dist} +Release: 10%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ @@ -184,6 +184,9 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Fri Jun 17 2011 Marcela Mašláňová - 1:2.8.8-10 +- Perl mass rebuild + * Tue Apr 7 2011 Christopher Aillon - 1:2.8.8-9 - Link against libnotify (#693362) From 639f0ead5ab7b0f0d7604b7b11c77e11ed9bf98b Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Tue, 6 Dec 2011 01:33:07 -0500 Subject: [PATCH 24/55] Rebuild for new libpng --- xchat.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xchat.spec b/xchat.spec index 6c44668..67d5073 100644 --- a/xchat.spec +++ b/xchat.spec @@ -4,7 +4,7 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat Version: 2.8.8 -Release: 10%{?dist} +Release: 11%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ @@ -184,6 +184,9 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Tue Dec 06 2011 Adam Jackson - 1:2.8.8-11 +- Rebuild for new libpng + * Fri Jun 17 2011 Marcela Mašláňová - 1:2.8.8-10 - Perl mass rebuild From 7211423bd1c8484b0abd897964e3b5713bff3b09 Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Sat, 14 Jan 2012 02:40:13 -0600 Subject: [PATCH 25/55] - Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild --- xchat.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xchat.spec b/xchat.spec index 67d5073..40fe0da 100644 --- a/xchat.spec +++ b/xchat.spec @@ -4,7 +4,7 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat Version: 2.8.8 -Release: 11%{?dist} +Release: 12%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ @@ -184,6 +184,9 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Sat Jan 14 2012 Fedora Release Engineering - 1:2.8.8-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + * Tue Dec 06 2011 Adam Jackson - 1:2.8.8-11 - Rebuild for new libpng From 217a3771372e545e5c728f5d774a7bf464d2125b Mon Sep 17 00:00:00 2001 From: Bruno Wolff III Date: Sat, 25 Feb 2012 11:43:01 -0600 Subject: [PATCH 26/55] Adjust for glib changes xchat was no longer building due to changes in glib such that only glib.h can be included and g_thread_init no longer being used (or needed). --- xchat-2.8.8-glib.patch | 61 ++++++++++++++++++++++++++++++++++++++++++ xchat.spec | 8 +++++- 2 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 xchat-2.8.8-glib.patch diff --git a/xchat-2.8.8-glib.patch b/xchat-2.8.8-glib.patch new file mode 100644 index 0000000..0012ce5 --- /dev/null +++ b/xchat-2.8.8-glib.patch @@ -0,0 +1,61 @@ +--- src/common/text.c.orig 2012-02-25 11:05:23.890274334 -0600 ++++ src/common/text.c 2012-02-25 11:05:39.006195489 -0600 +@@ -28,7 +28,7 @@ + #include + + #include "xchat.h" +-#include ++#include + #include "cfgfiles.h" + #include "chanopt.h" + #include "plugin.h" +--- src/common/servlist.c.orig 2012-02-25 11:04:30.601501605 -0600 ++++ src/common/servlist.c 2012-02-25 11:04:42.964072823 -0600 +@@ -24,7 +24,7 @@ + #include + + #include "xchat.h" +-#include ++#include + + #include "cfgfiles.h" + #include "fe.h" +--- src/common/dbus/dbus-client.c.orig 2012-02-25 10:59:23.948527589 -0600 ++++ src/common/dbus/dbus-client.c 2012-02-25 11:00:40.082203787 -0600 +@@ -53,11 +53,6 @@ + GError *error = NULL; + char *command = NULL; + +- /* GnomeVFS >=2.15 uses D-Bus and threads, so threads should be +- * initialised before opening for the first time a D-Bus connection */ +- if (!g_thread_supported ()) { +- g_thread_init (NULL); +- } + dbus_g_thread_init (); + + /* if there is nothing to do, return now. */ +--- src/common/xchat.h.orig 2012-02-25 11:29:33.400499630 -0600 ++++ src/common/xchat.h 2012-02-25 11:29:51.774834912 -0600 +@@ -1,10 +1,6 @@ + #include "../../config.h" + +-#include +-#include +-#include +-#include +-#include ++#include + #include /* need time_t */ + + #ifndef XCHAT_H +--- src/common/util.c.orig 2012-02-25 11:38:29.404622998 -0600 ++++ src/common/util.c 2012-02-25 11:38:51.904482615 -0600 +@@ -39,7 +39,7 @@ + #include + #include "xchat.h" + #include "xchatc.h" +-#include ++#include + #include + #include "util.h" + #include "../../config.h" diff --git a/xchat.spec b/xchat.spec index 40fe0da..84624e9 100644 --- a/xchat.spec +++ b/xchat.spec @@ -4,7 +4,7 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat Version: 2.8.8 -Release: 12%{?dist} +Release: 13%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ @@ -34,6 +34,8 @@ Patch52: xchat-2.8.8-libnotify07.patch # link against libnotify # https://sourceforge.net/tracker/?func=detail&aid=3280223&group_id=239&atid=100239 Patch53: xchat-2.8.8-link-against-libnotify.patch +# Only glib.h can be included and g_thread_init should no longer be used +Patch54: xchat-2.8.8-glib.patch BuildRequires: perl perl(ExtUtils::Embed) python-devel openssl-devel pkgconfig, tcl-devel BuildRequires: GConf2-devel BuildRequires: dbus-devel >= 0.60, dbus-glib-devel >= 0.60 @@ -88,6 +90,7 @@ This package contains the X-Chat plugin providing the Tcl scripting interface. %patch51 -p1 -b .freenode-ports %patch52 -p1 -b .libnotify07 %patch53 -p1 -b .link-against-libnotify +%patch54 -p0 -b .glib sed -i -e 's/#define GTK_DISABLE_DEPRECATED//g' src/fe-gtk/*.c @@ -184,6 +187,9 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Sat Feb 25 2012 Bruno Wolff III - 1:2.8.8-13 +- Adjust to glib changes so that xchat will build again + * Sat Jan 14 2012 Fedora Release Engineering - 1:2.8.8-12 - Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild From e0e71684a57d5c1b07345f2190f546114c07d0a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Mon, 11 Jun 2012 11:40:54 +0200 Subject: [PATCH 27/55] Perl 5.16 rebuild --- xchat.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xchat.spec b/xchat.spec index 84624e9..009cde0 100644 --- a/xchat.spec +++ b/xchat.spec @@ -4,7 +4,7 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat Version: 2.8.8 -Release: 13%{?dist} +Release: 14%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ @@ -187,6 +187,9 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Mon Jun 11 2012 Petr Pisar - 1:2.8.8-14 +- Perl 5.16 rebuild + * Sat Feb 25 2012 Bruno Wolff III - 1:2.8.8-13 - Adjust to glib changes so that xchat will build again From b8b216379ba493f9a12c50135029a1f2ae570e79 Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Sat, 21 Jul 2012 23:38:32 -0500 Subject: [PATCH 28/55] - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild --- xchat.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xchat.spec b/xchat.spec index 009cde0..ad2f238 100644 --- a/xchat.spec +++ b/xchat.spec @@ -4,7 +4,7 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat Version: 2.8.8 -Release: 14%{?dist} +Release: 15%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ @@ -187,6 +187,9 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Sun Jul 22 2012 Fedora Release Engineering - 1:2.8.8-15 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + * Mon Jun 11 2012 Petr Pisar - 1:2.8.8-14 - Perl 5.16 rebuild From 60eb3783a9ee9d9835c7649d3432e689321219d1 Mon Sep 17 00:00:00 2001 From: Debarshi Ray Date: Tue, 27 Nov 2012 16:23:36 +0100 Subject: [PATCH 29/55] Make sure default settings work with gnome-shell (#880672) --- ...t-2.8.4-disable-tray-icon-by-default.patch | 12 -------- xchat-2.8.8-notifications-and-tray.patch | 30 +++++++++++++++++++ xchat.spec | 9 ++++-- 3 files changed, 36 insertions(+), 15 deletions(-) delete mode 100644 xchat-2.8.4-disable-tray-icon-by-default.patch create mode 100644 xchat-2.8.8-notifications-and-tray.patch diff --git a/xchat-2.8.4-disable-tray-icon-by-default.patch b/xchat-2.8.4-disable-tray-icon-by-default.patch deleted file mode 100644 index 5466815..0000000 --- a/xchat-2.8.4-disable-tray-icon-by-default.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -ur xchat-2.8.4/src/common/cfgfiles.c xchat-2.8.4-disable-tray-icon-by-default/src/common/cfgfiles.c ---- xchat-2.8.4/src/common/cfgfiles.c 2007-06-17 08:11:42.000000000 +0200 -+++ xchat-2.8.4-disable-tray-icon-by-default/src/common/cfgfiles.c 2007-07-04 12:05:21.000000000 +0200 -@@ -670,7 +670,7 @@ - prefs.autoopendccchatwindow = 1; - prefs.userhost = 1; - prefs.gui_url_mod = 4; /* ctrl */ -- prefs.gui_tray = 1; -+ prefs.gui_tray = 0; - prefs.gui_pane_left_size = 100; - prefs.gui_pane_right_size = 100; - prefs.mainwindow_save = 1; diff --git a/xchat-2.8.8-notifications-and-tray.patch b/xchat-2.8.8-notifications-and-tray.patch new file mode 100644 index 0000000..0803ce2 --- /dev/null +++ b/xchat-2.8.8-notifications-and-tray.patch @@ -0,0 +1,30 @@ +diff -urNp xchat-2.8.8/src/common/cfgfiles.c xchat-2.8.8-notifications-and-tray/src/common/cfgfiles.c +--- xchat-2.8.8/src/common/cfgfiles.c 2009-08-16 11:40:16.000000000 +0200 ++++ xchat-2.8.8-notifications-and-tray/src/common/cfgfiles.c 2012-11-27 15:34:13.080403744 +0100 +@@ -670,11 +670,13 @@ load_config (void) + prefs.autoopendccchatwindow = 1; + prefs.userhost = 1; + prefs.gui_url_mod = 4; /* ctrl */ +- prefs.gui_tray = 1; ++ prefs.gui_tray = 0; + prefs.gui_pane_left_size = 100; + prefs.gui_pane_right_size = 100; + prefs.mainwindow_save = 1; + prefs.bantype = 2; ++ prefs.input_balloon_hilight = 1; ++ prefs.input_balloon_priv = 1; + prefs.input_balloon_time = 20; + prefs.input_flash_priv = prefs.input_flash_hilight = 1; + prefs.input_tray_priv = prefs.input_tray_hilight = 1; +diff -urNp xchat-2.8.8/src/fe-gtk/maingui.c xchat-2.8.8-notifications-and-tray/src/fe-gtk/maingui.c +--- xchat-2.8.8/src/fe-gtk/maingui.c 2010-05-16 05:15:55.000000000 +0200 ++++ xchat-2.8.8-notifications-and-tray/src/fe-gtk/maingui.c 2012-11-27 16:05:27.609518192 +0100 +@@ -3107,7 +3107,7 @@ mg_tabwindow_de_cb (GtkWidget *widget, G + list = list->next; + } + +- mg_open_quit_dialog (TRUE); ++ mg_open_quit_dialog (FALSE); + return TRUE; + } + diff --git a/xchat.spec b/xchat.spec index ad2f238..8e719c9 100644 --- a/xchat.spec +++ b/xchat.spec @@ -4,7 +4,7 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat Version: 2.8.8 -Release: 15%{?dist} +Release: 16%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ @@ -15,8 +15,8 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) # Patches 0-9 reserved for official xchat.org patches Patch12: xchat-1.8.7-use-sysconf-to-detect-cpus.patch -# see #241923 -Patch35: xchat-2.8.4-disable-tray-icon-by-default.patch +# see #241923 & #880672 +Patch35: xchat-2.8.8-notifications-and-tray.patch # Upstream XChat 2.8.6 defaults to Latin1 (what upstream calls the "IRC" # encoding). Default to UTF-8 instead (as previous versions did, at least when # running under a UTF-8 locale). @@ -187,6 +187,9 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Tue Nov 27 2012 Debarshi Ray - 1:2.8.8-16 +- Make sure default settings work with gnome-shell (#880672) + * Sun Jul 22 2012 Fedora Release Engineering - 1:2.8.8-15 - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild From 0760657803e4dee23515de103636d6793b83a992 Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Thu, 14 Feb 2013 21:29:53 -0600 Subject: [PATCH 30/55] - Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild --- xchat.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xchat.spec b/xchat.spec index 8e719c9..6855528 100644 --- a/xchat.spec +++ b/xchat.spec @@ -4,7 +4,7 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat Version: 2.8.8 -Release: 16%{?dist} +Release: 17%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ @@ -187,6 +187,9 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Fri Feb 15 2013 Fedora Release Engineering - 1:2.8.8-17 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + * Tue Nov 27 2012 Debarshi Ray - 1:2.8.8-16 - Make sure default settings work with gnome-shell (#880672) From 3a9424b4ae9ac84c5aaafb81161fe078220b0dce Mon Sep 17 00:00:00 2001 From: Debarshi Ray Date: Mon, 10 Jun 2013 13:30:10 +0200 Subject: [PATCH 31/55] Add hi-res icons (http://sourceforge.net/p/xchat/bugs/1504/) --- hicolor_apps_16x16_xchat.png | Bin 0 -> 1064 bytes hicolor_apps_22x22_xchat.png | Bin 0 -> 1536 bytes hicolor_apps_24x24_xchat.png | Bin 0 -> 1724 bytes hicolor_apps_256x256_xchat.png | Bin 0 -> 28634 bytes hicolor_apps_32x32_xchat.png | Bin 0 -> 2418 bytes hicolor_apps_48x48_xchat.png | Bin 0 -> 4018 bytes xchat-2.8.8-hires-icons.patch | 85 ++ xchat.spec | 51 +- xchat.svg | 1802 ++++++++++++++++++++++++++++++++ 9 files changed, 1924 insertions(+), 14 deletions(-) create mode 100644 hicolor_apps_16x16_xchat.png create mode 100644 hicolor_apps_22x22_xchat.png create mode 100644 hicolor_apps_24x24_xchat.png create mode 100644 hicolor_apps_256x256_xchat.png create mode 100644 hicolor_apps_32x32_xchat.png create mode 100644 hicolor_apps_48x48_xchat.png create mode 100644 xchat-2.8.8-hires-icons.patch create mode 100644 xchat.svg diff --git a/hicolor_apps_16x16_xchat.png b/hicolor_apps_16x16_xchat.png new file mode 100644 index 0000000000000000000000000000000000000000..b29fc17a74f5a070fe1d0bb5a124dfd3056ceb68 GIT binary patch literal 1064 zcmV+@1lRkCP)P{QzDxiB02FjZSad;kbZBpK07_wN zbz&e>bY*F7Wpd{G_b&hd03mcmSaefwb#h~60BCe{a5^t9YH4k4VPh_Bb#rNBXklz@ zE@OIWX5(G}00TftL_t(Ijg3=ZOj~srJ@-%Py#?E~6qp5Z!;Yqd5eka3IH#ET1GA}1 z_9si0xEYiApnLH_j4!Ce?a2pBj4m-gXd(pNP_vBd07a5Ei#SKKO2ILyFe-(6xwkF7 zx8?T!e3%-tWXVo)lJ7j6^X1Ez!w^CM0B84)bZu>ZbttbU7Uh}Y$KSa^Ru3x6>Ey`lLw{iOeg3)BuV*%Bs*lnsfzo&*wX_L(^YW?X z;U0K~d*GS-;q;27O;9>rPw7+%rKyjoI{TS9cCM80He1cdUU8O3ydR(i05`y-PhfjX zU!_$PW*C;kw&o5m6F&|Zi97dbZ^G$l;#}Ug^UT+8?>t++>)GxVE&$!M<9@)i7JNbq ztFe(jUJbnA72MU<{-+5m3MKayP%K&)9Ur5a+NuDb&8{D*+Y@5dToGzczo&`brR#Py zF|pWh9c*rW{hO=dv4WP?P_*bhX>FQUR+bT-xMCWHG011s)wj~=b$xm|deSNu#k)6G zxm|ev@F`pzI1g1*0RSa7n_^MsOEYivGK3JcrzKDD$B@Q#fwIQsWDC0WSV)5RTX_hOPSF8odCRm3cx5ur1&81m9F-`J97Q2UlbeNwXF#s z$PrlSEatX%;Z|CNrsyV@m(|NR*^*a+iY&5^gy2|Qf|M8OhwxP=Y{w^$ucb^w4t2*JN?6`m=> zK!3nxeP3Tj54a#Vh^QrmfCqq>j)fe}g}T>rgNB9hwLH2BA;y27AcPo_B)zQ7Ye|8{ i?j*(GKMgF@0Qd(|vyx5+2zDX>0000jqIBM literal 0 HcmV?d00001 diff --git a/hicolor_apps_22x22_xchat.png b/hicolor_apps_22x22_xchat.png new file mode 100644 index 0000000000000000000000000000000000000000..5f4a083e4cbfc08cd1065d318e8b854dcbd1c7f8 GIT binary patch literal 1536 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 Q004mYBZG&v>UI(T1MHQDWB>pF literal 0 HcmV?d00001 diff --git a/hicolor_apps_32x32_xchat.png b/hicolor_apps_32x32_xchat.png new file mode 100644 index 0000000000000000000000000000000000000000..59b1850da79c97f4c114e5e65fb71d1c2f1870b5 GIT binary patch literal 2418 zcmV-&361uNP)P{QzDxiB02FjZSad;kbZBpK07_wN zbz&e>bY*F7Wpd{G_b&hd03mcmSaefwb#h~60BCe{a5^t9YH4k4VPh_Bb#rNBXklz@ zE@OIWX5(G}00@dnL_t(og{7Bya8>mc$3OSpw`6-SI|M?2#0TbOE2JVp5M-N+GB{HQ zTw3W$>s0Gfp+&K^ELx@2PPGf8*6JuSqK+dJY#v$%kmW%kA_)?K7m}AimY4PI@7=9` z4OZKv$FyiqeM}F0|A{?v{Z|Hl zjs4+P*Yy@_?yHvZWix|K2mV;`h`wprGT9gzCw>+9nWe66`Od`~o%igum8{x6%WBGW zZ(QVZUMu;=MJ}h5l6U<2yLQYiTJ}Q9)cL=9qUL$=pVieaVN3y=7rC}gEMLAR_ogS! zc)yFNouqW-Tj|NRyrUbgLBxhdE@x_bfxBeoTXrG(2{bIhK5en7aQ>sKk8QnL#4rKB zz1g*G@{I4S89(PC6D>c1Xf3pFMu>kx#htIGr=}FR*UkHS5$oo;oT+Jr?y@^yw+oTI z(D4kY9pGI}=JmHo(-%E@@8PG1ix?E}Se0vA(T%It&})iyvNnV3YXjfC$Oq zaIm)WqbIK`{q`dTbAMpQyA~qNpfTJ7ClDloyvp^~&Wkmx%TwIDj<-8H0UrF8%bAf^ z?7rci7wux-4rqV%YP=Ez|3Oj;e=9NV`8D_}{fy(F}xPTD9%%rMy*2yLFtzyed(E9JOaVn_HsOQ^g?(|1mQY}eKrcKC`B(>-2gEZ1Z?GS7oJ5B>NX(qc5cdP%X_O9Li8Sepo zvMlS8!{NZ;a2OtsCw9?CQ+HpeB_+wabb9_2Ns9WeDYLO$OPaw4?jH5!>ZV^;*Rd1m z0yKxifoaI`&{nKi;a{-$CTlpu*8R3<9Z$;GXKE}|5r}U7B22F!BFq2Q*!0_lFZ$m|Ri#!J)OCfI2`vOaMSEuH0W* zRF-T_$>ef(WN`e+y&A5fSA@2h=Fg7x#G!f%0nI$$}ys&E3s#QPp`~AZ@;;>%e z_Xo-|GRL7A2AbaQXHMa73eeB=&0Vj`rdbp=2Ja1&ourtuy z-1^smzh`OtW$z-vWD>rq0J|-n@BMTgu08MI`LY&401Ta!-e#r*&Q}zw?Zq|L;Ww*c z0&Yt^J;7$ntDI#Og-i7(FvhBZARq_=hOPrpZ!X}^zwcnl@;j+Nd5DE=`^dK_+?Z`3 z6-~1Jts(trrQbED#(qV_;1-nlT#l^V@yG8kcVuQY9UePfQG(Qr{%5Ec)Ho3ho@>kD zSY{;#0uPu@bDO1g5YlBC&tIBDy}?j$PF+sF2yuWs-Jb2fzi?t^)|ZDN%IL0`!8(qh zIF4x44E8BN8p#Sgp4Exm=|l5SfT&yEcpyI~ zJFBw=RLkh(ss)nA;a5}HRC`%_>Ow#Zb%!BmI#{wX#o!lqKX-Q?!KB1!j-?F2ni;RF z+?OV0n&ZL_0LkO=2n!0*UsxFGv@`_mWID?cyE-7IUfong3nXXKqnOz2=~mva_y4`N zBX-%vG|Lc@{AJ&7;AIUmZWpu1j`a!k}S&% zyO03AjWKHDk;n~xOH$TyBOn92`e!j34g`2ugOfnFEXx`s{tFU|42oz{s0+na=fN;}yMjjGc*JiaAGJqjA%vxE|<#$WC3L&l<3e4 z)Fd*G$g-@DBp-nv*p4Z{OcAnm_yVW{x@1{ahsF<9U`Qr4lu87F kR-+%^2=tM-2M)FW0e&)V?#+JwU;qFB07*qoM6N<$f}rZ4O8@`> literal 0 HcmV?d00001 diff --git a/hicolor_apps_48x48_xchat.png b/hicolor_apps_48x48_xchat.png new file mode 100644 index 0000000000000000000000000000000000000000..47db53ed11fba5c5eede305e5fabbe8c33c8d89b GIT binary patch literal 4018 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 0.60, dbus-glib-devel >= 0.60 @@ -48,6 +61,8 @@ BuildRequires: desktop-file-utils >= 0.10 BuildRequires: libnotify-devel # For xchat-2.8.8-link-against-libnotify.patch BuildRequires: autoconf +BuildRequires: automake + # For gconftool-2: Requires(post): GConf2 >= %{gconf_version} Requires(preun): GConf2 >= %{gconf_version} @@ -91,9 +106,18 @@ This package contains the X-Chat plugin providing the Tcl scripting interface. %patch52 -p1 -b .libnotify07 %patch53 -p1 -b .link-against-libnotify %patch54 -p0 -b .glib +%patch55 -p1 -b .hires-icons sed -i -e 's/#define GTK_DISABLE_DEPRECATED//g' src/fe-gtk/*.c +cp -p %{SOURCE1} icons/ +cp -p %{SOURCE2} icons/ +cp -p %{SOURCE3} icons/ +cp -p %{SOURCE4} icons/ +cp -p %{SOURCE5} icons/ +cp -p %{SOURCE6} icons/ +cp -p %{SOURCE7} icons/ + %build # Remove CVS files from source dirs so they're not installed into doc dirs. find . -name CVS -type d | xargs rm -rf @@ -102,8 +126,7 @@ export CFLAGS="$RPM_OPT_FLAGS $(perl -MExtUtils::Embed -e ccopts)" export LDFLAGS=$(perl -MExtUtils::Embed -e ldopts) # For xchat-2.8.8-link-against-libnotify.patch -autoconf -autoheader +./autogen.sh %configure --disable-textfe \ --enable-gtkfe \ @@ -152,18 +175,14 @@ EOF export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source` gconftool-2 --makefile-install-rule /etc/gconf/schemas/apps_xchat_url_handler.schemas >& /dev/null || : - -%pre -if [ "$1" -gt 1 ]; then - export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source` - gconftool-2 --makefile-uninstall-rule /etc/gconf/schemas/apps_xchat_url_handler.schemas >& /dev/null || : +%postun +if [ $1 -eq 0 ] ; then + /bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null + /usr/bin/gtk-update-icon-cache -f %{_datadir}/icons/hicolor &>/dev/null || : fi -%preun -if [ "$1" -eq 0 ]; then - export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source` - gconftool-2 --makefile-uninstall-rule /etc/gconf/schemas/apps_xchat_url_handler.schemas >& /dev/null || : -fi +%posttrans +/usr/bin/gtk-update-icon-cache -f %{_datadir}/icons/hicolor &>/dev/null || : %clean %{__rm} -rf $RPM_BUILD_ROOT @@ -178,6 +197,7 @@ fi %{_libdir}/xchat/plugins/perl.so %{_libdir}/xchat/plugins/python.so %{_datadir}/applications/xchat.desktop +%{_datadir}/icons/hicolor/*/apps/xchat.png %{_datadir}/pixmaps/* %{_sysconfdir}/gconf/schemas/apps_xchat_url_handler.schemas %{_datadir}/dbus-1/services/org.xchat.service.service @@ -187,6 +207,9 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Fri Jun 07 2013 Debarshi Ray - 1:2.8.8-18 +- Add hi-res icons (http://sourceforge.net/p/xchat/bugs/1504/) + * Fri Feb 15 2013 Fedora Release Engineering - 1:2.8.8-17 - Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild diff --git a/xchat.svg b/xchat.svg new file mode 100644 index 0000000..c7055d8 --- /dev/null +++ b/xchat.svg @@ -0,0 +1,1802 @@ + + + + + Pidgin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Jakub Steiner + + + http://jimmac.musichall.cz + + Pidgin + + + pidgin + im + instant + messaging + + + + + + + + + + + + + + + + + + + + + Hylke Bons, Lapo Calamandrei + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From a9a3f193bba0c2ae4c850fab7dc778c2991d9bfa Mon Sep 17 00:00:00 2001 From: Debarshi Ray Date: Mon, 10 Jun 2013 13:38:19 +0200 Subject: [PATCH 32/55] Add BR on gettext-devel --- xchat.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xchat.spec b/xchat.spec index 3120802..ee26d1a 100644 --- a/xchat.spec +++ b/xchat.spec @@ -53,7 +53,7 @@ BuildRequires: perl perl(ExtUtils::Embed) python-devel openssl-devel pkgconfig, BuildRequires: GConf2-devel BuildRequires: dbus-devel >= 0.60, dbus-glib-devel >= 0.60 BuildRequires: glib2-devel >= 2.10.0, gtk2-devel >= 2.10.0, bison >= 1.35 -BuildRequires: gettext /bin/sed +BuildRequires: gettext-devel /bin/sed BuildRequires: libtool BuildRequires: libntlm-devel BuildRequires: libsexy-devel From 0bc4fc5696a938735820486dbbc2e642d687ee7d Mon Sep 17 00:00:00 2001 From: Debarshi Ray Date: Mon, 10 Jun 2013 14:48:29 +0200 Subject: [PATCH 33/55] Use XDG_CONFIG_HOME instead of home for config files (http://sourceforge.net/p/xchat/bugs/1506/) - Use name and generic name correctly in desktop file (http://sourceforge.net/p/xchat/bugs/1397/) --- xchat-2.8.8-desktop-file-name.patch | 13 + xchat-2.8.8-xdg-dirs.patch | 1224 +++++++++++++++++++++++++++ xchat.spec | 14 +- 3 files changed, 1250 insertions(+), 1 deletion(-) create mode 100644 xchat-2.8.8-desktop-file-name.patch create mode 100644 xchat-2.8.8-xdg-dirs.patch diff --git a/xchat-2.8.8-desktop-file-name.patch b/xchat-2.8.8-desktop-file-name.patch new file mode 100644 index 0000000..2d6044a --- /dev/null +++ b/xchat-2.8.8-desktop-file-name.patch @@ -0,0 +1,13 @@ +diff -urNp xchat-2.8.8.orig/xchat.desktop xchat-2.8.8/xchat.desktop +--- xchat-2.8.8.orig/xchat.desktop 2013-06-10 14:01:07.408432973 +0200 ++++ xchat-2.8.8/xchat.desktop 2013-06-10 14:12:56.044209785 +0200 +@@ -1,7 +1,8 @@ + [Desktop Entry] + Encoding=UTF-8 +-Name=XChat IRC ++Name=XChat + Name[zh_TW]=網路清談 ++GenericName=IRC Client + Comment[de]=IRC-Client + Comment[es]=Aplicación de IRC + Comment[fi]=IRC-sovellus diff --git a/xchat-2.8.8-xdg-dirs.patch b/xchat-2.8.8-xdg-dirs.patch new file mode 100644 index 0000000..5530085 --- /dev/null +++ b/xchat-2.8.8-xdg-dirs.patch @@ -0,0 +1,1224 @@ +diff -urNp xchat-2.8.8.orig/src/common/cfgfiles.c xchat-2.8.8/src/common/cfgfiles.c +--- xchat-2.8.8.orig/src/common/cfgfiles.c 2013-06-10 14:01:07.402432963 +0200 ++++ xchat-2.8.8/src/common/cfgfiles.c 2013-06-10 14:27:09.668464169 +0200 +@@ -1,3 +1,4 @@ ++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ + /* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * +@@ -34,7 +35,8 @@ + #ifdef WIN32 + #define XCHAT_DIR "X-Chat 2" + #else +-#define XCHAT_DIR ".xchat2" ++#define XCHAT_DIR "xchat2" ++#define OLD_XCHAT_DIR ".xchat2" + #endif + #define DEF_FONT "Monospace 9" + +@@ -318,17 +320,68 @@ get_xdir_fs (void) + return xdir_fs; + } + ++void ++maybe_migrate_xdg_config (void) ++{ ++} ++ + #else + + char * + get_xdir_fs (void) + { + if (!xdir_fs) +- xdir_fs = g_strdup_printf ("%s/" XCHAT_DIR, g_get_home_dir ()); ++ xdir_fs = g_strdup_printf ("%s/" XCHAT_DIR, g_get_user_config_dir ()); + + return xdir_fs; + } + ++void ++maybe_migrate_xdg_config (void) ++{ ++ char *old_dir; ++ char *new_dir; ++ GFile *source; ++ GFile *dest; ++ GError *error; ++ gboolean res; ++ ++ new_dir = g_strdup_printf ("%s/" XCHAT_DIR, g_get_user_config_dir ()); ++ ++ /* already migrated */ ++ if (g_file_test (new_dir, G_FILE_TEST_IS_DIR)) ++ { ++ g_free (new_dir); ++ return; ++ } ++ ++ /* nothing to migrate */ ++ old_dir = g_strdup_printf ("%s/" OLD_XCHAT_DIR, g_get_home_dir ()); ++ if (!g_file_test (old_dir, G_FILE_TEST_IS_DIR)) ++ { ++ g_free (old_dir); ++ g_free (new_dir); ++ return; ++ } ++ ++ source = g_file_new_for_path (old_dir); ++ dest = g_file_new_for_path (new_dir); ++ ++ g_message (_("Migrating data from %s to %s"), old_dir, new_dir); ++ error = NULL; ++ res = g_file_move (source, dest, G_FILE_COPY_NONE, NULL, NULL, NULL, &error); ++ if (error != NULL) ++ { ++ g_warning (_("Error migrating data: %s"), error->message); ++ g_error_free (error); ++ } ++ ++ g_free (old_dir); ++ g_free (new_dir); ++ g_object_unref (source); ++ g_object_unref (dest); ++} ++ + #endif /* !WIN32 */ + + char * +@@ -351,7 +404,7 @@ check_prefs_dir (void) + #else + if (mkdir (dir, S_IRUSR | S_IWUSR | S_IXUSR) != 0) + #endif +- fe_message (_("Cannot create ~/.xchat2"), FE_MSG_ERROR); ++ fe_message (_("Cannot create configuration directory"), FE_MSG_ERROR); + } + } + +@@ -593,6 +646,7 @@ load_config (void) + const char *username, *realname; + int res, val, i, fh; + ++ maybe_migrate_xdg_config (); + check_prefs_dir (); + username = g_get_user_name (); + if (!username) +diff -urNp xchat-2.8.8.orig/src/common/cfgfiles.c.orig xchat-2.8.8/src/common/cfgfiles.c.orig +--- xchat-2.8.8.orig/src/common/cfgfiles.c.orig 1970-01-01 01:00:00.000000000 +0100 ++++ xchat-2.8.8/src/common/cfgfiles.c.orig 2013-06-10 14:26:18.219319628 +0200 +@@ -0,0 +1,1104 @@ ++/* X-Chat ++ * Copyright (C) 1998 Peter Zelezny. ++ * ++ * This program 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. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "xchat.h" ++#include "cfgfiles.h" ++#include "util.h" ++#include "fe.h" ++#include "text.h" ++#include "xchatc.h" ++ ++#ifdef WIN32 ++#define XCHAT_DIR "X-Chat 2" ++#else ++#define XCHAT_DIR ".xchat2" ++#endif ++#define DEF_FONT "Monospace 9" ++ ++void ++list_addentry (GSList ** list, char *cmd, char *name) ++{ ++ struct popup *pop; ++ int cmd_len = 1, name_len; ++ ++ /* remove <2.8.0 stuff */ ++ if (!strcmp (cmd, "away") && !strcmp (name, "BACK")) ++ return; ++ ++ if (cmd) ++ cmd_len = strlen (cmd) + 1; ++ name_len = strlen (name) + 1; ++ ++ pop = malloc (sizeof (struct popup) + cmd_len + name_len); ++ pop->name = (char *) pop + sizeof (struct popup); ++ pop->cmd = pop->name + name_len; ++ ++ memcpy (pop->name, name, name_len); ++ if (cmd) ++ memcpy (pop->cmd, cmd, cmd_len); ++ else ++ pop->cmd[0] = 0; ++ ++ *list = g_slist_append (*list, pop); ++} ++ ++/* read it in from a buffer to our linked list */ ++ ++static void ++list_load_from_data (GSList ** list, char *ibuf, int size) ++{ ++ char cmd[384]; ++ char name[128]; ++ char *buf; ++ int pnt = 0; ++ ++ cmd[0] = 0; ++ name[0] = 0; ++ ++ while (buf_get_line (ibuf, &buf, &pnt, size)) ++ { ++ if (*buf != '#') ++ { ++ if (!strncasecmp (buf, "NAME ", 5)) ++ { ++ safe_strcpy (name, buf + 5, sizeof (name)); ++ } ++ else if (!strncasecmp (buf, "CMD ", 4)) ++ { ++ safe_strcpy (cmd, buf + 4, sizeof (cmd)); ++ if (*name) ++ { ++ list_addentry (list, cmd, name); ++ cmd[0] = 0; ++ name[0] = 0; ++ } ++ } ++ } ++ } ++} ++ ++void ++list_loadconf (char *file, GSList ** list, char *defaultconf) ++{ ++ char filebuf[256]; ++ char *ibuf; ++ int fh; ++ struct stat st; ++ ++ snprintf (filebuf, sizeof (filebuf), "%s/%s", get_xdir_fs (), file); ++ fh = open (filebuf, O_RDONLY | OFLAGS); ++ if (fh == -1) ++ { ++ if (defaultconf) ++ list_load_from_data (list, defaultconf, strlen (defaultconf)); ++ return; ++ } ++ if (fstat (fh, &st) != 0) ++ { ++ perror ("fstat"); ++ abort (); ++ } ++ ++ ibuf = malloc (st.st_size); ++ read (fh, ibuf, st.st_size); ++ close (fh); ++ ++ list_load_from_data (list, ibuf, st.st_size); ++ ++ free (ibuf); ++} ++ ++void ++list_free (GSList ** list) ++{ ++ void *data; ++ while (*list) ++ { ++ data = (void *) (*list)->data; ++ free (data); ++ *list = g_slist_remove (*list, data); ++ } ++} ++ ++int ++list_delentry (GSList ** list, char *name) ++{ ++ struct popup *pop; ++ GSList *alist = *list; ++ ++ while (alist) ++ { ++ pop = (struct popup *) alist->data; ++ if (!strcasecmp (name, pop->name)) ++ { ++ *list = g_slist_remove (*list, pop); ++ free (pop); ++ return 1; ++ } ++ alist = alist->next; ++ } ++ return 0; ++} ++ ++char * ++cfg_get_str (char *cfg, char *var, char *dest, int dest_len) ++{ ++ while (1) ++ { ++ if (!strncasecmp (var, cfg, strlen (var))) ++ { ++ char *value, t; ++ cfg += strlen (var); ++ while (*cfg == ' ') ++ cfg++; ++ if (*cfg == '=') ++ cfg++; ++ while (*cfg == ' ') ++ cfg++; ++ /*while (*cfg == ' ' || *cfg == '=') ++ cfg++; */ ++ value = cfg; ++ while (*cfg != 0 && *cfg != '\n') ++ cfg++; ++ t = *cfg; ++ *cfg = 0; ++ safe_strcpy (dest, value, dest_len); ++ *cfg = t; ++ return cfg; ++ } ++ while (*cfg != 0 && *cfg != '\n') ++ cfg++; ++ if (*cfg == 0) ++ return 0; ++ cfg++; ++ if (*cfg == 0) ++ return 0; ++ } ++} ++ ++static int ++cfg_put_str (int fh, char *var, char *value) ++{ ++ char buf[512]; ++ int len; ++ ++ snprintf (buf, sizeof buf, "%s = %s\n", var, value); ++ len = strlen (buf); ++ return (write (fh, buf, len) == len); ++} ++ ++int ++cfg_put_color (int fh, int r, int g, int b, char *var) ++{ ++ char buf[400]; ++ int len; ++ ++ snprintf (buf, sizeof buf, "%s = %04x %04x %04x\n", var, r, g, b); ++ len = strlen (buf); ++ return (write (fh, buf, len) == len); ++} ++ ++int ++cfg_put_int (int fh, int value, char *var) ++{ ++ char buf[400]; ++ int len; ++ ++ if (value == -1) ++ value = 1; ++ ++ snprintf (buf, sizeof buf, "%s = %d\n", var, value); ++ len = strlen (buf); ++ return (write (fh, buf, len) == len); ++} ++ ++int ++cfg_get_color (char *cfg, char *var, int *r, int *g, int *b) ++{ ++ char str[128]; ++ ++ if (!cfg_get_str (cfg, var, str, sizeof (str))) ++ return 0; ++ ++ sscanf (str, "%04x %04x %04x", r, g, b); ++ return 1; ++} ++ ++int ++cfg_get_int_with_result (char *cfg, char *var, int *result) ++{ ++ char str[128]; ++ ++ if (!cfg_get_str (cfg, var, str, sizeof (str))) ++ { ++ *result = 0; ++ return 0; ++ } ++ ++ *result = 1; ++ return atoi (str); ++} ++ ++int ++cfg_get_int (char *cfg, char *var) ++{ ++ char str[128]; ++ ++ if (!cfg_get_str (cfg, var, str, sizeof (str))) ++ return 0; ++ ++ return atoi (str); ++} ++ ++char *xdir_fs = NULL; /* file system encoding */ ++char *xdir_utf = NULL; /* utf-8 encoding */ ++ ++#ifdef WIN32 ++ ++#include ++ ++static gboolean ++get_reg_str (const char *sub, const char *name, char *out, DWORD len) ++{ ++ HKEY hKey; ++ DWORD t; ++ ++ if (RegOpenKeyEx (HKEY_CURRENT_USER, sub, 0, KEY_READ, &hKey) == ++ ERROR_SUCCESS) ++ { ++ if (RegQueryValueEx (hKey, name, NULL, &t, out, &len) != ERROR_SUCCESS || ++ t != REG_SZ) ++ { ++ RegCloseKey (hKey); ++ return FALSE; ++ } ++ out[len-1] = 0; ++ RegCloseKey (hKey); ++ return TRUE; ++ } ++ ++ return FALSE; ++} ++ ++char * ++get_xdir_fs (void) ++{ ++ if (!xdir_fs) ++ { ++ char out[256]; ++ ++ if (!get_reg_str ("Software\\Microsoft\\Windows\\CurrentVersion\\" ++ "Explorer\\Shell Folders", "AppData", out, sizeof (out))) ++ return "./config"; ++ xdir_fs = g_strdup_printf ("%s\\" XCHAT_DIR, out); ++ } ++ return xdir_fs; ++} ++ ++#else ++ ++char * ++get_xdir_fs (void) ++{ ++ if (!xdir_fs) ++ xdir_fs = g_strdup_printf ("%s/" XCHAT_DIR, g_get_home_dir ()); ++ ++ return xdir_fs; ++} ++ ++#endif /* !WIN32 */ ++ ++char * ++get_xdir_utf8 (void) ++{ ++ if (!xdir_utf) /* never free this, keep it for program life time */ ++ xdir_utf = xchat_filename_to_utf8 (get_xdir_fs (), -1, 0, 0, 0); ++ ++ return xdir_utf; ++} ++ ++static void ++check_prefs_dir (void) ++{ ++ char *dir = get_xdir_fs (); ++ if (access (dir, F_OK) != 0) ++ { ++#ifdef WIN32 ++ if (mkdir (dir) != 0) ++#else ++ if (mkdir (dir, S_IRUSR | S_IWUSR | S_IXUSR) != 0) ++#endif ++ fe_message (_("Cannot create ~/.xchat2"), FE_MSG_ERROR); ++ } ++} ++ ++static char * ++default_file (void) ++{ ++ static char *dfile = 0; ++ ++ if (!dfile) ++ { ++ dfile = malloc (strlen (get_xdir_fs ()) + 12); ++ sprintf (dfile, "%s/xchat.conf", get_xdir_fs ()); ++ } ++ return dfile; ++} ++ ++/* Keep these sorted!! */ ++ ++const struct prefs vars[] = { ++ {"auto_save", P_OFFINT (autosave), TYPE_BOOL}, ++ {"auto_save_url", P_OFFINT (autosave_url), TYPE_BOOL}, ++ ++ {"away_auto_unmark", P_OFFINT (auto_unmark_away), TYPE_BOOL}, ++ {"away_reason", P_OFFSET (awayreason), TYPE_STR}, ++ {"away_show_message", P_OFFINT (show_away_message), TYPE_BOOL}, ++ {"away_show_once", P_OFFINT (show_away_once), TYPE_BOOL}, ++ {"away_size_max", P_OFFINT (away_size_max), TYPE_INT}, ++ {"away_timeout", P_OFFINT (away_timeout), TYPE_INT}, ++ {"away_track", P_OFFINT (away_track), TYPE_BOOL}, ++ ++ {"completion_amount", P_OFFINT (completion_amount), TYPE_INT}, ++ {"completion_auto", P_OFFINT (nickcompletion), TYPE_BOOL}, ++ {"completion_sort", P_OFFINT (completion_sort), TYPE_INT}, ++ {"completion_suffix", P_OFFSET (nick_suffix), TYPE_STR}, ++ ++ {"dcc_auto_chat", P_OFFINT (autodccchat), TYPE_INT}, ++ {"dcc_auto_resume", P_OFFINT (autoresume), TYPE_BOOL}, ++ {"dcc_auto_send", P_OFFINT (autodccsend), TYPE_INT}, ++ {"dcc_blocksize", P_OFFINT (dcc_blocksize), TYPE_INT}, ++ {"dcc_completed_dir", P_OFFSET (dcc_completed_dir), TYPE_STR}, ++ {"dcc_dir", P_OFFSET (dccdir), TYPE_STR}, ++ {"dcc_fast_send", P_OFFINT (fastdccsend), TYPE_BOOL}, ++ {"dcc_global_max_get_cps", P_OFFINT (dcc_global_max_get_cps), TYPE_INT}, ++ {"dcc_global_max_send_cps", P_OFFINT (dcc_global_max_send_cps), TYPE_INT}, ++ {"dcc_ip", P_OFFSET (dcc_ip_str), TYPE_STR}, ++ {"dcc_ip_from_server", P_OFFINT (ip_from_server), TYPE_BOOL}, ++ {"dcc_max_get_cps", P_OFFINT (dcc_max_get_cps), TYPE_INT}, ++ {"dcc_max_send_cps", P_OFFINT (dcc_max_send_cps), TYPE_INT}, ++ {"dcc_permissions", P_OFFINT (dccpermissions), TYPE_INT}, ++ {"dcc_port_first", P_OFFINT (first_dcc_send_port), TYPE_INT}, ++ {"dcc_port_last", P_OFFINT (last_dcc_send_port), TYPE_INT}, ++ {"dcc_remove", P_OFFINT (dcc_remove), TYPE_BOOL}, ++ {"dcc_save_nick", P_OFFINT (dccwithnick), TYPE_BOOL}, ++ {"dcc_send_fillspaces", P_OFFINT (dcc_send_fillspaces), TYPE_BOOL}, ++ {"dcc_stall_timeout", P_OFFINT (dccstalltimeout), TYPE_INT}, ++ {"dcc_timeout", P_OFFINT (dcctimeout), TYPE_INT}, ++ ++ {"dnsprogram", P_OFFSET (dnsprogram), TYPE_STR}, ++ ++ {"flood_ctcp_num", P_OFFINT (ctcp_number_limit), TYPE_INT}, ++ {"flood_ctcp_time", P_OFFINT (ctcp_time_limit), TYPE_INT}, ++ {"flood_msg_num", P_OFFINT (msg_number_limit), TYPE_INT}, ++ {"flood_msg_time", P_OFFINT (msg_time_limit), TYPE_INT}, ++ ++ {"gui_auto_open_chat", P_OFFINT (autoopendccchatwindow), TYPE_BOOL}, ++ {"gui_auto_open_dialog", P_OFFINT (autodialog), TYPE_BOOL}, ++ {"gui_auto_open_recv", P_OFFINT (autoopendccrecvwindow), TYPE_BOOL}, ++ {"gui_auto_open_send", P_OFFINT (autoopendccsendwindow), TYPE_BOOL}, ++ {"gui_dialog_height", P_OFFINT (dialog_height), TYPE_INT}, ++ {"gui_dialog_left", P_OFFINT (dialog_left), TYPE_INT}, ++ {"gui_dialog_top", P_OFFINT (dialog_top), TYPE_INT}, ++ {"gui_dialog_width", P_OFFINT (dialog_width), TYPE_INT}, ++ {"gui_hide_menu", P_OFFINT (hidemenu), TYPE_BOOL}, ++ {"gui_input_spell", P_OFFINT (gui_input_spell), TYPE_BOOL}, ++ {"gui_input_style", P_OFFINT (style_inputbox), TYPE_BOOL}, ++ {"gui_join_dialog", P_OFFINT (gui_join_dialog), TYPE_BOOL}, ++ {"gui_lagometer", P_OFFINT (lagometer), TYPE_INT}, ++ {"gui_mode_buttons", P_OFFINT (chanmodebuttons), TYPE_BOOL}, ++ {"gui_pane_left_size", P_OFFINT (gui_pane_left_size), TYPE_INT}, ++ {"gui_pane_right_size", P_OFFINT (gui_pane_right_size), TYPE_INT}, ++ {"gui_quit_dialog", P_OFFINT (gui_quit_dialog), TYPE_BOOL}, ++ {"gui_slist_select", P_OFFINT (slist_select), TYPE_INT}, ++ {"gui_slist_skip", P_OFFINT (slist_skip), TYPE_BOOL}, ++ {"gui_throttlemeter", P_OFFINT (throttlemeter), TYPE_INT}, ++ {"gui_topicbar", P_OFFINT (topicbar), TYPE_BOOL}, ++ {"gui_tray", P_OFFINT (gui_tray), TYPE_BOOL}, ++ {"gui_tray_flags", P_OFFINT (gui_tray_flags), TYPE_INT}, ++ {"gui_tweaks", P_OFFINT (gui_tweaks), TYPE_INT}, ++ {"gui_ulist_buttons", P_OFFINT (userlistbuttons), TYPE_BOOL}, ++ {"gui_ulist_doubleclick", P_OFFSET (doubleclickuser), TYPE_STR}, ++ {"gui_ulist_hide", P_OFFINT (hideuserlist), TYPE_BOOL}, ++ {"gui_ulist_left", P_OFFINT (_gui_ulist_left), TYPE_BOOL}, /* obsolete */ ++ {"gui_ulist_pos", P_OFFINT (gui_ulist_pos), TYPE_INT}, ++ {"gui_ulist_resizable", P_OFFINT (paned_userlist), TYPE_BOOL}, ++ {"gui_ulist_show_hosts", P_OFFINT(showhostname_in_userlist), TYPE_BOOL}, ++ {"gui_ulist_sort", P_OFFINT (userlist_sort), TYPE_INT}, ++ {"gui_ulist_style", P_OFFINT (style_namelistgad), TYPE_BOOL}, ++ {"gui_url_mod", P_OFFINT (gui_url_mod), TYPE_INT}, ++ {"gui_usermenu", P_OFFINT (gui_usermenu), TYPE_BOOL}, ++ {"gui_win_height", P_OFFINT (mainwindow_height), TYPE_INT}, ++ {"gui_win_left", P_OFFINT (mainwindow_left), TYPE_INT}, ++ {"gui_win_save", P_OFFINT (mainwindow_save), TYPE_BOOL}, ++ {"gui_win_state", P_OFFINT (gui_win_state), TYPE_INT}, ++ {"gui_win_top", P_OFFINT (mainwindow_top), TYPE_INT}, ++ {"gui_win_width", P_OFFINT (mainwindow_width), TYPE_INT}, ++ ++#ifdef WIN32 ++ {"identd", P_OFFINT (identd), TYPE_BOOL}, ++#endif ++ {"input_balloon_chans", P_OFFINT (input_balloon_chans), TYPE_BOOL}, ++ {"input_balloon_hilight", P_OFFINT (input_balloon_hilight), TYPE_BOOL}, ++ {"input_balloon_priv", P_OFFINT (input_balloon_priv), TYPE_BOOL}, ++ {"input_balloon_time", P_OFFINT (input_balloon_time), TYPE_INT}, ++ {"input_beep_chans", P_OFFINT (input_beep_chans), TYPE_BOOL}, ++ {"input_beep_hilight", P_OFFINT (input_beep_hilight), TYPE_BOOL}, ++ {"input_beep_msg", P_OFFINT (input_beep_priv), TYPE_BOOL}, ++ {"input_command_char", P_OFFSET (cmdchar), TYPE_STR}, ++ {"input_filter_beep", P_OFFINT (filterbeep), TYPE_BOOL}, ++ {"input_flash_chans", P_OFFINT (input_flash_chans), TYPE_BOOL}, ++ {"input_flash_hilight", P_OFFINT (input_flash_hilight), TYPE_BOOL}, ++ {"input_flash_priv", P_OFFINT (input_flash_priv), TYPE_BOOL}, ++ {"input_perc_ascii", P_OFFINT (perc_ascii), TYPE_BOOL}, ++ {"input_perc_color", P_OFFINT (perc_color), TYPE_BOOL}, ++ {"input_tray_chans", P_OFFINT (input_tray_chans), TYPE_BOOL}, ++ {"input_tray_hilight", P_OFFINT (input_tray_hilight), TYPE_BOOL}, ++ {"input_tray_priv", P_OFFINT (input_tray_priv), TYPE_BOOL}, ++ ++ {"irc_auto_rejoin", P_OFFINT (autorejoin), TYPE_BOOL}, ++ {"irc_ban_type", P_OFFINT (bantype), TYPE_INT}, ++ {"irc_conf_mode", P_OFFINT (confmode), TYPE_BOOL}, ++ {"irc_extra_hilight", P_OFFSET (irc_extra_hilight), TYPE_STR}, ++ {"irc_hide_version", P_OFFINT (hidever), TYPE_BOOL}, ++ {"irc_id_ntext", P_OFFSET (irc_id_ntext), TYPE_STR}, ++ {"irc_id_ytext", P_OFFSET (irc_id_ytext), TYPE_STR}, ++ {"irc_invisible", P_OFFINT (invisible), TYPE_BOOL}, ++ {"irc_join_delay", P_OFFINT (irc_join_delay), TYPE_INT}, ++ {"irc_logging", P_OFFINT (logging), TYPE_BOOL}, ++ {"irc_logmask", P_OFFSET (logmask), TYPE_STR}, ++ {"irc_nick1", P_OFFSET (nick1), TYPE_STR}, ++ {"irc_nick2", P_OFFSET (nick2), TYPE_STR}, ++ {"irc_nick3", P_OFFSET (nick3), TYPE_STR}, ++ {"irc_nick_hilight", P_OFFSET (irc_nick_hilight), TYPE_STR}, ++ {"irc_no_hilight", P_OFFSET (irc_no_hilight), TYPE_STR}, ++ {"irc_part_reason", P_OFFSET (partreason), TYPE_STR}, ++ {"irc_quit_reason", P_OFFSET (quitreason), TYPE_STR}, ++ {"irc_raw_modes", P_OFFINT (raw_modes), TYPE_BOOL}, ++ {"irc_real_name", P_OFFSET (realname), TYPE_STR}, ++ {"irc_servernotice", P_OFFINT (servernotice), TYPE_BOOL}, ++ {"irc_skip_motd", P_OFFINT (skipmotd), TYPE_BOOL}, ++ {"irc_user_name", P_OFFSET (username), TYPE_STR}, ++ {"irc_wallops", P_OFFINT (wallops), TYPE_BOOL}, ++ {"irc_who_join", P_OFFINT (userhost), TYPE_BOOL}, ++ {"irc_whois_front", P_OFFINT (irc_whois_front), TYPE_BOOL}, ++ ++ {"net_auto_reconnect", P_OFFINT (autoreconnect), TYPE_BOOL}, ++ {"net_auto_reconnectonfail", P_OFFINT (autoreconnectonfail), TYPE_BOOL}, ++ {"net_bind_host", P_OFFSET (hostname), TYPE_STR}, ++ {"net_ping_timeout", P_OFFINT (pingtimeout), TYPE_INT}, ++ {"net_proxy_auth", P_OFFINT (proxy_auth), TYPE_BOOL}, ++ {"net_proxy_host", P_OFFSET (proxy_host), TYPE_STR}, ++ {"net_proxy_pass", P_OFFSET (proxy_pass), TYPE_STR}, ++ {"net_proxy_port", P_OFFINT (proxy_port), TYPE_INT}, ++ {"net_proxy_type", P_OFFINT (proxy_type), TYPE_INT}, ++ {"net_proxy_use", P_OFFINT (proxy_use), TYPE_INT}, ++ {"net_proxy_user", P_OFFSET (proxy_user), TYPE_STR}, ++ ++ {"net_reconnect_delay", P_OFFINT (recon_delay), TYPE_INT}, ++ {"net_throttle", P_OFFINT (throttle), TYPE_BOOL}, ++ ++ {"notify_timeout", P_OFFINT (notify_timeout), TYPE_INT}, ++ {"notify_whois_online", P_OFFINT (whois_on_notifyonline), TYPE_BOOL}, ++ ++ {"perl_warnings", P_OFFINT (perlwarnings), TYPE_BOOL}, ++ ++ {"sound_command", P_OFFSET (soundcmd), TYPE_STR}, ++ {"sound_dir", P_OFFSET (sounddir), TYPE_STR}, ++ {"stamp_log", P_OFFINT (timestamp_logs), TYPE_BOOL}, ++ {"stamp_log_format", P_OFFSET (timestamp_log_format), TYPE_STR}, ++ {"stamp_text", P_OFFINT (timestamp), TYPE_BOOL}, ++ {"stamp_text_format", P_OFFSET (stamp_format), TYPE_STR}, ++ ++ {"tab_chans", P_OFFINT (tabchannels), TYPE_BOOL}, ++ {"tab_dialogs", P_OFFINT (privmsgtab), TYPE_BOOL}, ++ {"tab_layout", P_OFFINT (tab_layout), TYPE_INT}, ++ {"tab_new_to_front", P_OFFINT (newtabstofront), TYPE_INT}, ++ {"tab_notices", P_OFFINT (notices_tabs), TYPE_BOOL}, ++ {"tab_pos", P_OFFINT (tab_pos), TYPE_INT}, ++ {"tab_position", P_OFFINT (_tabs_position), TYPE_INT}, /* obsolete */ ++ {"tab_server", P_OFFINT (use_server_tab), TYPE_BOOL}, ++ {"tab_small", P_OFFINT (tab_small), TYPE_INT}, ++ {"tab_sort", P_OFFINT (tab_sort), TYPE_BOOL}, ++ {"tab_trunc", P_OFFINT (truncchans), TYPE_INT}, ++ {"tab_utils", P_OFFINT (windows_as_tabs), TYPE_BOOL}, ++ ++ {"text_background", P_OFFSET (background), TYPE_STR}, ++ {"text_color_nicks", P_OFFINT (colorednicks), TYPE_BOOL}, ++ {"text_font", P_OFFSET (font_normal), TYPE_STR}, ++ {"text_indent", P_OFFINT (indent_nicks), TYPE_BOOL}, ++ {"text_max_indent", P_OFFINT (max_auto_indent), TYPE_INT}, ++ {"text_max_lines", P_OFFINT (max_lines), TYPE_INT}, ++ {"text_replay", P_OFFINT (text_replay), TYPE_BOOL}, ++ {"text_show_marker", P_OFFINT (show_marker), TYPE_BOOL}, ++ {"text_show_sep", P_OFFINT (show_separator), TYPE_BOOL}, ++ {"text_stripcolor", P_OFFINT (stripcolor), TYPE_BOOL}, ++ {"text_thin_sep", P_OFFINT (thin_separator), TYPE_BOOL}, ++ {"text_tint_blue", P_OFFINT (tint_blue), TYPE_INT}, ++ {"text_tint_green", P_OFFINT (tint_green), TYPE_INT}, ++ {"text_tint_red", P_OFFINT (tint_red), TYPE_INT}, ++ {"text_transparent", P_OFFINT (transparent), TYPE_BOOL}, ++ {"text_wordwrap", P_OFFINT (wordwrap), TYPE_BOOL}, ++ ++ {0, 0, 0}, ++}; ++ ++static char * ++convert_with_fallback (const char *str, const char *fallback) ++{ ++ char *utf; ++ ++ utf = g_locale_to_utf8 (str, -1, 0, 0, 0); ++ if (!utf) ++ { ++ /* this can happen if CHARSET envvar is set wrong */ ++ /* maybe it's already utf8 (breakage!) */ ++ if (!g_utf8_validate (str, -1, NULL)) ++ utf = g_strdup (fallback); ++ else ++ utf = g_strdup (str); ++ } ++ ++ return utf; ++} ++ ++void ++load_config (void) ++{ ++ struct stat st; ++ char *cfg, *sp; ++ const char *username, *realname; ++ int res, val, i, fh; ++ ++ check_prefs_dir (); ++ username = g_get_user_name (); ++ if (!username) ++ username = "root"; ++ ++ realname = g_get_real_name (); ++ if ((realname && realname[0] == 0) || !realname) ++ realname = username; ++ ++ username = convert_with_fallback (username, "username"); ++ realname = convert_with_fallback (realname, "realname"); ++ ++ memset (&prefs, 0, sizeof (struct xchatprefs)); ++ ++ /* put in default values, anything left out is automatically zero */ ++ prefs.local_ip = 0xffffffff; ++ prefs.irc_join_delay = 3; ++ prefs.show_marker = 1; ++ prefs.newtabstofront = 2; ++ prefs.completion_amount = 5; ++ prefs.away_timeout = 60; ++ prefs.away_size_max = 300; ++ prefs.away_track = 1; ++ prefs.timestamp_logs = 1; ++ prefs.truncchans = 20; ++ prefs.autoresume = 1; ++ prefs.show_away_once = 1; ++ prefs.indent_nicks = 1; ++ prefs.thin_separator = 1; ++ prefs._tabs_position = 2; /* 2 = left */ ++ prefs.fastdccsend = 1; ++ prefs.wordwrap = 1; ++ prefs.autosave = 1; ++ prefs.autodialog = 1; ++ prefs.gui_input_spell = 1; ++ prefs.autoreconnect = 1; ++ prefs.recon_delay = 10; ++ prefs.text_replay = 1; ++ prefs.tabchannels = 1; ++ prefs.tab_layout = 2; /* 0=Tabs 1=Reserved 2=Tree */ ++ prefs.tab_sort = 1; ++ prefs.paned_userlist = 1; ++ prefs.newtabstofront = 2; ++ prefs.use_server_tab = 1; ++ prefs.privmsgtab = 1; ++ /*prefs.style_inputbox = 1;*/ ++ prefs.dccpermissions = 0600; ++ prefs.max_lines = 500; ++ prefs.mainwindow_width = 640; ++ prefs.mainwindow_height = 400; ++ prefs.dialog_width = 500; ++ prefs.dialog_height = 256; ++ prefs.gui_join_dialog = 1; ++ prefs.gui_quit_dialog = 1; ++ prefs.dcctimeout = 180; ++ prefs.dccstalltimeout = 60; ++ prefs.notify_timeout = 15; ++ prefs.tint_red = ++ prefs.tint_green = ++ prefs.tint_blue = 195; ++ prefs.auto_indent = 1; ++ prefs.max_auto_indent = 256; ++ prefs.show_separator = 1; ++ prefs.dcc_blocksize = 1024; ++ prefs.throttle = 1; ++ /*FIXME*/ prefs.msg_time_limit = 30; ++ prefs.msg_number_limit = 5; ++ prefs.ctcp_time_limit = 30; ++ prefs.ctcp_number_limit = 5; ++ prefs.topicbar = 1; ++ prefs.lagometer = 1; ++ prefs.throttlemeter = 1; ++ prefs.autoopendccrecvwindow = 1; ++ prefs.autoopendccsendwindow = 1; ++ prefs.autoopendccchatwindow = 1; ++ prefs.userhost = 1; ++ prefs.gui_url_mod = 4; /* ctrl */ ++ prefs.gui_tray = 1; ++ prefs.gui_pane_left_size = 100; ++ prefs.gui_pane_right_size = 100; ++ prefs.mainwindow_save = 1; ++ prefs.bantype = 2; ++ prefs.input_balloon_time = 20; ++ prefs.input_flash_priv = prefs.input_flash_hilight = 1; ++ prefs.input_tray_priv = prefs.input_tray_hilight = 1; ++ prefs.autodccsend = 2; /* browse mode */ ++#ifdef WIN32 ++ prefs.identd = 1; ++#endif ++ strcpy (prefs.stamp_format, "[%H:%M] "); ++ strcpy (prefs.timestamp_log_format, "%b %d %H:%M:%S "); ++ strcpy (prefs.logmask, "%n-%c.log"); ++ strcpy (prefs.nick_suffix, ","); ++ strcpy (prefs.cmdchar, "/"); ++ strcpy (prefs.nick1, username); ++ strcpy (prefs.nick2, username); ++ strcat (prefs.nick2, "_"); ++ strcpy (prefs.nick3, username); ++ strcat (prefs.nick3, "__"); ++ strcpy (prefs.realname, realname); ++ strcpy (prefs.username, username); ++#ifdef WIN32 ++ strcpy (prefs.sounddir, "./sounds"); ++ { ++ char out[256]; ++ ++ if (get_reg_str ("Software\\Microsoft\\Windows\\CurrentVersion\\" ++ "Explorer\\Shell Folders", "Personal", out, sizeof (out))) ++ snprintf (prefs.dccdir, sizeof (prefs.dccdir), "%s\\Downloads", out); ++ else ++ snprintf (prefs.dccdir, sizeof (prefs.dccdir), "%s\\Downloads", get_xdir_utf8 ()); ++ } ++#else ++ snprintf (prefs.sounddir, sizeof (prefs.sounddir), "%s/sounds", get_xdir_utf8 ()); ++ snprintf (prefs.dccdir, sizeof (prefs.dccdir), "%s/downloads", get_xdir_utf8 ()); ++#endif ++ strcpy (prefs.doubleclickuser, "QUOTE WHOIS %s %s"); ++ strcpy (prefs.awayreason, _("I'm busy")); ++ strcpy (prefs.quitreason, _("Leaving")); ++ strcpy (prefs.partreason, prefs.quitreason); ++ strcpy (prefs.font_normal, DEF_FONT); ++ strcpy (prefs.dnsprogram, "host"); ++ strcpy (prefs.irc_no_hilight, "NickServ,ChanServ"); ++ ++ g_free ((char *)username); ++ g_free ((char *)realname); ++ ++ fh = open (default_file (), OFLAGS | O_RDONLY); ++ if (fh != -1) ++ { ++ fstat (fh, &st); ++ cfg = malloc (st.st_size + 1); ++ cfg[0] = '\0'; ++ i = read (fh, cfg, st.st_size); ++ if (i >= 0) ++ cfg[i] = '\0'; /* make sure cfg is NULL terminated */ ++ close (fh); ++ i = 0; ++ do ++ { ++ switch (vars[i].type) ++ { ++ case TYPE_STR: ++ cfg_get_str (cfg, vars[i].name, (char *) &prefs + vars[i].offset, ++ vars[i].len); ++ break; ++ case TYPE_BOOL: ++ case TYPE_INT: ++ val = cfg_get_int_with_result (cfg, vars[i].name, &res); ++ if (res) ++ *((int *) &prefs + vars[i].offset) = val; ++ break; ++ } ++ i++; ++ } ++ while (vars[i].name); ++ ++ free (cfg); ++ ++ } else ++ { ++#ifndef WIN32 ++#ifndef __EMX__ ++ /* OS/2 uses UID 0 all the time */ ++ if (getuid () == 0) ++ fe_message (_("* Running IRC as root is stupid! You should\n" ++ " create a User Account and use that to login.\n"), FE_MSG_WARN|FE_MSG_WAIT); ++#endif ++#endif /* !WIN32 */ ++ ++ mkdir_utf8 (prefs.dccdir); ++ mkdir_utf8 (prefs.dcc_completed_dir); ++ } ++ if (prefs.mainwindow_height < 138) ++ prefs.mainwindow_height = 138; ++ if (prefs.mainwindow_width < 106) ++ prefs.mainwindow_width = 106; ++ ++ sp = strchr (prefs.username, ' '); ++ if (sp) ++ sp[0] = 0; /* spaces in username would break the login */ ++ ++ /* try to make sense of old ulist/tree position settings */ ++ if (prefs.gui_ulist_pos == 0) ++ { ++ prefs.gui_ulist_pos = 3; /* top right */ ++ if (prefs._gui_ulist_left) ++ prefs.gui_ulist_pos = 2; /* bottom left */ ++ ++ switch (prefs._tabs_position) ++ { ++ case 0: ++ prefs.tab_pos = 6; /* bottom */ ++ break; ++ case 1: ++ prefs.tab_pos = 5; /* top */ ++ break; ++ case 2: ++ prefs.tab_pos = 1; /* left */ ++ break; ++ case 3: ++ prefs.tab_pos = 4; /* right */ ++ break; ++ case 4: ++ prefs.tab_pos = 1; /* (hidden)left */ ++ break; ++ case 5: ++ if (prefs._gui_ulist_left) ++ { ++ prefs.tab_pos = 1; /* above ulist left */ ++ prefs.gui_ulist_pos = 2; ++ } ++ else ++ { ++ prefs.tab_pos = 3; /* above ulist right */ ++ prefs.gui_ulist_pos = 4; ++ } ++ break; ++ } ++ } ++} ++ ++int ++save_config (void) ++{ ++ int fh, i; ++ char *new_config, *config; ++ ++ check_prefs_dir (); ++ ++ config = default_file (); ++ new_config = malloc (strlen (config) + 5); ++ strcpy (new_config, config); ++ strcat (new_config, ".new"); ++ ++ fh = open (new_config, OFLAGS | O_TRUNC | O_WRONLY | O_CREAT, 0600); ++ if (fh == -1) ++ { ++ free (new_config); ++ return 0; ++ } ++ ++ if (!cfg_put_str (fh, "version", PACKAGE_VERSION)) ++ { ++ free (new_config); ++ return 0; ++ } ++ ++ i = 0; ++ do ++ { ++ switch (vars[i].type) ++ { ++ case TYPE_STR: ++ if (!cfg_put_str (fh, vars[i].name, (char *) &prefs + vars[i].offset)) ++ { ++ free (new_config); ++ return 0; ++ } ++ break; ++ case TYPE_INT: ++ case TYPE_BOOL: ++ if (!cfg_put_int (fh, *((int *) &prefs + vars[i].offset), vars[i].name)) ++ { ++ free (new_config); ++ return 0; ++ } ++ } ++ i++; ++ } ++ while (vars[i].name); ++ ++ if (close (fh) == -1) ++ { ++ free (new_config); ++ return 0; ++ } ++ ++#ifdef WIN32 ++ unlink (config); /* win32 can't rename to an existing file */ ++#endif ++ if (rename (new_config, config) == -1) ++ { ++ free (new_config); ++ return 0; ++ } ++ free (new_config); ++ ++ return 1; ++} ++ ++static void ++set_showval (session *sess, const struct prefs *var, char *tbuf) ++{ ++ int len, dots, j; ++ ++ len = strlen (var->name); ++ memcpy (tbuf, var->name, len); ++ dots = 29 - len; ++ if (dots < 0) ++ dots = 0; ++ tbuf[len++] = '\003'; ++ tbuf[len++] = '2'; ++ for (j=0;jtype) ++ { ++ case TYPE_STR: ++ sprintf (tbuf + len, "\0033:\017 %s\n", ++ (char *) &prefs + var->offset); ++ break; ++ case TYPE_INT: ++ sprintf (tbuf + len, "\0033:\017 %d\n", ++ *((int *) &prefs + var->offset)); ++ break; ++ case TYPE_BOOL: ++ if (*((int *) &prefs + var->offset)) ++ sprintf (tbuf + len, "\0033:\017 %s\n", "ON"); ++ else ++ sprintf (tbuf + len, "\0033:\017 %s\n", "OFF"); ++ break; ++ } ++ PrintText (sess, tbuf); ++} ++ ++static void ++set_list (session * sess, char *tbuf) ++{ ++ int i; ++ ++ i = 0; ++ do ++ { ++ set_showval (sess, &vars[i], tbuf); ++ i++; ++ } ++ while (vars[i].name); ++} ++ ++int ++cfg_get_bool (char *var) ++{ ++ int i = 0; ++ ++ do ++ { ++ if (!strcasecmp (var, vars[i].name)) ++ { ++ return *((int *) &prefs + vars[i].offset); ++ } ++ i++; ++ } ++ while (vars[i].name); ++ ++ return -1; ++} ++ ++int ++cmd_set (struct session *sess, char *tbuf, char *word[], char *word_eol[]) ++{ ++ int wild = FALSE; ++ int or = FALSE; ++ int off = FALSE; ++ int quiet = FALSE; ++ int erase = FALSE; ++ int i = 0, finds = 0, found; ++ int idx = 2; ++ char *var, *val; ++ ++ if (strcasecmp (word[2], "-e") == 0) ++ { ++ idx++; ++ erase = TRUE; ++ } ++ ++ /* turn a bit OFF */ ++ if (strcasecmp (word[idx], "-off") == 0) ++ { ++ idx++; ++ off = TRUE; ++ } ++ ++ /* turn a bit ON */ ++ if (strcasecmp (word[idx], "-or") == 0 || strcasecmp (word[idx], "-on") == 0) ++ { ++ idx++; ++ or = TRUE; ++ } ++ ++ if (strcasecmp (word[idx], "-quiet") == 0) ++ { ++ idx++; ++ quiet = TRUE; ++ } ++ ++ var = word[idx]; ++ val = word_eol[idx+1]; ++ ++ if (!*var) ++ { ++ set_list (sess, tbuf); ++ return TRUE; ++ } ++ ++ if ((strchr (var, '*') || strchr (var, '?')) && !*val) ++ wild = TRUE; ++ ++ if (*val == '=') ++ val++; ++ ++ do ++ { ++ if (wild) ++ found = !match (var, vars[i].name); ++ else ++ found = strcasecmp (var, vars[i].name); ++ ++ if (found == 0) ++ { ++ finds++; ++ switch (vars[i].type) ++ { ++ case TYPE_STR: ++ if (erase || *val) ++ { ++ strncpy ((char *) &prefs + vars[i].offset, val, vars[i].len); ++ ((char *) &prefs)[vars[i].offset + vars[i].len - 1] = 0; ++ if (!quiet) ++ PrintTextf (sess, "%s set to: %s\n", var, (char *) &prefs + vars[i].offset); ++ } else ++ { ++ set_showval (sess, &vars[i], tbuf); ++ } ++ break; ++ case TYPE_INT: ++ case TYPE_BOOL: ++ if (*val) ++ { ++ if (vars[i].type == TYPE_BOOL) ++ { ++ if (atoi (val)) ++ *((int *) &prefs + vars[i].offset) = 1; ++ else ++ *((int *) &prefs + vars[i].offset) = 0; ++ if (!strcasecmp (val, "YES") || !strcasecmp (val, "ON")) ++ *((int *) &prefs + vars[i].offset) = 1; ++ if (!strcasecmp (val, "NO") || !strcasecmp (val, "OFF")) ++ *((int *) &prefs + vars[i].offset) = 0; ++ } else ++ { ++ if (or) ++ *((int *) &prefs + vars[i].offset) |= atoi (val); ++ else if (off) ++ *((int *) &prefs + vars[i].offset) &= ~(atoi (val)); ++ else ++ *((int *) &prefs + vars[i].offset) = atoi (val); ++ } ++ if (!quiet) ++ PrintTextf (sess, "%s set to: %d\n", var, ++ *((int *) &prefs + vars[i].offset)); ++ } else ++ { ++ set_showval (sess, &vars[i], tbuf); ++ } ++ break; ++ } ++ } ++ i++; ++ } ++ while (vars[i].name); ++ ++ if (!finds && !quiet) ++ PrintText (sess, "No such variable.\n"); ++ ++ return TRUE; ++} ++ ++int ++xchat_open_file (char *file, int flags, int mode, int xof_flags) ++{ ++ char buf[1024]; ++ ++ if (xof_flags & XOF_FULLPATH) ++ { ++ if (xof_flags & XOF_DOMODE) ++ return open (file, flags | OFLAGS, mode); ++ else ++ return open (file, flags | OFLAGS); ++ } ++ ++ snprintf (buf, sizeof (buf), "%s/%s", get_xdir_fs (), file); ++ if (xof_flags & XOF_DOMODE) ++ return open (buf, flags | OFLAGS, mode); ++ else ++ return open (buf, flags | OFLAGS); ++} ++ ++FILE * ++xchat_fopen_file (const char *file, const char *mode, int xof_flags) ++{ ++ char buf[1024]; ++ ++ if (xof_flags & XOF_FULLPATH) ++ return fopen (file, mode); ++ ++ snprintf (buf, sizeof (buf), "%s/%s", get_xdir_fs (), file); ++ return fopen (buf, mode); ++} +diff -urNp xchat-2.8.8.orig/src/common/xchat.h xchat-2.8.8/src/common/xchat.h +--- xchat-2.8.8.orig/src/common/xchat.h 2013-06-10 14:26:55.885425482 +0200 ++++ xchat-2.8.8/src/common/xchat.h 2013-06-10 14:27:23.748503597 +0200 +@@ -1,6 +1,7 @@ + #include "../../config.h" + + #include ++#include + #include /* need time_t */ + + #ifndef XCHAT_H diff --git a/xchat.spec b/xchat.spec index ee26d1a..cc3dfc6 100644 --- a/xchat.spec +++ b/xchat.spec @@ -4,7 +4,7 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat Version: 2.8.8 -Release: 18%{?dist} +Release: 19%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ @@ -48,6 +48,10 @@ Patch53: xchat-2.8.8-link-against-libnotify.patch Patch54: xchat-2.8.8-glib.patch # http://sourceforge.net/p/xchat/bugs/1504/ Patch55: xchat-2.8.8-hires-icons.patch +# http://sourceforge.net/p/xchat/bugs/1506/ +Patch56: xchat-2.8.8-xdg-dirs.patch +# http://sourceforge.net/p/xchat/bugs/1397/ +Patch57: xchat-2.8.8-desktop-file-name.patch BuildRequires: perl perl(ExtUtils::Embed) python-devel openssl-devel pkgconfig, tcl-devel BuildRequires: GConf2-devel @@ -107,6 +111,8 @@ This package contains the X-Chat plugin providing the Tcl scripting interface. %patch53 -p1 -b .link-against-libnotify %patch54 -p0 -b .glib %patch55 -p1 -b .hires-icons +%patch56 -p1 -b .xdg-dirs +%patch57 -p1 -b .desktop-file-name sed -i -e 's/#define GTK_DISABLE_DEPRECATED//g' src/fe-gtk/*.c @@ -207,6 +213,12 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Mon Jun 10 2013 Debarshi Ray - 1:2.8.8-19 +- Use XDG_CONFIG_HOME instead of home for config files + (http://sourceforge.net/p/xchat/bugs/1506/) +- Use name and generic name correctly in desktop file + (http://sourceforge.net/p/xchat/bugs/1397/) + * Fri Jun 07 2013 Debarshi Ray - 1:2.8.8-18 - Add hi-res icons (http://sourceforge.net/p/xchat/bugs/1504/) From 682808ebcbfd00b412512ed3af76b6df5cf08c61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Wed, 17 Jul 2013 22:12:25 +0200 Subject: [PATCH 34/55] Perl 5.18 rebuild --- xchat.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xchat.spec b/xchat.spec index cc3dfc6..473b321 100644 --- a/xchat.spec +++ b/xchat.spec @@ -4,7 +4,7 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat Version: 2.8.8 -Release: 19%{?dist} +Release: 20%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ @@ -213,6 +213,9 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Wed Jul 17 2013 Petr Pisar - 1:2.8.8-20 +- Perl 5.18 rebuild + * Mon Jun 10 2013 Debarshi Ray - 1:2.8.8-19 - Use XDG_CONFIG_HOME instead of home for config files (http://sourceforge.net/p/xchat/bugs/1506/) From a69bdbc58b964b2a00f8000b5050b4cd2230f8b0 Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Sun, 4 Aug 2013 02:42:21 -0500 Subject: [PATCH 35/55] - Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild --- xchat.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xchat.spec b/xchat.spec index 473b321..d86b21e 100644 --- a/xchat.spec +++ b/xchat.spec @@ -4,7 +4,7 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat Version: 2.8.8 -Release: 20%{?dist} +Release: 21%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ @@ -213,6 +213,9 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Sun Aug 04 2013 Fedora Release Engineering - 1:2.8.8-21 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + * Wed Jul 17 2013 Petr Pisar - 1:2.8.8-20 - Perl 5.18 rebuild From b609cb42086c15b035a4a13d67ca953b17eee2b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20=C5=A0karvada?= Date: Wed, 21 May 2014 11:54:25 +0200 Subject: [PATCH 36/55] - Rebuilt for https://fedoraproject.org/wiki/Changes/f21tcl86 --- xchat.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xchat.spec b/xchat.spec index d86b21e..7312ecb 100644 --- a/xchat.spec +++ b/xchat.spec @@ -4,7 +4,7 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat Version: 2.8.8 -Release: 21%{?dist} +Release: 22%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ @@ -213,6 +213,9 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Wed May 21 2014 Jaroslav Škarvada - 1:2.8.8-22 +- Rebuilt for https://fedoraproject.org/wiki/Changes/f21tcl86 + * Sun Aug 04 2013 Fedora Release Engineering - 1:2.8.8-21 - Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild From 3479acb82618e0bf0974631ca4b3fb8e3ae12c8d Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Sun, 8 Jun 2014 00:21:01 -0500 Subject: [PATCH 37/55] - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild --- xchat.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xchat.spec b/xchat.spec index 7312ecb..5c57cf7 100644 --- a/xchat.spec +++ b/xchat.spec @@ -4,7 +4,7 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat Version: 2.8.8 -Release: 22%{?dist} +Release: 23%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ @@ -213,6 +213,9 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Sun Jun 08 2014 Fedora Release Engineering - 1:2.8.8-23 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + * Wed May 21 2014 Jaroslav Škarvada - 1:2.8.8-22 - Rebuilt for https://fedoraproject.org/wiki/Changes/f21tcl86 From 81db550b6b9be89eabc3519f6ce2a3c1c6df958e Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 18 Aug 2014 09:24:29 +0000 Subject: [PATCH 38/55] - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild --- xchat.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xchat.spec b/xchat.spec index 5c57cf7..456bddf 100644 --- a/xchat.spec +++ b/xchat.spec @@ -4,7 +4,7 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat Version: 2.8.8 -Release: 23%{?dist} +Release: 24%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ @@ -213,6 +213,9 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Mon Aug 18 2014 Fedora Release Engineering - 1:2.8.8-24 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + * Sun Jun 08 2014 Fedora Release Engineering - 1:2.8.8-23 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild From 8ea1b71f1f986357edcf9ad43d38af7523a26037 Mon Sep 17 00:00:00 2001 From: Kevin Fenzi Date: Wed, 20 Aug 2014 17:33:45 -0600 Subject: [PATCH 39/55] Rebuild for rpm bug 1131892 --- xchat.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xchat.spec b/xchat.spec index 456bddf..7442c48 100644 --- a/xchat.spec +++ b/xchat.spec @@ -4,7 +4,7 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat Version: 2.8.8 -Release: 24%{?dist} +Release: 25%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ @@ -213,6 +213,9 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Wed Aug 20 2014 Kevin Fenzi - 1:2.8.8-25 +- Rebuild for rpm bug 1131892 + * Mon Aug 18 2014 Fedora Release Engineering - 1:2.8.8-24 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild From 6d9b58520b07fbd62cc8e44e7a267d81dfd097b3 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Wed, 27 Aug 2014 13:08:57 +0200 Subject: [PATCH 40/55] Perl 5.20 rebuild --- xchat.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xchat.spec b/xchat.spec index 7442c48..8f4be13 100644 --- a/xchat.spec +++ b/xchat.spec @@ -4,7 +4,7 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat Version: 2.8.8 -Release: 25%{?dist} +Release: 26%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ @@ -213,6 +213,9 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Wed Aug 27 2014 Jitka Plesnikova - 1:2.8.8-26 +- Perl 5.20 rebuild + * Wed Aug 20 2014 Kevin Fenzi - 1:2.8.8-25 - Rebuild for rpm bug 1131892 From dd89cb4a1527e4ed9c1713dab0939b18fe359787 Mon Sep 17 00:00:00 2001 From: Debarshi Ray Date: Wed, 29 Oct 2014 11:39:34 +0100 Subject: [PATCH 41/55] Fix the dates --- xchat.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/xchat.spec b/xchat.spec index 8f4be13..4cfd6b9 100644 --- a/xchat.spec +++ b/xchat.spec @@ -267,10 +267,10 @@ fi * Fri Jun 17 2011 Marcela Mašláňová - 1:2.8.8-10 - Perl mass rebuild -* Tue Apr 7 2011 Christopher Aillon - 1:2.8.8-9 +* Thu Apr 07 2011 Christopher Aillon - 1:2.8.8-9 - Link against libnotify (#693362) -* Tue Apr 7 2011 Christopher Aillon - 1:2.8.8-8 +* Thu Apr 07 2011 Christopher Aillon - 1:2.8.8-8 - Update the dynamic libnotify check for the newer soname (#693362) * Mon Feb 07 2011 Fedora Release Engineering - 1:2.8.8-7 From 0d239d37de243a4c57ece9a5023b22e7c048f06c Mon Sep 17 00:00:00 2001 From: Debarshi Ray Date: Wed, 29 Oct 2014 11:40:25 +0100 Subject: [PATCH 42/55] Do not force SSLv3, also allow TLSv1_X (#1091544) --- 0001-Don-t-force-the-use-of-SSLv3.patch | 37 +++++++++++++++++++++++++ xchat.spec | 8 +++++- 2 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 0001-Don-t-force-the-use-of-SSLv3.patch diff --git a/0001-Don-t-force-the-use-of-SSLv3.patch b/0001-Don-t-force-the-use-of-SSLv3.patch new file mode 100644 index 0000000..e0f0472 --- /dev/null +++ b/0001-Don-t-force-the-use-of-SSLv3.patch @@ -0,0 +1,37 @@ +From 527eb322a5bfa97d5716e7f8178e319c515065a2 Mon Sep 17 00:00:00 2001 +From: Marc Deslauriers +Date: Mon, 20 Oct 2014 10:08:26 -0400 +Subject: [PATCH] Don't force the use of SSLv3. + +SSLv3 should no longer be used for security reasons. Let the best +connection method be automatically determined by using SSLv23_client_method() +and SSLv23_server_method(). +--- + src/common/ssl.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/common/ssl.c b/src/common/ssl.c +index a18ad47..35eb237 100644 +--- a/src/common/ssl.c ++++ b/src/common/ssl.c +@@ -70,7 +70,7 @@ _SSL_context_init (void (*info_cb_func), int server) + + SSLeay_add_ssl_algorithms (); + SSL_load_error_strings (); +- ctx = SSL_CTX_new (server ? SSLv3_server_method() : SSLv3_client_method ()); ++ ctx = SSL_CTX_new (server ? SSLv23_server_method() : SSLv23_client_method ()); + + SSL_CTX_set_session_cache_mode (ctx, SSL_SESS_CACHE_BOTH); + SSL_CTX_set_timeout (ctx, 300); +@@ -281,7 +281,7 @@ _SSL_socket (SSL_CTX *ctx, int sd) + __SSL_critical_error ("SSL_new"); + + SSL_set_fd (ssl, sd); +- if (ctx->method == SSLv3_client_method()) ++ if (ctx->method == SSLv23_client_method()) + SSL_set_connect_state (ssl); + else + SSL_set_accept_state(ssl); +-- +2.1.0 + diff --git a/xchat.spec b/xchat.spec index 4cfd6b9..d4620e2 100644 --- a/xchat.spec +++ b/xchat.spec @@ -4,7 +4,7 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat Version: 2.8.8 -Release: 26%{?dist} +Release: 27%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ @@ -52,6 +52,8 @@ Patch55: xchat-2.8.8-hires-icons.patch Patch56: xchat-2.8.8-xdg-dirs.patch # http://sourceforge.net/p/xchat/bugs/1397/ Patch57: xchat-2.8.8-desktop-file-name.patch +# https://bugzilla.redhat.com/show_bug.cgi?id=1091544 +Patch58: 0001-Don-t-force-the-use-of-SSLv3.patch BuildRequires: perl perl(ExtUtils::Embed) python-devel openssl-devel pkgconfig, tcl-devel BuildRequires: GConf2-devel @@ -113,6 +115,7 @@ This package contains the X-Chat plugin providing the Tcl scripting interface. %patch55 -p1 -b .hires-icons %patch56 -p1 -b .xdg-dirs %patch57 -p1 -b .desktop-file-name +%patch58 -p1 -b .allow-tls sed -i -e 's/#define GTK_DISABLE_DEPRECATED//g' src/fe-gtk/*.c @@ -213,6 +216,9 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Wed Oct 29 2014 Debarshi Ray - 1:2.8.8-27 +- Do not force SSLv3, also allow TLSv1_X (#1091544) + * Wed Aug 27 2014 Jitka Plesnikova - 1:2.8.8-26 - Perl 5.20 rebuild From 219aca351a21058416ebe40c8a675412730955dd Mon Sep 17 00:00:00 2001 From: Richard Hughes Date: Thu, 26 Mar 2015 16:46:27 +0000 Subject: [PATCH 43/55] Add an AppData file for the software center --- xchat.spec | 48 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/xchat.spec b/xchat.spec index d4620e2..bbf9e55 100644 --- a/xchat.spec +++ b/xchat.spec @@ -4,7 +4,7 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat Version: 2.8.8 -Release: 27%{?dist} +Release: 28%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ @@ -166,6 +166,48 @@ desktop-file-install --vendor="" \ --add-category=IRCClient \ --add-category=GTK xchat.desktop +# Register as an application to be visible in the software center +# +# NOTE: It would be *awesome* if this file was maintained by the upstream +# project, translated and installed into the right place during `make install`. +# +# See http://www.freedesktop.org/software/appstream/docs/ for more details. +# +mkdir -p $RPM_BUILD_ROOT%{_datadir}/appdata +cat > $RPM_BUILD_ROOT%{_datadir}/appdata/%{name}.appdata.xml < + + + + xchat.desktop + CC0-1.0 + +

+ XChat is an Internet Relay Chat (IRC) client. + It allows you to join multiple IRC channels at the same time, which you can view + and browse using tabs or a tree-like interface. + You can use XChat to publicly chat with people in a channel, and to have private + one-on-one conversations. + You can even transfer files with XChat! +

+

+ The client includes nick completion, alerts for mentions, logging functionality, + and several customization options for fonts, sounds and colors. +

+
+ http://xchat.org/ + + https://raw.githubusercontent.com/hughsie/fedora-appstream/master/screenshots-extra/xchat/a.png + + +
+EOF + %find_lang %{name} # do not Provide plugins .so @@ -205,6 +247,7 @@ fi %dir %{_libdir}/xchat/plugins %{_libdir}/xchat/plugins/perl.so %{_libdir}/xchat/plugins/python.so +%{_datadir}/appdata/%{name}.appdata.xml %{_datadir}/applications/xchat.desktop %{_datadir}/icons/hicolor/*/apps/xchat.png %{_datadir}/pixmaps/* @@ -216,6 +259,9 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Thu Mar 26 2015 Richard Hughes - 1:2.8.8-28 +- Add an AppData file for the software center + * Wed Oct 29 2014 Debarshi Ray - 1:2.8.8-27 - Do not force SSLv3, also allow TLSv1_X (#1091544) From 44d47014c0aaab45b5433e073beae0e2789c43cd Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Fri, 5 Jun 2015 11:20:23 +0200 Subject: [PATCH 44/55] Perl 5.22 rebuild --- xchat.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xchat.spec b/xchat.spec index bbf9e55..bbc0963 100644 --- a/xchat.spec +++ b/xchat.spec @@ -4,7 +4,7 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat Version: 2.8.8 -Release: 28%{?dist} +Release: 29%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ @@ -259,6 +259,9 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Fri Jun 05 2015 Jitka Plesnikova - 1:2.8.8-29 +- Perl 5.22 rebuild + * Thu Mar 26 2015 Richard Hughes - 1:2.8.8-28 - Add an AppData file for the software center From 7584871ee3d1f6d2b127bdcec814d4d3bf334a71 Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Fri, 19 Jun 2015 03:47:46 +0000 Subject: [PATCH 45/55] - Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild --- xchat.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xchat.spec b/xchat.spec index bbc0963..c770277 100644 --- a/xchat.spec +++ b/xchat.spec @@ -4,7 +4,7 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat Version: 2.8.8 -Release: 29%{?dist} +Release: 30%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ @@ -259,6 +259,9 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Fri Jun 19 2015 Fedora Release Engineering - 1:2.8.8-30 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + * Fri Jun 05 2015 Jitka Plesnikova - 1:2.8.8-29 - Perl 5.22 rebuild From 6b338b7bdba4966cd2544d183a32bba98ccd8bab Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 5 Feb 2016 03:19:25 +0000 Subject: [PATCH 46/55] - Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild --- xchat.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xchat.spec b/xchat.spec index c770277..11dd0f3 100644 --- a/xchat.spec +++ b/xchat.spec @@ -4,7 +4,7 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat Version: 2.8.8 -Release: 30%{?dist} +Release: 31%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ @@ -259,6 +259,9 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Fri Feb 05 2016 Fedora Release Engineering - 1:2.8.8-31 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + * Fri Jun 19 2015 Fedora Release Engineering - 1:2.8.8-30 - Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild From 0eccc38e1b6112447369d7fd1926f46929dcbf69 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Tue, 17 May 2016 04:07:22 +0200 Subject: [PATCH 47/55] Perl 5.24 rebuild --- xchat.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xchat.spec b/xchat.spec index 11dd0f3..2a61286 100644 --- a/xchat.spec +++ b/xchat.spec @@ -4,7 +4,7 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat Version: 2.8.8 -Release: 31%{?dist} +Release: 32%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ @@ -259,6 +259,9 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Tue May 17 2016 Jitka Plesnikova - 1:2.8.8-32 +- Perl 5.24 rebuild + * Fri Feb 05 2016 Fedora Release Engineering - 1:2.8.8-31 - Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild From 87c1e65b452a1dc06fff243e923a583720bf736a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Fri, 24 Jun 2016 09:24:58 +0200 Subject: [PATCH 48/55] Mandatory Perl build-requires added --- xchat.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xchat.spec b/xchat.spec index 2a61286..e2a64b2 100644 --- a/xchat.spec +++ b/xchat.spec @@ -55,7 +55,7 @@ Patch57: xchat-2.8.8-desktop-file-name.patch # https://bugzilla.redhat.com/show_bug.cgi?id=1091544 Patch58: 0001-Don-t-force-the-use-of-SSLv3.patch -BuildRequires: perl perl(ExtUtils::Embed) python-devel openssl-devel pkgconfig, tcl-devel +BuildRequires: perl perl-devel perl-generators perl(ExtUtils::Embed) python-devel openssl-devel pkgconfig, tcl-devel BuildRequires: GConf2-devel BuildRequires: dbus-devel >= 0.60, dbus-glib-devel >= 0.60 BuildRequires: glib2-devel >= 2.10.0, gtk2-devel >= 2.10.0, bison >= 1.35 From bf11ff54a8b3d520e8716ce8c12c633ae97549bd Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 11 Feb 2017 17:42:08 +0000 Subject: [PATCH 49/55] - Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild --- xchat.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xchat.spec b/xchat.spec index e2a64b2..2e5ec48 100644 --- a/xchat.spec +++ b/xchat.spec @@ -4,7 +4,7 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat Version: 2.8.8 -Release: 32%{?dist} +Release: 33%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ @@ -259,6 +259,9 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Sat Feb 11 2017 Fedora Release Engineering - 1:2.8.8-33 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + * Tue May 17 2016 Jitka Plesnikova - 1:2.8.8-32 - Perl 5.24 rebuild From 545da57f6b80cec4c3082f56ea4b1a6ebb7dbbf4 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Sun, 4 Jun 2017 06:26:38 +0200 Subject: [PATCH 50/55] Perl 5.26 rebuild --- xchat.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xchat.spec b/xchat.spec index 2e5ec48..a8d76ac 100644 --- a/xchat.spec +++ b/xchat.spec @@ -4,7 +4,7 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat Version: 2.8.8 -Release: 33%{?dist} +Release: 34%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ @@ -259,6 +259,9 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Sun Jun 04 2017 Jitka Plesnikova - 1:2.8.8-34 +- Perl 5.26 rebuild + * Sat Feb 11 2017 Fedora Release Engineering - 1:2.8.8-33 - Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild From bb0ad34d7441762a8e98590ffc6cda79ceb95676 Mon Sep 17 00:00:00 2001 From: Debarshi Ray Date: Mon, 26 Jun 2017 12:38:56 +0200 Subject: [PATCH 51/55] Port to OpenSSL 1.1.0 https://bugzilla.redhat.com/show_bug.cgi?id=1387521 --- xchat-2.8.8-openssl-1.1.0.patch | 89 +++++++++++++++++++++++++++++++++ xchat.spec | 8 ++- 2 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 xchat-2.8.8-openssl-1.1.0.patch diff --git a/xchat-2.8.8-openssl-1.1.0.patch b/xchat-2.8.8-openssl-1.1.0.patch new file mode 100644 index 0000000..5fd2c0f --- /dev/null +++ b/xchat-2.8.8-openssl-1.1.0.patch @@ -0,0 +1,89 @@ +diff -urNp xchat-2.8.8.orig/src/common/server.c xchat-2.8.8/src/common/server.c +--- xchat-2.8.8.orig/src/common/server.c 2010-05-30 04:14:41.000000000 +0200 ++++ xchat-2.8.8/src/common/server.c 2017-06-26 15:40:02.989120175 +0200 +@@ -593,14 +593,16 @@ ssl_cb_info (SSL * s, int where, int ret + static int + ssl_cb_verify (int ok, X509_STORE_CTX * ctx) + { ++ X509 *current_cert; + char subject[256]; + char issuer[256]; + char buf[512]; + + +- X509_NAME_oneline (X509_get_subject_name (ctx->current_cert), subject, ++ current_cert = X509_STORE_CTX_get_current_cert (ctx); ++ X509_NAME_oneline (X509_get_subject_name (current_cert), subject, + sizeof (subject)); +- X509_NAME_oneline (X509_get_issuer_name (ctx->current_cert), issuer, ++ X509_NAME_oneline (X509_get_issuer_name (current_cert), issuer, + sizeof (issuer)); + + snprintf (buf, sizeof (buf), "* Subject: %s", subject); +@@ -751,7 +753,12 @@ ssl_do_connect (server * serv) + return (0); /* remove it (0) */ + } else + { +- if (serv->ssl->session && serv->ssl->session->time + SSLTMOUT < time (NULL)) ++ SSL_SESSION *session; ++ long session_time; ++ ++ session = SSL_get_session (serv->ssl); ++ session_time = SSL_SESSION_get_time (session); ++ if (session && session_time + SSLTMOUT < time (NULL)) + { + snprintf (buf, sizeof (buf), "SSL handshake timed out"); + EMIT_SIGNAL (XP_TE_CONNFAIL, serv->server_session, buf, NULL, +diff -urNp xchat-2.8.8.orig/src/common/ssl.c xchat-2.8.8/src/common/ssl.c +--- xchat-2.8.8.orig/src/common/ssl.c 2017-06-26 15:43:41.924066669 +0200 ++++ xchat-2.8.8/src/common/ssl.c 2017-06-26 15:54:09.769849268 +0200 +@@ -136,6 +136,8 @@ int + _SSL_get_cert_info (struct cert_info *cert_info, SSL * ssl) + { + X509 *peer_cert; ++ X509_PUBKEY *peer_pub_key; ++ ASN1_OBJECT *algorithm; + EVP_PKEY *peer_pkey; + /* EVP_PKEY *ca_pkey; */ + /* EVP_PKEY *tmp_pkey; */ +@@ -155,8 +157,10 @@ _SSL_get_cert_info (struct cert_info *ce + broke_oneline (cert_info->subject, cert_info->subject_word); + broke_oneline (cert_info->issuer, cert_info->issuer_word); + +- alg = OBJ_obj2nid (peer_cert->cert_info->key->algor->algorithm); +- sign_alg = OBJ_obj2nid (peer_cert->sig_alg->algorithm); ++ peer_pub_key = X509_get_X509_PUBKEY (peer_cert); ++ X509_PUBKEY_get0_param (&algorithm, NULL, NULL, NULL, peer_pub_key); ++ alg = OBJ_obj2nid (algorithm); ++ sign_alg = X509_get_signature_type (peer_cert); + ASN1_TIME_snprintf (notBefore, sizeof (notBefore), + X509_get_notBefore (peer_cert)); + ASN1_TIME_snprintf (notAfter, sizeof (notAfter), +@@ -199,7 +203,7 @@ _SSL_get_cert_info (struct cert_info *ce + struct chiper_info * + _SSL_get_cipher_info (SSL * ssl) + { +- SSL_CIPHER *c; ++ const SSL_CIPHER *c; + + + c = SSL_get_current_cipher (ssl); +@@ -274,6 +278,7 @@ SSL * + _SSL_socket (SSL_CTX *ctx, int sd) + { + SSL *ssl; ++ SSL_METHOD *method; + + + if (!(ssl = SSL_new (ctx))) +@@ -281,7 +286,9 @@ _SSL_socket (SSL_CTX *ctx, int sd) + __SSL_critical_error ("SSL_new"); + + SSL_set_fd (ssl, sd); +- if (ctx->method == SSLv23_client_method()) ++ ++ method = SSL_CTX_get_ssl_method (ctx); ++ if (method == SSLv23_client_method()) + SSL_set_connect_state (ssl); + else + SSL_set_accept_state(ssl); diff --git a/xchat.spec b/xchat.spec index a8d76ac..36316e5 100644 --- a/xchat.spec +++ b/xchat.spec @@ -4,7 +4,7 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat Version: 2.8.8 -Release: 34%{?dist} +Release: 35%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ @@ -54,6 +54,8 @@ Patch56: xchat-2.8.8-xdg-dirs.patch Patch57: xchat-2.8.8-desktop-file-name.patch # https://bugzilla.redhat.com/show_bug.cgi?id=1091544 Patch58: 0001-Don-t-force-the-use-of-SSLv3.patch +# https://bugzilla.redhat.com/show_bug.cgi?id=1387521 +Patch59: xchat-2.8.8-openssl-1.1.0.patch BuildRequires: perl perl-devel perl-generators perl(ExtUtils::Embed) python-devel openssl-devel pkgconfig, tcl-devel BuildRequires: GConf2-devel @@ -116,6 +118,7 @@ This package contains the X-Chat plugin providing the Tcl scripting interface. %patch56 -p1 -b .xdg-dirs %patch57 -p1 -b .desktop-file-name %patch58 -p1 -b .allow-tls +%patch59 -p1 -b .openssl-1.1.0 sed -i -e 's/#define GTK_DISABLE_DEPRECATED//g' src/fe-gtk/*.c @@ -259,6 +262,9 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Mon Jun 26 2017 Debarshi Ray - 1:2.8.8-35 +- Port to OpenSSL 1.1.0 (#1387521) + * Sun Jun 04 2017 Jitka Plesnikova - 1:2.8.8-34 - Perl 5.26 rebuild From 510a56a9931eed09bb14ffcc865ade283d58ef17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Wed, 12 Jul 2017 14:48:14 +0200 Subject: [PATCH 52/55] perl dependency renamed to perl-interpreter --- xchat.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xchat.spec b/xchat.spec index 36316e5..7a5613b 100644 --- a/xchat.spec +++ b/xchat.spec @@ -57,7 +57,7 @@ Patch58: 0001-Don-t-force-the-use-of-SSLv3.patch # https://bugzilla.redhat.com/show_bug.cgi?id=1387521 Patch59: xchat-2.8.8-openssl-1.1.0.patch -BuildRequires: perl perl-devel perl-generators perl(ExtUtils::Embed) python-devel openssl-devel pkgconfig, tcl-devel +BuildRequires: perl-interpreter perl-devel perl-generators perl(ExtUtils::Embed) python-devel openssl-devel pkgconfig, tcl-devel BuildRequires: GConf2-devel BuildRequires: dbus-devel >= 0.60, dbus-glib-devel >= 0.60 BuildRequires: glib2-devel >= 2.10.0, gtk2-devel >= 2.10.0, bison >= 1.35 From 4a0b3cbf2c6da49d5654e28bafa73022b52c718b Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 27 Jul 2017 21:56:21 +0000 Subject: [PATCH 53/55] - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild --- xchat.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xchat.spec b/xchat.spec index 7a5613b..b45d4f1 100644 --- a/xchat.spec +++ b/xchat.spec @@ -4,7 +4,7 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat Version: 2.8.8 -Release: 35%{?dist} +Release: 36%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ @@ -262,6 +262,9 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Thu Jul 27 2017 Fedora Release Engineering - 1:2.8.8-36 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + * Mon Jun 26 2017 Debarshi Ray - 1:2.8.8-35 - Port to OpenSSL 1.1.0 (#1387521) From f53ba75ca8e46705c3ae5b466317c7c32696e3b0 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 3 Aug 2017 10:31:08 +0000 Subject: [PATCH 54/55] - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild --- xchat.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xchat.spec b/xchat.spec index b45d4f1..c81eb60 100644 --- a/xchat.spec +++ b/xchat.spec @@ -4,7 +4,7 @@ Summary: A popular and easy to use graphical IRC (chat) client Name: xchat Version: 2.8.8 -Release: 36%{?dist} +Release: 37%{?dist} Epoch: 1 Group: Applications/Internet License: GPLv2+ @@ -262,6 +262,9 @@ fi %{_libdir}/xchat/plugins/tcl.so %changelog +* Thu Aug 03 2017 Fedora Release Engineering - 1:2.8.8-37 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + * Thu Jul 27 2017 Fedora Release Engineering - 1:2.8.8-36 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild From 2ed876ab6a31732b98f33fad1ab21d4c5a3a673f Mon Sep 17 00:00:00 2001 From: Debarshi Ray Date: Mon, 28 Aug 2017 15:48:43 +0200 Subject: [PATCH 55/55] XChat is dead. The recommended replacement is HexChat. --- .gitignore | 1 - 0001-Don-t-force-the-use-of-SSLv3.patch | 37 - dead.package | 1 + hicolor_apps_16x16_xchat.png | Bin 1064 -> 0 bytes hicolor_apps_22x22_xchat.png | Bin 1536 -> 0 bytes hicolor_apps_24x24_xchat.png | Bin 1724 -> 0 bytes hicolor_apps_256x256_xchat.png | Bin 28634 -> 0 bytes hicolor_apps_32x32_xchat.png | Bin 2418 -> 0 bytes hicolor_apps_48x48_xchat.png | Bin 4018 -> 0 bytes sources | 1 - xchat-1.8.7-use-sysconf-to-detect-cpus.patch | 34 - xchat-2.8.6-change-page-activity.patch | 339 ---- xchat-2.8.6-default-utf8.patch | 24 - xchat-2.8.6-freenode-ports.patch | 35 - xchat-2.8.8-desktop-file-name.patch | 13 - xchat-2.8.8-glib.patch | 61 - xchat-2.8.8-hires-icons.patch | 85 - xchat-2.8.8-libnotify07.patch | 24 - xchat-2.8.8-link-against-libnotify.patch | 343 ---- xchat-2.8.8-notifications-and-tray.patch | 30 - xchat-2.8.8-openssl-1.1.0.patch | 89 - xchat-2.8.8-xdg-dirs.patch | 1224 ------------ xchat.spec | 1022 ---------- xchat.svg | 1802 ------------------ 24 files changed, 1 insertion(+), 5164 deletions(-) delete mode 100644 .gitignore delete mode 100644 0001-Don-t-force-the-use-of-SSLv3.patch create mode 100644 dead.package delete mode 100644 hicolor_apps_16x16_xchat.png delete mode 100644 hicolor_apps_22x22_xchat.png delete mode 100644 hicolor_apps_24x24_xchat.png delete mode 100644 hicolor_apps_256x256_xchat.png delete mode 100644 hicolor_apps_32x32_xchat.png delete mode 100644 hicolor_apps_48x48_xchat.png delete mode 100644 sources delete mode 100644 xchat-1.8.7-use-sysconf-to-detect-cpus.patch delete mode 100644 xchat-2.8.6-change-page-activity.patch delete mode 100644 xchat-2.8.6-default-utf8.patch delete mode 100644 xchat-2.8.6-freenode-ports.patch delete mode 100644 xchat-2.8.8-desktop-file-name.patch delete mode 100644 xchat-2.8.8-glib.patch delete mode 100644 xchat-2.8.8-hires-icons.patch delete mode 100644 xchat-2.8.8-libnotify07.patch delete mode 100644 xchat-2.8.8-link-against-libnotify.patch delete mode 100644 xchat-2.8.8-notifications-and-tray.patch delete mode 100644 xchat-2.8.8-openssl-1.1.0.patch delete mode 100644 xchat-2.8.8-xdg-dirs.patch delete mode 100644 xchat.spec delete mode 100644 xchat.svg diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 1f5f78f..0000000 --- a/.gitignore +++ /dev/null @@ -1 +0,0 @@ -xchat-2.8.8.tar.xz diff --git a/0001-Don-t-force-the-use-of-SSLv3.patch b/0001-Don-t-force-the-use-of-SSLv3.patch deleted file mode 100644 index e0f0472..0000000 --- a/0001-Don-t-force-the-use-of-SSLv3.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 527eb322a5bfa97d5716e7f8178e319c515065a2 Mon Sep 17 00:00:00 2001 -From: Marc Deslauriers -Date: Mon, 20 Oct 2014 10:08:26 -0400 -Subject: [PATCH] Don't force the use of SSLv3. - -SSLv3 should no longer be used for security reasons. Let the best -connection method be automatically determined by using SSLv23_client_method() -and SSLv23_server_method(). ---- - src/common/ssl.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/common/ssl.c b/src/common/ssl.c -index a18ad47..35eb237 100644 ---- a/src/common/ssl.c -+++ b/src/common/ssl.c -@@ -70,7 +70,7 @@ _SSL_context_init (void (*info_cb_func), int server) - - SSLeay_add_ssl_algorithms (); - SSL_load_error_strings (); -- ctx = SSL_CTX_new (server ? SSLv3_server_method() : SSLv3_client_method ()); -+ ctx = SSL_CTX_new (server ? SSLv23_server_method() : SSLv23_client_method ()); - - SSL_CTX_set_session_cache_mode (ctx, SSL_SESS_CACHE_BOTH); - SSL_CTX_set_timeout (ctx, 300); -@@ -281,7 +281,7 @@ _SSL_socket (SSL_CTX *ctx, int sd) - __SSL_critical_error ("SSL_new"); - - SSL_set_fd (ssl, sd); -- if (ctx->method == SSLv3_client_method()) -+ if (ctx->method == SSLv23_client_method()) - SSL_set_connect_state (ssl); - else - SSL_set_accept_state(ssl); --- -2.1.0 - diff --git a/dead.package b/dead.package new file mode 100644 index 0000000..6541609 --- /dev/null +++ b/dead.package @@ -0,0 +1 @@ +XChat is dead. The recommended replacement is HexChat. diff --git a/hicolor_apps_16x16_xchat.png b/hicolor_apps_16x16_xchat.png deleted file mode 100644 index b29fc17a74f5a070fe1d0bb5a124dfd3056ceb68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1064 zcmV+@1lRkCP)P{QzDxiB02FjZSad;kbZBpK07_wN zbz&e>bY*F7Wpd{G_b&hd03mcmSaefwb#h~60BCe{a5^t9YH4k4VPh_Bb#rNBXklz@ zE@OIWX5(G}00TftL_t(Ijg3=ZOj~srJ@-%Py#?E~6qp5Z!;Yqd5eka3IH#ET1GA}1 z_9si0xEYiApnLH_j4!Ce?a2pBj4m-gXd(pNP_vBd07a5Ei#SKKO2ILyFe-(6xwkF7 zx8?T!e3%-tWXVo)lJ7j6^X1Ez!w^CM0B84)bZu>ZbttbU7Uh}Y$KSa^Ru3x6>Ey`lLw{iOeg3)BuV*%Bs*lnsfzo&*wX_L(^YW?X z;U0K~d*GS-;q;27O;9>rPw7+%rKyjoI{TS9cCM80He1cdUU8O3ydR(i05`y-PhfjX zU!_$PW*C;kw&o5m6F&|Zi97dbZ^G$l;#}Ug^UT+8?>t++>)GxVE&$!M<9@)i7JNbq ztFe(jUJbnA72MU<{-+5m3MKayP%K&)9Ur5a+NuDb&8{D*+Y@5dToGzczo&`brR#Py zF|pWh9c*rW{hO=dv4WP?P_*bhX>FQUR+bT-xMCWHG011s)wj~=b$xm|deSNu#k)6G zxm|ev@F`pzI1g1*0RSa7n_^MsOEYivGK3JcrzKDD$B@Q#fwIQsWDC0WSV)5RTX_hOPSF8odCRm3cx5ur1&81m9F-`J97Q2UlbeNwXF#s z$PrlSEatX%;Z|CNrsyV@m(|NR*^*a+iY&5^gy2|Qf|M8OhwxP=Y{w^$ucb^w4t2*JN?6`m=> zK!3nxeP3Tj54a#Vh^QrmfCqq>j)fe}g}T>rgNB9hwLH2BA;y27AcPo_B)zQ7Ye|8{ i?j*(GKMgF@0Qd(|vyx5+2zDX>0000jqIBM diff --git a/hicolor_apps_22x22_xchat.png b/hicolor_apps_22x22_xchat.png deleted file mode 100644 index 5f4a083e4cbfc08cd1065d318e8b854dcbd1c7f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1536 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 Q004mYBZG&v>UI(T1MHQDWB>pF diff --git a/hicolor_apps_32x32_xchat.png b/hicolor_apps_32x32_xchat.png deleted file mode 100644 index 59b1850da79c97f4c114e5e65fb71d1c2f1870b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2418 zcmV-&361uNP)P{QzDxiB02FjZSad;kbZBpK07_wN zbz&e>bY*F7Wpd{G_b&hd03mcmSaefwb#h~60BCe{a5^t9YH4k4VPh_Bb#rNBXklz@ zE@OIWX5(G}00@dnL_t(og{7Bya8>mc$3OSpw`6-SI|M?2#0TbOE2JVp5M-N+GB{HQ zTw3W$>s0Gfp+&K^ELx@2PPGf8*6JuSqK+dJY#v$%kmW%kA_)?K7m}AimY4PI@7=9` z4OZKv$FyiqeM}F0|A{?v{Z|Hl zjs4+P*Yy@_?yHvZWix|K2mV;`h`wprGT9gzCw>+9nWe66`Od`~o%igum8{x6%WBGW zZ(QVZUMu;=MJ}h5l6U<2yLQYiTJ}Q9)cL=9qUL$=pVieaVN3y=7rC}gEMLAR_ogS! zc)yFNouqW-Tj|NRyrUbgLBxhdE@x_bfxBeoTXrG(2{bIhK5en7aQ>sKk8QnL#4rKB zz1g*G@{I4S89(PC6D>c1Xf3pFMu>kx#htIGr=}FR*UkHS5$oo;oT+Jr?y@^yw+oTI z(D4kY9pGI}=JmHo(-%E@@8PG1ix?E}Se0vA(T%It&})iyvNnV3YXjfC$Oq zaIm)WqbIK`{q`dTbAMpQyA~qNpfTJ7ClDloyvp^~&Wkmx%TwIDj<-8H0UrF8%bAf^ z?7rci7wux-4rqV%YP=Ez|3Oj;e=9NV`8D_}{fy(F}xPTD9%%rMy*2yLFtzyed(E9JOaVn_HsOQ^g?(|1mQY}eKrcKC`B(>-2gEZ1Z?GS7oJ5B>NX(qc5cdP%X_O9Li8Sepo zvMlS8!{NZ;a2OtsCw9?CQ+HpeB_+wabb9_2Ns9WeDYLO$OPaw4?jH5!>ZV^;*Rd1m z0yKxifoaI`&{nKi;a{-$CTlpu*8R3<9Z$;GXKE}|5r}U7B22F!BFq2Q*!0_lFZ$m|Ri#!J)OCfI2`vOaMSEuH0W* zRF-T_$>ef(WN`e+y&A5fSA@2h=Fg7x#G!f%0nI$$}ys&E3s#QPp`~AZ@;;>%e z_Xo-|GRL7A2AbaQXHMa73eeB=&0Vj`rdbp=2Ja1&ourtuy z-1^smzh`OtW$z-vWD>rq0J|-n@BMTgu08MI`LY&401Ta!-e#r*&Q}zw?Zq|L;Ww*c z0&Yt^J;7$ntDI#Og-i7(FvhBZARq_=hOPrpZ!X}^zwcnl@;j+Nd5DE=`^dK_+?Z`3 z6-~1Jts(trrQbED#(qV_;1-nlT#l^V@yG8kcVuQY9UePfQG(Qr{%5Ec)Ho3ho@>kD zSY{;#0uPu@bDO1g5YlBC&tIBDy}?j$PF+sF2yuWs-Jb2fzi?t^)|ZDN%IL0`!8(qh zIF4x44E8BN8p#Sgp4Exm=|l5SfT&yEcpyI~ zJFBw=RLkh(ss)nA;a5}HRC`%_>Ow#Zb%!BmI#{wX#o!lqKX-Q?!KB1!j-?F2ni;RF z+?OV0n&ZL_0LkO=2n!0*UsxFGv@`_mWID?cyE-7IUfong3nXXKqnOz2=~mva_y4`N zBX-%vG|Lc@{AJ&7;AIUmZWpu1j`a!k}S&% zyO03AjWKHDk;n~xOH$TyBOn92`e!j34g`2ugOfnFEXx`s{tFU|42oz{s0+na=fN;}yMjjGc*JiaAGJqjA%vxE|<#$WC3L&l<3e4 z)Fd*G$g-@DBp-nv*p4Z{OcAnm_yVW{x@1{ahsF<9U`Qr4lu87F kR-+%^2=tM-2M)FW0e&)V?#+JwU;qFB07*qoM6N<$f}rZ4O8@`> diff --git a/hicolor_apps_48x48_xchat.png b/hicolor_apps_48x48_xchat.png deleted file mode 100644 index 47db53ed11fba5c5eede305e5fabbe8c33c8d89b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4018 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 = TRUE; -+ lastact_update(sess); -+ } - fe_set_hilight (sess); - return 1; - } -@@ -344,6 +347,7 @@ inbound_action (session *sess, char *cha - sess->msg_said = TRUE; - sess->new_data = FALSE; - } -+ lastact_update(sess); - } - - user = userlist_find (sess, from); -@@ -395,6 +399,7 @@ inbound_chanmsg (server *serv, session * - { - sess->msg_said = TRUE; - sess->new_data = FALSE; -+ lastact_update(sess); - } - - user = userlist_find (sess, from); -diff -paur xchat2.orig/src/common/xchat.c xchat2/src/common/xchat.c ---- xchat2.orig/src/common/xchat.c 2008-07-20 17:31:44.900468825 +0200 -+++ xchat2/src/common/xchat.c 2008-07-20 17:33:57.089468218 +0200 -@@ -71,6 +71,23 @@ GSList *usermenu_list = 0; - GSList *urlhandler_list = 0; - GSList *tabmenu_list = 0; - -+/* -+ * This array contains 5 double linked lists, one for each priority in the -+ * "interesting session" queue ("channel" stands for everything but -+ * SESS_DIALOG): -+ * -+ * [0] queries with hilight -+ * [1] queries -+ * [2] channels with hilight -+ * [3] channels with dialogue -+ * [4] channels with other data -+ * -+ * Each time activity happens the corresponding session is put at the -+ * beginning of one of the lists. The aim is to be able to switch to the -+ * session with the most important/recent activity. -+ */ -+GList *sess_list_by_lastact[5] = {NULL, NULL, NULL, NULL, NULL}; -+ - static int in_xchat_exit = FALSE; - int xchat_is_quitting = FALSE; - /* command-line args */ -@@ -93,6 +110,105 @@ struct xchatprefs prefs; - SSL_CTX *ctx = NULL; - #endif - -+/* -+ * Update the priority queue of the "interesting sessions" -+ * (sess_list_by_lastact). -+ */ -+void -+lastact_update(session *sess) -+{ -+ int newidx; -+ -+ /* Find the priority (for the order see before) */ -+ if (sess->type == SESS_DIALOG) -+ { -+ if (sess->nick_said) -+ newidx = LACT_QUERY_HI; -+ else if (sess->msg_said) -+ newidx = LACT_QUERY; -+ else if (sess->new_data) -+ newidx = LACT_QUERY; -+ else -+ newidx = LACT_NONE; -+ } -+ else -+ { -+ if (sess->nick_said) -+ newidx = LACT_CHAN_HI; -+ else if (sess->msg_said) -+ newidx = LACT_CHAN; -+ else if (sess->new_data) -+ newidx = LACT_CHAN_DATA; -+ else -+ newidx = LACT_NONE; -+ } -+ -+ /* Check if this update is a no-op */ -+ if (sess->lastact_idx == newidx && -+ ((newidx != LACT_NONE && sess->lastact_elem == sess_list_by_lastact[newidx]) || -+ (newidx == LACT_NONE))) -+ return; -+ -+ /* Remove from the old position (and, if no new position, return */ -+ else if (sess->lastact_idx != LACT_NONE && sess->lastact_elem) -+ { -+ sess_list_by_lastact[sess->lastact_idx] = g_list_remove_link( -+ sess_list_by_lastact[sess->lastact_idx], -+ sess->lastact_elem); -+ if (newidx == LACT_NONE) -+ { -+ sess->lastact_idx = newidx; -+ return; -+ } -+ } -+ -+ /* No previous position, allocate new */ -+ else if (!sess->lastact_elem) -+ sess->lastact_elem = g_list_prepend(sess->lastact_elem, sess); -+ -+ sess->lastact_idx = newidx; -+ sess_list_by_lastact[newidx] = g_list_concat( -+ sess->lastact_elem, sess_list_by_lastact[newidx]); -+} -+ -+/* -+ * Extract the first session from the priority queue of sessions with recent -+ * activity. Return NULL if no such session can be found. -+ * -+ * If filter is specified, skip a session if filter(session) returns 0. This -+ * can be used for UI-specific needs, e.g. in fe-gtk we want to filter out -+ * detached sessions. -+ */ -+session * -+lastact_getfirst(int (*filter) (session *sess)) -+{ -+ int i; -+ session *sess = NULL; -+ GList *curitem; -+ -+ /* 5 is the number of priority classes LACT_ */ -+ for (i = 0; i < 5 && !sess; i++) -+ { -+ curitem = sess_list_by_lastact[i]; -+ while (curitem && !sess) -+ { -+ sess = g_list_nth_data(curitem, 0); -+ if (!sess || (filter && !filter(sess))) -+ { -+ sess = NULL; -+ curitem = g_list_next(curitem); -+ } -+ } -+ -+ if (sess) -+ { -+ sess_list_by_lastact[i] = g_list_remove_link(sess_list_by_lastact[i], curitem); -+ sess->lastact_idx = LACT_NONE; -+ } -+ } -+ -+ return sess; -+} - - int - is_session (session * sess) -@@ -362,6 +478,9 @@ session_new (server *serv, char *from, i - - sess_list = g_slist_prepend (sess_list, sess); - -+ sess->lastact_elem = NULL; -+ sess->lastact_idx = LACT_NONE; -+ - fe_new_window (sess, focus); - - return sess; -@@ -533,6 +652,16 @@ session_free (session *killsess) - current_sess = sess_list->data; - } - -+ if (killsess->lastact_elem) -+ { -+ if (killsess->lastact_idx != LACT_NONE) -+ sess_list_by_lastact[killsess->lastact_idx] = g_list_delete_link( -+ sess_list_by_lastact[killsess->lastact_idx], -+ killsess->lastact_elem); -+ else -+ g_list_free_1(killsess->lastact_elem); -+ } -+ - free (killsess); - - if (!sess_list && !in_xchat_exit) -diff -paur xchat2.orig/src/common/xchat.h xchat2/src/common/xchat.h ---- xchat2.orig/src/common/xchat.h 2008-07-20 17:31:44.901467675 +0200 -+++ xchat2/src/common/xchat.h 2008-07-20 17:33:28.240467970 +0200 -@@ -320,6 +320,15 @@ struct xchatprefs - #define SET_ON 1 - #define SET_DEFAULT 2 /* use global setting */ - -+/* Priorities in the "interesting sessions" priority queue -+ * (see xchat.c:sess_list_by_lastact) */ -+#define LACT_NONE -1 /* no queues */ -+#define LACT_QUERY_HI 0 /* query with hilight */ -+#define LACT_QUERY 1 /* query with messages */ -+#define LACT_CHAN_HI 2 /* channel with hilight */ -+#define LACT_CHAN 3 /* channel with messages */ -+#define LACT_CHAN_DATA 4 /* channel with other data */ -+ - typedef struct session - { - /* Per-Channel Alerts */ -@@ -369,6 +378,10 @@ typedef struct session - - int type; /* SESS_* */ - -+ GList *lastact_elem; /* our GList element in sess_list_by_lastact */ -+ int lastact_idx; /* the sess_list_by_lastact[] index of the list we're in. -+ * For valid values, see defines of LACT_*. */ -+ - int new_data:1; /* new data avail? (purple tab) */ - int nick_said:1; /* your nick mentioned? (blue tab) */ - int msg_said:1; /* new msg available? (red tab) */ -diff -paur xchat2.orig/src/common/xchatc.h xchat2/src/common/xchatc.h ---- xchat2.orig/src/common/xchatc.h 2008-07-20 17:31:44.901467675 +0200 -+++ xchat2/src/common/xchatc.h 2008-07-20 11:43:36.673967630 +0200 -@@ -25,10 +25,13 @@ extern GSList *ignore_list; - extern GSList *usermenu_list; - extern GSList *urlhandler_list; - extern GSList *tabmenu_list; -+extern GList *sess_list_by_lastact[]; - - session * find_channel (server *serv, char *chan); - session * find_dialog (server *serv, char *nick); - session * new_ircwindow (server *serv, char *name, int type, int focus); -+void lastact_update (session * sess); -+session * lastact_getfirst (int (*filter) (session *sess)); - int is_session (session * sess); - void session_free (session *killsess); - void lag_check (void); -diff -paur xchat2.orig/src/fe-gtk/fe-gtk.c xchat2/src/fe-gtk/fe-gtk.c ---- xchat2.orig/src/fe-gtk/fe-gtk.c 2008-07-20 17:31:44.958466232 +0200 -+++ xchat2/src/fe-gtk/fe-gtk.c 2008-07-19 19:58:57.431961788 +0200 -@@ -603,6 +603,7 @@ fe_print_text (struct session *sess, cha - sess->gui->is_tab && !sess->nick_said && stamp == 0) - { - sess->new_data = TRUE; -+ lastact_update(sess); - if (sess->msg_said) - fe_set_tab_color (sess, 2); - else -diff -paur xchat2.orig/src/fe-gtk/fkeys.c xchat2/src/fe-gtk/fkeys.c ---- xchat2.orig/src/fe-gtk/fkeys.c 2008-07-20 17:31:44.960465847 +0200 -+++ xchat2/src/fe-gtk/fkeys.c 2008-07-20 12:20:50.186930065 +0200 -@@ -158,7 +158,7 @@ static const struct key_action key_actio - {key_action_handle_command, "Run Command", - N_("The \002Run Command\002 action runs the data in Data 1 as if it has been typed into the entry box where you pressed the key sequence. Thus it can contain text (which will be sent to the channel/person), commands or user commands. When run all \002\\n\002 characters in Data 1 are used to deliminate seperate commands so it is possible to run more than one command. If you want a \002\\\002 in the actual text run then enter \002\\\\\002")}, - {key_action_page_switch, "Change Page", -- N_("The \002Change Page\002 command switches between pages in the notebook. Set Data 1 to the page you want to switch to. If Data 2 is set to anything then the switch will be relative to the current position")}, -+ N_("The \002Change Page\002 command switches between pages in the notebook. Set Data 1 to the page you want to switch to. If Data 2 is set to anything then the switch will be relative to the current position. Set Data 1 to auto to switch to the page with the most recent and important activity (queries first, then channels with hilight, channels with dialogue, channels with other data)")}, - {key_action_insert, "Insert in Buffer", - N_("The \002Insert in Buffer\002 command will insert the contents of Data 1 into the entry where the key sequence was pressed at the current cursor position")}, - {key_action_scroll_page, "Scroll Page", -@@ -402,6 +402,7 @@ key_load_defaults () - "A\n3\nChange Page\nD1:3\nD2!\n\n"\ - "A\n2\nChange Page\nD1:2\nD2!\n\n"\ - "A\n1\nChange Page\nD1:1\nD2!\n\n"\ -+ "A\ngrave\nChange Page\nD1:auto\nD2!\n\n"\ - "C\no\nInsert in Buffer\nD1:\nD2!\n\n"\ - "C\nb\nInsert in Buffer\nD1:\nD2!\n\n"\ - "C\nk\nInsert in Buffer\nD1:\nD2!\n\n"\ -@@ -1196,6 +1197,20 @@ key_action_handle_command (GtkWidget * w - return 0; - } - -+/* -+ * Check if the given session is inside the main window. This predicate -+ * is passed to lastact_pop as a way to filter out detached sessions. -+ * XXX: Consider moving this in a different file? -+ */ -+static int -+session_check_is_tab(session *sess) -+{ -+ if (!sess || !sess->gui) -+ return FALSE; -+ -+ return (sess->gui->is_tab); -+} -+ - static int - key_action_page_switch (GtkWidget * wid, GdkEventKey * evt, char *d1, - char *d2, struct session *sess) -@@ -1209,6 +1224,30 @@ key_action_page_switch (GtkWidget * wid, - if (!len) - return 1; - -+ if (strcasecmp(d1, "auto") == 0) -+ { -+ /* Auto switch makes no sense in detached sessions */ -+ if (!sess->gui->is_tab) -+ return 1; -+ -+ /* Obtain a session with recent activity */ -+ session *newsess = lastact_getfirst(session_check_is_tab); -+ -+ if (newsess) -+ { -+ /* -+ * Only sessions in the current window should be considered (i.e. -+ * we don't want to move the focus on a different window). This -+ * call could, in theory, do this, but we checked before that -+ * newsess->gui->is_tab and sess->gui->is_tab. -+ */ -+ mg_bring_tofront_sess(newsess); -+ return 0; -+ } -+ else -+ return 1; -+ } -+ - for (i = 0; i < len; i++) - { - if (d1[i] < '0' || d1[i] > '9') -diff -paur xchat2.orig/src/fe-gtk/maingui.c xchat2/src/fe-gtk/maingui.c ---- xchat2.orig/src/fe-gtk/maingui.c 2008-07-20 17:31:44.964469466 +0200 -+++ xchat2/src/fe-gtk/maingui.c 2008-07-19 19:58:58.255909127 +0200 -@@ -359,6 +359,7 @@ fe_set_tab_color (struct session *sess, - - break; - } -+ lastact_update(sess); - } - } - -@@ -643,6 +644,7 @@ mg_focus (session *sess) - sess->nick_said = FALSE; - sess->msg_said = FALSE; - sess->new_data = FALSE; -+ lastact_update(sess); - /* when called via mg_changui_new, is_tab might be true, but - sess->res->tab is still NULL. */ - if (sess->res->tab) diff --git a/xchat-2.8.6-default-utf8.patch b/xchat-2.8.6-default-utf8.patch deleted file mode 100644 index 358a438..0000000 --- a/xchat-2.8.6-default-utf8.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff -ur xchat-2.8.6/src/common/servlist.c xchat-2.8.6-default-utf8/src/common/servlist.c ---- xchat-2.8.6/src/common/servlist.c 2008-04-01 10:22:34.000000000 +0200 -+++ xchat-2.8.6-default-utf8/src/common/servlist.c 2008-06-15 14:43:35.000000000 +0200 -@@ -892,7 +892,7 @@ - if (def[i].network) - { - net = servlist_net_add (def[i].network, def[i].host, FALSE); -- net->encoding = strdup ("IRC (Latin/Unicode Hybrid)"); -+ net->encoding = strdup ("UTF-8 (Unicode)"); - if (def[i].channel) - net->autojoin = strdup (def[i].channel); - if (def[i].charset) -diff -ur xchat-2.8.6/src/fe-gtk/servlistgui.c xchat-2.8.6-default-utf8/src/fe-gtk/servlistgui.c ---- xchat-2.8.6/src/fe-gtk/servlistgui.c 2008-06-08 10:04:48.000000000 +0200 -+++ xchat-2.8.6-default-utf8/src/fe-gtk/servlistgui.c 2008-06-15 14:36:03.000000000 +0200 -@@ -267,7 +267,7 @@ - ircnet *net; - - net = servlist_net_add (_("New Network"), "", TRUE); -- net->encoding = strdup ("IRC (Latin/Unicode Hybrid)"); -+ net->encoding = strdup ("UTF-8 (Unicode)"); - servlist_server_add (net, "newserver/6667"); - - store = (GtkListStore *)gtk_tree_view_get_model (treeview); diff --git a/xchat-2.8.6-freenode-ports.patch b/xchat-2.8.6-freenode-ports.patch deleted file mode 100644 index 3e336fd..0000000 --- a/xchat-2.8.6-freenode-ports.patch +++ /dev/null @@ -1,35 +0,0 @@ -From bc98c28e891408145bed2b18d3c02adbadadde31 Mon Sep 17 00:00:00 2001 -From: Debarshi Ray -Date: Sat, 30 Jan 2010 13:05:21 +0200 -Subject: [PATCH] Added port numbers for Freenode - -http://freenode.net/irc_servers.shtml ---- - src/common/servlist.c | 11 ++++++++++- - 1 files changed, 10 insertions(+), 1 deletions(-) - -diff --git a/src/common/servlist.c b/src/common/servlist.c -index c6839e0..3082966 100644 ---- a/src/common/servlist.c -+++ b/src/common/servlist.c -@@ -207,7 +207,16 @@ static const struct defaultserver def[] = - {0, "irc.vendetta.com"}, - - {"FreeNode", 0}, -- {0, "irc.freenode.net"}, -+ {0, "irc.freenode.net/6665"}, -+ {0, "irc.freenode.net/6666"}, -+ {0, "irc.freenode.net/6667"}, -+ {0, "irc.freenode.net/8000"}, -+ {0, "irc.freenode.net/8001"}, -+ {0, "irc.freenode.net/8002"}, -+#ifdef USE_OPENSSL -+ {0, "irc.freenode.net/+7000"}, -+ {0, "irc.freenode.net/+7070"}, -+#endif - - /* {"Freeworld", 0}, - {0, "kabel.freeworld.nu"}, --- -1.6.6 - diff --git a/xchat-2.8.8-desktop-file-name.patch b/xchat-2.8.8-desktop-file-name.patch deleted file mode 100644 index 2d6044a..0000000 --- a/xchat-2.8.8-desktop-file-name.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff -urNp xchat-2.8.8.orig/xchat.desktop xchat-2.8.8/xchat.desktop ---- xchat-2.8.8.orig/xchat.desktop 2013-06-10 14:01:07.408432973 +0200 -+++ xchat-2.8.8/xchat.desktop 2013-06-10 14:12:56.044209785 +0200 -@@ -1,7 +1,8 @@ - [Desktop Entry] - Encoding=UTF-8 --Name=XChat IRC -+Name=XChat - Name[zh_TW]=網路清談 -+GenericName=IRC Client - Comment[de]=IRC-Client - Comment[es]=Aplicación de IRC - Comment[fi]=IRC-sovellus diff --git a/xchat-2.8.8-glib.patch b/xchat-2.8.8-glib.patch deleted file mode 100644 index 0012ce5..0000000 --- a/xchat-2.8.8-glib.patch +++ /dev/null @@ -1,61 +0,0 @@ ---- src/common/text.c.orig 2012-02-25 11:05:23.890274334 -0600 -+++ src/common/text.c 2012-02-25 11:05:39.006195489 -0600 -@@ -28,7 +28,7 @@ - #include - - #include "xchat.h" --#include -+#include - #include "cfgfiles.h" - #include "chanopt.h" - #include "plugin.h" ---- src/common/servlist.c.orig 2012-02-25 11:04:30.601501605 -0600 -+++ src/common/servlist.c 2012-02-25 11:04:42.964072823 -0600 -@@ -24,7 +24,7 @@ - #include - - #include "xchat.h" --#include -+#include - - #include "cfgfiles.h" - #include "fe.h" ---- src/common/dbus/dbus-client.c.orig 2012-02-25 10:59:23.948527589 -0600 -+++ src/common/dbus/dbus-client.c 2012-02-25 11:00:40.082203787 -0600 -@@ -53,11 +53,6 @@ - GError *error = NULL; - char *command = NULL; - -- /* GnomeVFS >=2.15 uses D-Bus and threads, so threads should be -- * initialised before opening for the first time a D-Bus connection */ -- if (!g_thread_supported ()) { -- g_thread_init (NULL); -- } - dbus_g_thread_init (); - - /* if there is nothing to do, return now. */ ---- src/common/xchat.h.orig 2012-02-25 11:29:33.400499630 -0600 -+++ src/common/xchat.h 2012-02-25 11:29:51.774834912 -0600 -@@ -1,10 +1,6 @@ - #include "../../config.h" - --#include --#include --#include --#include --#include -+#include - #include /* need time_t */ - - #ifndef XCHAT_H ---- src/common/util.c.orig 2012-02-25 11:38:29.404622998 -0600 -+++ src/common/util.c 2012-02-25 11:38:51.904482615 -0600 -@@ -39,7 +39,7 @@ - #include - #include "xchat.h" - #include "xchatc.h" --#include -+#include - #include - #include "util.h" - #include "../../config.h" diff --git a/xchat-2.8.8-hires-icons.patch b/xchat-2.8.8-hires-icons.patch deleted file mode 100644 index 2baba84..0000000 --- a/xchat-2.8.8-hires-icons.patch +++ /dev/null @@ -1,85 +0,0 @@ -diff -urNp xchat-2.8.8.orig/configure.in xchat-2.8.8/configure.in ---- xchat-2.8.8.orig/configure.in 2013-06-07 17:33:41.600172433 +0200 -+++ xchat-2.8.8/configure.in 2013-06-07 17:39:02.672190284 +0200 -@@ -792,6 +792,7 @@ plugins/python/Makefile - plugins/perl/Makefile - plugins/tcl/Makefile - intl/Makefile -+icons/Makefile - po/Makefile.in - ]) - -diff -urNp xchat-2.8.8.orig/icons/Makefile.am xchat-2.8.8/icons/Makefile.am ---- xchat-2.8.8.orig/icons/Makefile.am 1970-01-01 01:00:00.000000000 +0100 -+++ xchat-2.8.8/icons/Makefile.am 2013-06-07 17:35:09.053456817 +0200 -@@ -0,0 +1,59 @@ -+public_icon_themes = \ -+ hicolor \ -+ $(NULL) -+ -+public_icons = \ -+ hicolor_apps_16x16_xchat.png \ -+ hicolor_apps_22x22_xchat.png \ -+ hicolor_apps_24x24_xchat.png \ -+ hicolor_apps_32x32_xchat.png \ -+ hicolor_apps_48x48_xchat.png \ -+ hicolor_apps_256x256_xchat.png \ -+ $(NULL) -+ -+noinst_DATA = \ -+ xchat.svg \ -+ $(NULL) -+ -+EXTRA_DIST = \ -+ $(public_icons) \ -+ $(noinst_DATA) \ -+ $(NULL) -+ -+gtk_update_icon_cache = gtk-update-icon-cache -f -t -+ -+update-icon-cache: -+ @-if test -z "$(DESTDIR)"; then \ -+ echo "Updating Gtk icon cache."; \ -+ for theme in $(public_icon_themes); do \ -+ $(gtk_update_icon_cache) $(datadir)/icons/$$theme; \ -+ done; \ -+ else \ -+ echo "*** Icon cache not updated. After (un)install, run this:"; \ -+ for theme in $(public_icon_themes); do \ -+ echo "*** $(gtk_update_icon_cache) $(datadir)/icons/$$theme"; \ -+ done; \ -+ fi -+ -+install-icons: -+ for icon in $(public_icons); do \ -+ THEME=`echo $$icon | cut -d_ -f1`; \ -+ CONTEXT=`echo $$icon | cut -d_ -f2`; \ -+ SIZE=`echo $$icon | cut -d_ -f3`; \ -+ ICONFILE=`echo $$icon | cut -d_ -f4`; \ -+ mkdir -p $(DESTDIR)$(datadir)/icons/$$THEME/$$SIZE/$$CONTEXT; \ -+ $(INSTALL_DATA) $(srcdir)/$$icon $(DESTDIR)$(datadir)/icons/$$THEME/$$SIZE/$$CONTEXT/$$ICONFILE; \ -+ done -+ -+uninstall-icons: -+ -for icon in $(public_icons); do \ -+ THEME=`echo $$icon | cut -d_ -f1`; \ -+ CONTEXT=`echo $$icon | cut -d_ -f2`; \ -+ SIZE=`echo $$icon | cut -d_ -f3`; \ -+ ICONFILE=`echo $$icon | cut -d_ -f4`; \ -+ rm -f $(DESTDIR)$(datadir)/icons/$$THEME/$$SIZE/$$CONTEXT/$$ICONFILE; \ -+ done -+ -+install-data-local: install-icons update-icon-cache -+ -+uninstall-local: uninstall-icons update-icon-cache -diff -urNp xchat-2.8.8.orig/Makefile.am xchat-2.8.8/Makefile.am ---- xchat-2.8.8.orig/Makefile.am 2013-06-07 17:33:41.600172433 +0200 -+++ xchat-2.8.8/Makefile.am 2013-06-10 13:25:06.316773350 +0200 -@@ -1,6 +1,6 @@ - ## Process this file with automake to produce Makefile.in - --SUBDIRS = po intl src plugins -+SUBDIRS = po icons intl src plugins - - EXTRA_DIST = autogen.sh HACKING INSTALL.w32 faq.html xchat.png \ - xchat.desktop xchat.spec config.h.w32 xchat.ico diff --git a/xchat-2.8.8-libnotify07.patch b/xchat-2.8.8-libnotify07.patch deleted file mode 100644 index 2a6dce9..0000000 --- a/xchat-2.8.8-libnotify07.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff -up xchat-2.8.8/src/fe-gtk/plugin-tray.c.libnotify07 xchat-2.8.8/src/fe-gtk/plugin-tray.c ---- xchat-2.8.8/src/fe-gtk/plugin-tray.c.libnotify07 2010-11-15 17:32:15.708325783 -0500 -+++ xchat-2.8.8/src/fe-gtk/plugin-tray.c 2010-11-15 18:05:17.322141789 -0500 -@@ -125,8 +125,9 @@ static void *nn_mod = NULL; - /* prototypes */ - static gboolean (*nn_init) (char *); - static void (*nn_uninit) (void); --static void *(*nn_new_with_status_icon) (const gchar *summary, const gchar *message, const gchar *icon, GtkStatusIcon *status_icon); --static void *(*nn_new) (const gchar *summary, const gchar *message, const gchar *icon, GtkWidget *attach); -+/* recent versions of libnotify don't take the fourth GtkWidget argument, but passing an -+ * extra NULL argument will be fine */ -+static void *(*nn_new) (const gchar *summary, const gchar *message, const gchar *icon, gpointer dummy); - static gboolean (*nn_show) (void *noti, GError **error); - static void (*nn_set_timeout) (void *noti, gint timeout); - -@@ -160,8 +161,6 @@ libnotify_notify_new (const char *title, - goto bad; - if (!g_module_symbol (nn_mod, "notify_uninit", (gpointer)&nn_uninit)) - goto bad; -- if (!g_module_symbol (nn_mod, "notify_notification_new_with_status_icon", (gpointer)&nn_new_with_status_icon)) -- goto bad; - if (!g_module_symbol (nn_mod, "notify_notification_new", (gpointer)&nn_new)) - goto bad; - if (!g_module_symbol (nn_mod, "notify_notification_show", (gpointer)&nn_show)) diff --git a/xchat-2.8.8-link-against-libnotify.patch b/xchat-2.8.8-link-against-libnotify.patch deleted file mode 100644 index 31e6c08..0000000 --- a/xchat-2.8.8-link-against-libnotify.patch +++ /dev/null @@ -1,343 +0,0 @@ -From: Christopher Aillon -Date: Thu, 7 Apr 2011 19:34:14 -0700 -Subject: [PATCH] Link directly against libnotify - -Dynamically loading the library isn't ideal since the soname -can change silently on us. Additionally, notify-send is -shipped as part of libnotify, so we aren't actually bringing -in a new dependency. Since we'd need to patch the source and -rebuild for new sonames anyway, there's little benefit to -dynamically loading libnotify. - -Plus, this has the benefit of cleaning up the code, as well as -ensuring we'll catch any future soname changes sooner. - -https://bugzilla.redhat.com/show_bug.cgi?id=693362 -https://sourceforge.net/tracker/?func=detail&aid=3280223&group_id=239&atid=100239 ---- - configure.in | 23 +++++++ - src/fe-gtk/plugin-tray.c | 144 ++++++++++------------------------------------- - 2 files changed, 55 insertions(+), 112 deletions(-) - -diff -p -U8 xchat-2.8.8/configure.in.libnotifyso4 xchat-2.8.8/configure.in ---- xchat-2.8.8/configure.in.libnotifyso4 2010-05-29 23:01:16.000000000 -0700 -+++ xchat-2.8.8/configure.in 2011-04-07 19:27:00.448137113 -0700 -@@ -34,16 +34,17 @@ AH_VERBATIM([PREFIX],[#undef PREFIX]) - AH_VERBATIM([XCHATLIBDIR],[#undef XCHATLIBDIR]) - AH_VERBATIM([XCHATSHAREDIR],[#undef XCHATSHAREDIR]) - AH_VERBATIM([SOCKS],[#undef SOCKS]) - AH_VERBATIM([USE_MSPROXY],[#undef USE_MSPROXY]) - dnl AH_VERBATIM([USE_GNOME],[#undef USE_GNOME]) - AH_VERBATIM([USE_SHM],[#undef USE_SHM]) - AH_VERBATIM([USE_GTKSPELL],[#undef USE_GTKSPELL]) - AH_VERBATIM([USE_LIBSEXY],[#undef USE_LIBSEXY]) -+AH_VERBATIM([USE_LIBNOTIFY],[#undef USE_LIBNOTIFY]) - AH_VERBATIM([USE_IPV6],[#undef USE_IPV6]) - AH_VERBATIM([USE_MMX],[#undef USE_MMX]) - AH_VERBATIM([USE_OPENSSL],[#undef USE_OPENSSL]) - AH_VERBATIM([USE_PLUGIN],[#undef USE_PLUGIN]) - AH_VERBATIM([USE_XFT],[#undef USE_XFT]) - AH_VERBATIM([USE_XLIB],[#undef USE_XLIB]) - AH_VERBATIM([USE_SIGACTION],[#undef USE_SIGACTION]) - AH_VERBATIM([USING_FREEBSD],[#undef USING_FREEBSD]) -@@ -126,16 +127,20 @@ AC_ARG_ENABLE(tcl, - AC_ARG_ENABLE(plugin, - [ --disable-plugin disable plugin support], - plugin=$enableval, plugin=yes) - - AC_ARG_ENABLE(dbus, - [ --disable-dbus disable DBUS support], - dbus=$enableval, dbus=yes) - -+AC_ARG_ENABLE(libnotify, -+[ --disable-libnotify disable libnotify support], -+ libnotify=$enableval, libnotify=yes) -+ - AC_ARG_ENABLE(mmx, - [ --disable-mmx disable MMX assembly routines], - mmx=$enableval, mmx=yes) - - AC_ARG_ENABLE(shm, - [ --enable-shm enable use of XShm for fast tinting (default: no)], - shm=$enableval, shm=no) - -@@ -482,16 +487,32 @@ if test "x$dbus" = "xyes" ; then - - DBUS_SERVICES_DIR="$DATADIR/dbus-1/services" - AC_SUBST(DBUS_SERVICES_DIR) - AC_DEFINE_UNQUOTED(DBUS_SERVICES_DIR, "$DBUS_SERVICES_DIR", [Where services dir for DBUS is]) - fi - fi - - dnl ********************************************************************* -+dnl ** LIBNOTIFY ******************************************************** -+dnl ********************************************************************* -+ -+if test "x$libnotify" = "xyes" ; then -+ PKG_CHECK_MODULES(LIBNOTIFY, libnotify >= 0.4, [], [ -+ AC_MSG_RESULT(no) -+ libnotify=no -+ ]) -+ if test "$libnotify" != "no" ; then -+ GUI_LIBS="$GUI_LIBS $LIBNOTIFY_LIBS" -+ GUI_CFLAGS="$GUI_CFLAGS $LIBNOTIFY_CFLAGS" -+ AC_DEFINE(USE_LIBNOTIFY) -+ fi -+fi -+ -+dnl ********************************************************************* - dnl ** SPELL ************************************************************ - dnl ********************************************************************* - - if test "$spell" = "gtkspell" ; then - PKG_CHECK_MODULES(GTKSPELL, gtkspell-2.0 >= 2.0.2, [], [ - AC_MSG_RESULT(no) - spell=no - ]) -@@ -519,16 +540,17 @@ if test "$spell" = "static" ; then - fi - - dnl ********************************************************************* - dnl ** CONDITIONALS ***************************************************** - dnl ********************************************************************* - - AM_CONDITIONAL(USE_OPENSSL, test "x$openssl" = "xyes") - AM_CONDITIONAL(USE_LIBSEXY, test "x$spell" = "xstatic") -+AM_CONDITIONAL(USE_LIBNOTIFY, test "x$libnotify" = "xyes") - AM_CONDITIONAL(DO_TEXT, test "x$textfe" = "xyes") - AM_CONDITIONAL(DO_GTK, test "x$gtkfe" = "xyes") - AM_CONDITIONAL(DO_PERL, test "x$perl" = "xyes") - AM_CONDITIONAL(DO_PYTHON, test "x$python" = "xyes") - AM_CONDITIONAL(DO_TCL, test "x$tcl" = "xyes") - AM_CONDITIONAL(DO_PLUGIN, test "x$plugin" = "xyes") - AM_CONDITIONAL(USE_DBUS, test "x$dbus" = "xyes") - AM_CONDITIONAL(DO_GCONF, test "x$GCONFTOOL" != "xno") -@@ -807,16 +829,17 @@ echo mmx tinting ......... : $mmx\ spell - echo XShm tinting ........ : $shm\ plugin interface ...... : $plugin - if test "$xft" = no; then - echo text backend ........ : pango\ nls/gettext ........... : $USE_NLS - else - echo text backend ........ : xft\ nls/gettext ........... : $USE_NLS - fi - echo openssl support ..... : $openssl\ ipv6 support .......... : $ipv6 - echo dbus support ........ : $dbus\ msproxy ntlm \(ISA\) .... : $have_ntlm -+echo libnotify support ... : $libnotify - echo - echo The binary will be installed in $prefix/bin - echo - - if test "$gtkfe" = no; then - echo Warning: The GTK \(GUI\) frontend will not be built. - echo - fi -diff -p -U8 xchat-2.8.8/src/fe-gtk/plugin-tray.c.libnotifyso4 xchat-2.8.8/src/fe-gtk/plugin-tray.c ---- xchat-2.8.8/src/fe-gtk/plugin-tray.c.libnotifyso4 2011-04-07 17:57:27.524307905 -0700 -+++ xchat-2.8.8/src/fe-gtk/plugin-tray.c 2011-04-07 19:18:33.429475719 -0700 -@@ -10,17 +10,27 @@ - #include "../common/fe.h" - #include "../common/util.h" - #include "fe-gtk.h" - #include "pixmaps.h" - #include "maingui.h" - #include "menu.h" - #include - --#define LIBNOTIFY -+#ifdef USE_LIBNOTIFY -+#include -+#ifndef NOTIFY_CHECK_VERSION -+#define NOTIFY_CHECK_VERSION(x,y,z) 0 -+#endif -+#if NOTIFY_CHECK_VERSION(0,7,0) -+#define XC_NOTIFY_NEW(a,b,c,d) notify_notification_new(a,b,c) -+#else -+#define XC_NOTIFY_NEW(a,b,c,d) notify_notification_new(a,b,c,d) -+#endif -+#endif - - typedef enum /* current icon status */ - { - TS_NONE, - TS_MESSAGE, - TS_HIGHLIGHT, - TS_FILEOFFER, - TS_CUSTOM /* plugin */ -@@ -112,90 +122,16 @@ tray_count_networks (void) - - void - fe_tray_set_tooltip (const char *text) - { - if (sticon) - gtk_status_icon_set_tooltip (sticon, text); - } - --#ifdef LIBNOTIFY -- --/* dynamic access to libnotify.so */ -- --static void *nn_mod = NULL; --/* prototypes */ --static gboolean (*nn_init) (char *); --static void (*nn_uninit) (void); --/* recent versions of libnotify don't take the fourth GtkWidget argument, but passing an -- * extra NULL argument will be fine */ --static void *(*nn_new) (const gchar *summary, const gchar *message, const gchar *icon, gpointer dummy); --static gboolean (*nn_show) (void *noti, GError **error); --static void (*nn_set_timeout) (void *noti, gint timeout); -- --static void --libnotify_cleanup (void) --{ -- if (nn_mod) -- { -- nn_uninit (); -- g_module_close (nn_mod); -- nn_mod = NULL; -- } --} -- --static gboolean --libnotify_notify_new (const char *title, const char *text, GtkStatusIcon *icon) --{ -- void *noti; -- -- if (!nn_mod) -- { -- nn_mod = g_module_open ("libnotify", G_MODULE_BIND_LAZY); -- if (!nn_mod) -- { -- nn_mod = g_module_open ("libnotify.so.1", G_MODULE_BIND_LAZY); -- if (!nn_mod) -- return FALSE; -- } -- -- if (!g_module_symbol (nn_mod, "notify_init", (gpointer)&nn_init)) -- goto bad; -- if (!g_module_symbol (nn_mod, "notify_uninit", (gpointer)&nn_uninit)) -- goto bad; -- if (!g_module_symbol (nn_mod, "notify_notification_new", (gpointer)&nn_new)) -- goto bad; -- if (!g_module_symbol (nn_mod, "notify_notification_show", (gpointer)&nn_show)) -- goto bad; -- if (!g_module_symbol (nn_mod, "notify_notification_set_timeout", (gpointer)&nn_set_timeout)) -- goto bad; -- if (!nn_init (PACKAGE_NAME)) -- goto bad; -- } -- -- text = strip_color (text, -1, STRIP_ALL|STRIP_ESCMARKUP); -- title = strip_color (title, -1, STRIP_ALL); -- noti = nn_new (title, text, XCHATSHAREDIR"/pixmaps/xchat.png", NULL); -- g_free ((char *)title); -- g_free ((char *)text); -- -- nn_set_timeout (noti, prefs.input_balloon_time*1000); -- nn_show (noti, NULL); -- g_object_unref (G_OBJECT (noti)); -- -- return TRUE; -- --bad: -- g_module_close (nn_mod); -- nn_mod = NULL; -- return FALSE; --} -- --#endif -- - void - fe_tray_set_balloon (const char *title, const char *text) - { - #ifndef WIN32 - const char *argv[8]; - const char *path; - char time[16]; - WinStatus ws; -@@ -208,52 +144,36 @@ fe_tray_set_balloon (const char *title, - /* bit 1 of flags means "no balloons unless hidden/iconified" */ - if (ws != WS_HIDDEN && (prefs.gui_tray_flags & 2)) - return; - - /* FIXME: this should close the current balloon */ - if (!text) - return; - --#ifdef LIBNOTIFY -- /* try it via libnotify.so */ -- if (libnotify_notify_new (title, text, sticon)) -- return; /* success */ --#endif -+#ifdef USE_LIBNOTIFY -+ NotifyNotification *notification; -+ char *notify_text, *notify_title; - -- /* try it the crude way */ -- path = g_find_program_in_path ("notify-send"); -- if (path) -- { -- sprintf(time, "%d000",prefs.input_balloon_time); -- argv[0] = path; -- argv[1] = "-i"; -- argv[2] = "gtk-dialog-info"; -- if (access (XCHATSHAREDIR"/pixmaps/xchat.png", R_OK) == 0) -- argv[2] = XCHATSHAREDIR"/pixmaps/xchat.png"; -- argv[3] = "-t"; -- argv[4] = time; -- argv[5] = title; -- text = strip_color (text, -1, STRIP_ALL|STRIP_ESCMARKUP); -- argv[6] = text; -- argv[7] = NULL; -- xchat_execv (argv); -- g_free ((char *)path); -- g_free ((char *)text); -- } -- else -- { -- /* show this error only once */ -- static unsigned char said_it = FALSE; -- if (!said_it) -- { -- said_it = TRUE; -- fe_message (_("Cannot find 'notify-send' to open balloon alerts.\nPlease install libnotify."), FE_MSG_ERROR); -- } -- } -+ if (!notify_is_initted()) -+ notify_init(PACKAGE_NAME); -+ -+ notify_text = strip_color (text, -1, STRIP_ALL|STRIP_ESCMARKUP); -+ notify_title = strip_color (title, -1, STRIP_ALL); -+ -+ notification = XC_NOTIFY_NEW (notify_title, notify_text, XCHATSHAREDIR"/pixmaps/xchat.png", NULL); -+ -+ g_free ((char *)notify_title); -+ g_free ((char *)notify_text); -+ -+ notify_notification_set_timeout (notification, prefs.input_balloon_time*1000); -+ notify_notification_show (notification, NULL); -+ -+ g_object_unref (notification); -+#endif - #endif - } - - static void - tray_set_balloonf (const char *text, const char *format, ...) - { - va_list args; - char *buf; -@@ -840,13 +760,13 @@ tray_plugin_init (xchat_plugin *plugin_h - return 1; /* return 1 for success */ - } - - int - tray_plugin_deinit (xchat_plugin *plugin_handle) - { - #ifdef WIN32 - tray_cleanup (); --#elif defined(LIBNOTIFY) -- libnotify_cleanup (); -+#elif defined(USE_LIBNOTIFY) -+ notify_uninit (); - #endif - return 1; - } diff --git a/xchat-2.8.8-notifications-and-tray.patch b/xchat-2.8.8-notifications-and-tray.patch deleted file mode 100644 index 0803ce2..0000000 --- a/xchat-2.8.8-notifications-and-tray.patch +++ /dev/null @@ -1,30 +0,0 @@ -diff -urNp xchat-2.8.8/src/common/cfgfiles.c xchat-2.8.8-notifications-and-tray/src/common/cfgfiles.c ---- xchat-2.8.8/src/common/cfgfiles.c 2009-08-16 11:40:16.000000000 +0200 -+++ xchat-2.8.8-notifications-and-tray/src/common/cfgfiles.c 2012-11-27 15:34:13.080403744 +0100 -@@ -670,11 +670,13 @@ load_config (void) - prefs.autoopendccchatwindow = 1; - prefs.userhost = 1; - prefs.gui_url_mod = 4; /* ctrl */ -- prefs.gui_tray = 1; -+ prefs.gui_tray = 0; - prefs.gui_pane_left_size = 100; - prefs.gui_pane_right_size = 100; - prefs.mainwindow_save = 1; - prefs.bantype = 2; -+ prefs.input_balloon_hilight = 1; -+ prefs.input_balloon_priv = 1; - prefs.input_balloon_time = 20; - prefs.input_flash_priv = prefs.input_flash_hilight = 1; - prefs.input_tray_priv = prefs.input_tray_hilight = 1; -diff -urNp xchat-2.8.8/src/fe-gtk/maingui.c xchat-2.8.8-notifications-and-tray/src/fe-gtk/maingui.c ---- xchat-2.8.8/src/fe-gtk/maingui.c 2010-05-16 05:15:55.000000000 +0200 -+++ xchat-2.8.8-notifications-and-tray/src/fe-gtk/maingui.c 2012-11-27 16:05:27.609518192 +0100 -@@ -3107,7 +3107,7 @@ mg_tabwindow_de_cb (GtkWidget *widget, G - list = list->next; - } - -- mg_open_quit_dialog (TRUE); -+ mg_open_quit_dialog (FALSE); - return TRUE; - } - diff --git a/xchat-2.8.8-openssl-1.1.0.patch b/xchat-2.8.8-openssl-1.1.0.patch deleted file mode 100644 index 5fd2c0f..0000000 --- a/xchat-2.8.8-openssl-1.1.0.patch +++ /dev/null @@ -1,89 +0,0 @@ -diff -urNp xchat-2.8.8.orig/src/common/server.c xchat-2.8.8/src/common/server.c ---- xchat-2.8.8.orig/src/common/server.c 2010-05-30 04:14:41.000000000 +0200 -+++ xchat-2.8.8/src/common/server.c 2017-06-26 15:40:02.989120175 +0200 -@@ -593,14 +593,16 @@ ssl_cb_info (SSL * s, int where, int ret - static int - ssl_cb_verify (int ok, X509_STORE_CTX * ctx) - { -+ X509 *current_cert; - char subject[256]; - char issuer[256]; - char buf[512]; - - -- X509_NAME_oneline (X509_get_subject_name (ctx->current_cert), subject, -+ current_cert = X509_STORE_CTX_get_current_cert (ctx); -+ X509_NAME_oneline (X509_get_subject_name (current_cert), subject, - sizeof (subject)); -- X509_NAME_oneline (X509_get_issuer_name (ctx->current_cert), issuer, -+ X509_NAME_oneline (X509_get_issuer_name (current_cert), issuer, - sizeof (issuer)); - - snprintf (buf, sizeof (buf), "* Subject: %s", subject); -@@ -751,7 +753,12 @@ ssl_do_connect (server * serv) - return (0); /* remove it (0) */ - } else - { -- if (serv->ssl->session && serv->ssl->session->time + SSLTMOUT < time (NULL)) -+ SSL_SESSION *session; -+ long session_time; -+ -+ session = SSL_get_session (serv->ssl); -+ session_time = SSL_SESSION_get_time (session); -+ if (session && session_time + SSLTMOUT < time (NULL)) - { - snprintf (buf, sizeof (buf), "SSL handshake timed out"); - EMIT_SIGNAL (XP_TE_CONNFAIL, serv->server_session, buf, NULL, -diff -urNp xchat-2.8.8.orig/src/common/ssl.c xchat-2.8.8/src/common/ssl.c ---- xchat-2.8.8.orig/src/common/ssl.c 2017-06-26 15:43:41.924066669 +0200 -+++ xchat-2.8.8/src/common/ssl.c 2017-06-26 15:54:09.769849268 +0200 -@@ -136,6 +136,8 @@ int - _SSL_get_cert_info (struct cert_info *cert_info, SSL * ssl) - { - X509 *peer_cert; -+ X509_PUBKEY *peer_pub_key; -+ ASN1_OBJECT *algorithm; - EVP_PKEY *peer_pkey; - /* EVP_PKEY *ca_pkey; */ - /* EVP_PKEY *tmp_pkey; */ -@@ -155,8 +157,10 @@ _SSL_get_cert_info (struct cert_info *ce - broke_oneline (cert_info->subject, cert_info->subject_word); - broke_oneline (cert_info->issuer, cert_info->issuer_word); - -- alg = OBJ_obj2nid (peer_cert->cert_info->key->algor->algorithm); -- sign_alg = OBJ_obj2nid (peer_cert->sig_alg->algorithm); -+ peer_pub_key = X509_get_X509_PUBKEY (peer_cert); -+ X509_PUBKEY_get0_param (&algorithm, NULL, NULL, NULL, peer_pub_key); -+ alg = OBJ_obj2nid (algorithm); -+ sign_alg = X509_get_signature_type (peer_cert); - ASN1_TIME_snprintf (notBefore, sizeof (notBefore), - X509_get_notBefore (peer_cert)); - ASN1_TIME_snprintf (notAfter, sizeof (notAfter), -@@ -199,7 +203,7 @@ _SSL_get_cert_info (struct cert_info *ce - struct chiper_info * - _SSL_get_cipher_info (SSL * ssl) - { -- SSL_CIPHER *c; -+ const SSL_CIPHER *c; - - - c = SSL_get_current_cipher (ssl); -@@ -274,6 +278,7 @@ SSL * - _SSL_socket (SSL_CTX *ctx, int sd) - { - SSL *ssl; -+ SSL_METHOD *method; - - - if (!(ssl = SSL_new (ctx))) -@@ -281,7 +286,9 @@ _SSL_socket (SSL_CTX *ctx, int sd) - __SSL_critical_error ("SSL_new"); - - SSL_set_fd (ssl, sd); -- if (ctx->method == SSLv23_client_method()) -+ -+ method = SSL_CTX_get_ssl_method (ctx); -+ if (method == SSLv23_client_method()) - SSL_set_connect_state (ssl); - else - SSL_set_accept_state(ssl); diff --git a/xchat-2.8.8-xdg-dirs.patch b/xchat-2.8.8-xdg-dirs.patch deleted file mode 100644 index 5530085..0000000 --- a/xchat-2.8.8-xdg-dirs.patch +++ /dev/null @@ -1,1224 +0,0 @@ -diff -urNp xchat-2.8.8.orig/src/common/cfgfiles.c xchat-2.8.8/src/common/cfgfiles.c ---- xchat-2.8.8.orig/src/common/cfgfiles.c 2013-06-10 14:01:07.402432963 +0200 -+++ xchat-2.8.8/src/common/cfgfiles.c 2013-06-10 14:27:09.668464169 +0200 -@@ -1,3 +1,4 @@ -+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ - /* X-Chat - * Copyright (C) 1998 Peter Zelezny. - * -@@ -34,7 +35,8 @@ - #ifdef WIN32 - #define XCHAT_DIR "X-Chat 2" - #else --#define XCHAT_DIR ".xchat2" -+#define XCHAT_DIR "xchat2" -+#define OLD_XCHAT_DIR ".xchat2" - #endif - #define DEF_FONT "Monospace 9" - -@@ -318,17 +320,68 @@ get_xdir_fs (void) - return xdir_fs; - } - -+void -+maybe_migrate_xdg_config (void) -+{ -+} -+ - #else - - char * - get_xdir_fs (void) - { - if (!xdir_fs) -- xdir_fs = g_strdup_printf ("%s/" XCHAT_DIR, g_get_home_dir ()); -+ xdir_fs = g_strdup_printf ("%s/" XCHAT_DIR, g_get_user_config_dir ()); - - return xdir_fs; - } - -+void -+maybe_migrate_xdg_config (void) -+{ -+ char *old_dir; -+ char *new_dir; -+ GFile *source; -+ GFile *dest; -+ GError *error; -+ gboolean res; -+ -+ new_dir = g_strdup_printf ("%s/" XCHAT_DIR, g_get_user_config_dir ()); -+ -+ /* already migrated */ -+ if (g_file_test (new_dir, G_FILE_TEST_IS_DIR)) -+ { -+ g_free (new_dir); -+ return; -+ } -+ -+ /* nothing to migrate */ -+ old_dir = g_strdup_printf ("%s/" OLD_XCHAT_DIR, g_get_home_dir ()); -+ if (!g_file_test (old_dir, G_FILE_TEST_IS_DIR)) -+ { -+ g_free (old_dir); -+ g_free (new_dir); -+ return; -+ } -+ -+ source = g_file_new_for_path (old_dir); -+ dest = g_file_new_for_path (new_dir); -+ -+ g_message (_("Migrating data from %s to %s"), old_dir, new_dir); -+ error = NULL; -+ res = g_file_move (source, dest, G_FILE_COPY_NONE, NULL, NULL, NULL, &error); -+ if (error != NULL) -+ { -+ g_warning (_("Error migrating data: %s"), error->message); -+ g_error_free (error); -+ } -+ -+ g_free (old_dir); -+ g_free (new_dir); -+ g_object_unref (source); -+ g_object_unref (dest); -+} -+ - #endif /* !WIN32 */ - - char * -@@ -351,7 +404,7 @@ check_prefs_dir (void) - #else - if (mkdir (dir, S_IRUSR | S_IWUSR | S_IXUSR) != 0) - #endif -- fe_message (_("Cannot create ~/.xchat2"), FE_MSG_ERROR); -+ fe_message (_("Cannot create configuration directory"), FE_MSG_ERROR); - } - } - -@@ -593,6 +646,7 @@ load_config (void) - const char *username, *realname; - int res, val, i, fh; - -+ maybe_migrate_xdg_config (); - check_prefs_dir (); - username = g_get_user_name (); - if (!username) -diff -urNp xchat-2.8.8.orig/src/common/cfgfiles.c.orig xchat-2.8.8/src/common/cfgfiles.c.orig ---- xchat-2.8.8.orig/src/common/cfgfiles.c.orig 1970-01-01 01:00:00.000000000 +0100 -+++ xchat-2.8.8/src/common/cfgfiles.c.orig 2013-06-10 14:26:18.219319628 +0200 -@@ -0,0 +1,1104 @@ -+/* X-Chat -+ * Copyright (C) 1998 Peter Zelezny. -+ * -+ * This program 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. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include "xchat.h" -+#include "cfgfiles.h" -+#include "util.h" -+#include "fe.h" -+#include "text.h" -+#include "xchatc.h" -+ -+#ifdef WIN32 -+#define XCHAT_DIR "X-Chat 2" -+#else -+#define XCHAT_DIR ".xchat2" -+#endif -+#define DEF_FONT "Monospace 9" -+ -+void -+list_addentry (GSList ** list, char *cmd, char *name) -+{ -+ struct popup *pop; -+ int cmd_len = 1, name_len; -+ -+ /* remove <2.8.0 stuff */ -+ if (!strcmp (cmd, "away") && !strcmp (name, "BACK")) -+ return; -+ -+ if (cmd) -+ cmd_len = strlen (cmd) + 1; -+ name_len = strlen (name) + 1; -+ -+ pop = malloc (sizeof (struct popup) + cmd_len + name_len); -+ pop->name = (char *) pop + sizeof (struct popup); -+ pop->cmd = pop->name + name_len; -+ -+ memcpy (pop->name, name, name_len); -+ if (cmd) -+ memcpy (pop->cmd, cmd, cmd_len); -+ else -+ pop->cmd[0] = 0; -+ -+ *list = g_slist_append (*list, pop); -+} -+ -+/* read it in from a buffer to our linked list */ -+ -+static void -+list_load_from_data (GSList ** list, char *ibuf, int size) -+{ -+ char cmd[384]; -+ char name[128]; -+ char *buf; -+ int pnt = 0; -+ -+ cmd[0] = 0; -+ name[0] = 0; -+ -+ while (buf_get_line (ibuf, &buf, &pnt, size)) -+ { -+ if (*buf != '#') -+ { -+ if (!strncasecmp (buf, "NAME ", 5)) -+ { -+ safe_strcpy (name, buf + 5, sizeof (name)); -+ } -+ else if (!strncasecmp (buf, "CMD ", 4)) -+ { -+ safe_strcpy (cmd, buf + 4, sizeof (cmd)); -+ if (*name) -+ { -+ list_addentry (list, cmd, name); -+ cmd[0] = 0; -+ name[0] = 0; -+ } -+ } -+ } -+ } -+} -+ -+void -+list_loadconf (char *file, GSList ** list, char *defaultconf) -+{ -+ char filebuf[256]; -+ char *ibuf; -+ int fh; -+ struct stat st; -+ -+ snprintf (filebuf, sizeof (filebuf), "%s/%s", get_xdir_fs (), file); -+ fh = open (filebuf, O_RDONLY | OFLAGS); -+ if (fh == -1) -+ { -+ if (defaultconf) -+ list_load_from_data (list, defaultconf, strlen (defaultconf)); -+ return; -+ } -+ if (fstat (fh, &st) != 0) -+ { -+ perror ("fstat"); -+ abort (); -+ } -+ -+ ibuf = malloc (st.st_size); -+ read (fh, ibuf, st.st_size); -+ close (fh); -+ -+ list_load_from_data (list, ibuf, st.st_size); -+ -+ free (ibuf); -+} -+ -+void -+list_free (GSList ** list) -+{ -+ void *data; -+ while (*list) -+ { -+ data = (void *) (*list)->data; -+ free (data); -+ *list = g_slist_remove (*list, data); -+ } -+} -+ -+int -+list_delentry (GSList ** list, char *name) -+{ -+ struct popup *pop; -+ GSList *alist = *list; -+ -+ while (alist) -+ { -+ pop = (struct popup *) alist->data; -+ if (!strcasecmp (name, pop->name)) -+ { -+ *list = g_slist_remove (*list, pop); -+ free (pop); -+ return 1; -+ } -+ alist = alist->next; -+ } -+ return 0; -+} -+ -+char * -+cfg_get_str (char *cfg, char *var, char *dest, int dest_len) -+{ -+ while (1) -+ { -+ if (!strncasecmp (var, cfg, strlen (var))) -+ { -+ char *value, t; -+ cfg += strlen (var); -+ while (*cfg == ' ') -+ cfg++; -+ if (*cfg == '=') -+ cfg++; -+ while (*cfg == ' ') -+ cfg++; -+ /*while (*cfg == ' ' || *cfg == '=') -+ cfg++; */ -+ value = cfg; -+ while (*cfg != 0 && *cfg != '\n') -+ cfg++; -+ t = *cfg; -+ *cfg = 0; -+ safe_strcpy (dest, value, dest_len); -+ *cfg = t; -+ return cfg; -+ } -+ while (*cfg != 0 && *cfg != '\n') -+ cfg++; -+ if (*cfg == 0) -+ return 0; -+ cfg++; -+ if (*cfg == 0) -+ return 0; -+ } -+} -+ -+static int -+cfg_put_str (int fh, char *var, char *value) -+{ -+ char buf[512]; -+ int len; -+ -+ snprintf (buf, sizeof buf, "%s = %s\n", var, value); -+ len = strlen (buf); -+ return (write (fh, buf, len) == len); -+} -+ -+int -+cfg_put_color (int fh, int r, int g, int b, char *var) -+{ -+ char buf[400]; -+ int len; -+ -+ snprintf (buf, sizeof buf, "%s = %04x %04x %04x\n", var, r, g, b); -+ len = strlen (buf); -+ return (write (fh, buf, len) == len); -+} -+ -+int -+cfg_put_int (int fh, int value, char *var) -+{ -+ char buf[400]; -+ int len; -+ -+ if (value == -1) -+ value = 1; -+ -+ snprintf (buf, sizeof buf, "%s = %d\n", var, value); -+ len = strlen (buf); -+ return (write (fh, buf, len) == len); -+} -+ -+int -+cfg_get_color (char *cfg, char *var, int *r, int *g, int *b) -+{ -+ char str[128]; -+ -+ if (!cfg_get_str (cfg, var, str, sizeof (str))) -+ return 0; -+ -+ sscanf (str, "%04x %04x %04x", r, g, b); -+ return 1; -+} -+ -+int -+cfg_get_int_with_result (char *cfg, char *var, int *result) -+{ -+ char str[128]; -+ -+ if (!cfg_get_str (cfg, var, str, sizeof (str))) -+ { -+ *result = 0; -+ return 0; -+ } -+ -+ *result = 1; -+ return atoi (str); -+} -+ -+int -+cfg_get_int (char *cfg, char *var) -+{ -+ char str[128]; -+ -+ if (!cfg_get_str (cfg, var, str, sizeof (str))) -+ return 0; -+ -+ return atoi (str); -+} -+ -+char *xdir_fs = NULL; /* file system encoding */ -+char *xdir_utf = NULL; /* utf-8 encoding */ -+ -+#ifdef WIN32 -+ -+#include -+ -+static gboolean -+get_reg_str (const char *sub, const char *name, char *out, DWORD len) -+{ -+ HKEY hKey; -+ DWORD t; -+ -+ if (RegOpenKeyEx (HKEY_CURRENT_USER, sub, 0, KEY_READ, &hKey) == -+ ERROR_SUCCESS) -+ { -+ if (RegQueryValueEx (hKey, name, NULL, &t, out, &len) != ERROR_SUCCESS || -+ t != REG_SZ) -+ { -+ RegCloseKey (hKey); -+ return FALSE; -+ } -+ out[len-1] = 0; -+ RegCloseKey (hKey); -+ return TRUE; -+ } -+ -+ return FALSE; -+} -+ -+char * -+get_xdir_fs (void) -+{ -+ if (!xdir_fs) -+ { -+ char out[256]; -+ -+ if (!get_reg_str ("Software\\Microsoft\\Windows\\CurrentVersion\\" -+ "Explorer\\Shell Folders", "AppData", out, sizeof (out))) -+ return "./config"; -+ xdir_fs = g_strdup_printf ("%s\\" XCHAT_DIR, out); -+ } -+ return xdir_fs; -+} -+ -+#else -+ -+char * -+get_xdir_fs (void) -+{ -+ if (!xdir_fs) -+ xdir_fs = g_strdup_printf ("%s/" XCHAT_DIR, g_get_home_dir ()); -+ -+ return xdir_fs; -+} -+ -+#endif /* !WIN32 */ -+ -+char * -+get_xdir_utf8 (void) -+{ -+ if (!xdir_utf) /* never free this, keep it for program life time */ -+ xdir_utf = xchat_filename_to_utf8 (get_xdir_fs (), -1, 0, 0, 0); -+ -+ return xdir_utf; -+} -+ -+static void -+check_prefs_dir (void) -+{ -+ char *dir = get_xdir_fs (); -+ if (access (dir, F_OK) != 0) -+ { -+#ifdef WIN32 -+ if (mkdir (dir) != 0) -+#else -+ if (mkdir (dir, S_IRUSR | S_IWUSR | S_IXUSR) != 0) -+#endif -+ fe_message (_("Cannot create ~/.xchat2"), FE_MSG_ERROR); -+ } -+} -+ -+static char * -+default_file (void) -+{ -+ static char *dfile = 0; -+ -+ if (!dfile) -+ { -+ dfile = malloc (strlen (get_xdir_fs ()) + 12); -+ sprintf (dfile, "%s/xchat.conf", get_xdir_fs ()); -+ } -+ return dfile; -+} -+ -+/* Keep these sorted!! */ -+ -+const struct prefs vars[] = { -+ {"auto_save", P_OFFINT (autosave), TYPE_BOOL}, -+ {"auto_save_url", P_OFFINT (autosave_url), TYPE_BOOL}, -+ -+ {"away_auto_unmark", P_OFFINT (auto_unmark_away), TYPE_BOOL}, -+ {"away_reason", P_OFFSET (awayreason), TYPE_STR}, -+ {"away_show_message", P_OFFINT (show_away_message), TYPE_BOOL}, -+ {"away_show_once", P_OFFINT (show_away_once), TYPE_BOOL}, -+ {"away_size_max", P_OFFINT (away_size_max), TYPE_INT}, -+ {"away_timeout", P_OFFINT (away_timeout), TYPE_INT}, -+ {"away_track", P_OFFINT (away_track), TYPE_BOOL}, -+ -+ {"completion_amount", P_OFFINT (completion_amount), TYPE_INT}, -+ {"completion_auto", P_OFFINT (nickcompletion), TYPE_BOOL}, -+ {"completion_sort", P_OFFINT (completion_sort), TYPE_INT}, -+ {"completion_suffix", P_OFFSET (nick_suffix), TYPE_STR}, -+ -+ {"dcc_auto_chat", P_OFFINT (autodccchat), TYPE_INT}, -+ {"dcc_auto_resume", P_OFFINT (autoresume), TYPE_BOOL}, -+ {"dcc_auto_send", P_OFFINT (autodccsend), TYPE_INT}, -+ {"dcc_blocksize", P_OFFINT (dcc_blocksize), TYPE_INT}, -+ {"dcc_completed_dir", P_OFFSET (dcc_completed_dir), TYPE_STR}, -+ {"dcc_dir", P_OFFSET (dccdir), TYPE_STR}, -+ {"dcc_fast_send", P_OFFINT (fastdccsend), TYPE_BOOL}, -+ {"dcc_global_max_get_cps", P_OFFINT (dcc_global_max_get_cps), TYPE_INT}, -+ {"dcc_global_max_send_cps", P_OFFINT (dcc_global_max_send_cps), TYPE_INT}, -+ {"dcc_ip", P_OFFSET (dcc_ip_str), TYPE_STR}, -+ {"dcc_ip_from_server", P_OFFINT (ip_from_server), TYPE_BOOL}, -+ {"dcc_max_get_cps", P_OFFINT (dcc_max_get_cps), TYPE_INT}, -+ {"dcc_max_send_cps", P_OFFINT (dcc_max_send_cps), TYPE_INT}, -+ {"dcc_permissions", P_OFFINT (dccpermissions), TYPE_INT}, -+ {"dcc_port_first", P_OFFINT (first_dcc_send_port), TYPE_INT}, -+ {"dcc_port_last", P_OFFINT (last_dcc_send_port), TYPE_INT}, -+ {"dcc_remove", P_OFFINT (dcc_remove), TYPE_BOOL}, -+ {"dcc_save_nick", P_OFFINT (dccwithnick), TYPE_BOOL}, -+ {"dcc_send_fillspaces", P_OFFINT (dcc_send_fillspaces), TYPE_BOOL}, -+ {"dcc_stall_timeout", P_OFFINT (dccstalltimeout), TYPE_INT}, -+ {"dcc_timeout", P_OFFINT (dcctimeout), TYPE_INT}, -+ -+ {"dnsprogram", P_OFFSET (dnsprogram), TYPE_STR}, -+ -+ {"flood_ctcp_num", P_OFFINT (ctcp_number_limit), TYPE_INT}, -+ {"flood_ctcp_time", P_OFFINT (ctcp_time_limit), TYPE_INT}, -+ {"flood_msg_num", P_OFFINT (msg_number_limit), TYPE_INT}, -+ {"flood_msg_time", P_OFFINT (msg_time_limit), TYPE_INT}, -+ -+ {"gui_auto_open_chat", P_OFFINT (autoopendccchatwindow), TYPE_BOOL}, -+ {"gui_auto_open_dialog", P_OFFINT (autodialog), TYPE_BOOL}, -+ {"gui_auto_open_recv", P_OFFINT (autoopendccrecvwindow), TYPE_BOOL}, -+ {"gui_auto_open_send", P_OFFINT (autoopendccsendwindow), TYPE_BOOL}, -+ {"gui_dialog_height", P_OFFINT (dialog_height), TYPE_INT}, -+ {"gui_dialog_left", P_OFFINT (dialog_left), TYPE_INT}, -+ {"gui_dialog_top", P_OFFINT (dialog_top), TYPE_INT}, -+ {"gui_dialog_width", P_OFFINT (dialog_width), TYPE_INT}, -+ {"gui_hide_menu", P_OFFINT (hidemenu), TYPE_BOOL}, -+ {"gui_input_spell", P_OFFINT (gui_input_spell), TYPE_BOOL}, -+ {"gui_input_style", P_OFFINT (style_inputbox), TYPE_BOOL}, -+ {"gui_join_dialog", P_OFFINT (gui_join_dialog), TYPE_BOOL}, -+ {"gui_lagometer", P_OFFINT (lagometer), TYPE_INT}, -+ {"gui_mode_buttons", P_OFFINT (chanmodebuttons), TYPE_BOOL}, -+ {"gui_pane_left_size", P_OFFINT (gui_pane_left_size), TYPE_INT}, -+ {"gui_pane_right_size", P_OFFINT (gui_pane_right_size), TYPE_INT}, -+ {"gui_quit_dialog", P_OFFINT (gui_quit_dialog), TYPE_BOOL}, -+ {"gui_slist_select", P_OFFINT (slist_select), TYPE_INT}, -+ {"gui_slist_skip", P_OFFINT (slist_skip), TYPE_BOOL}, -+ {"gui_throttlemeter", P_OFFINT (throttlemeter), TYPE_INT}, -+ {"gui_topicbar", P_OFFINT (topicbar), TYPE_BOOL}, -+ {"gui_tray", P_OFFINT (gui_tray), TYPE_BOOL}, -+ {"gui_tray_flags", P_OFFINT (gui_tray_flags), TYPE_INT}, -+ {"gui_tweaks", P_OFFINT (gui_tweaks), TYPE_INT}, -+ {"gui_ulist_buttons", P_OFFINT (userlistbuttons), TYPE_BOOL}, -+ {"gui_ulist_doubleclick", P_OFFSET (doubleclickuser), TYPE_STR}, -+ {"gui_ulist_hide", P_OFFINT (hideuserlist), TYPE_BOOL}, -+ {"gui_ulist_left", P_OFFINT (_gui_ulist_left), TYPE_BOOL}, /* obsolete */ -+ {"gui_ulist_pos", P_OFFINT (gui_ulist_pos), TYPE_INT}, -+ {"gui_ulist_resizable", P_OFFINT (paned_userlist), TYPE_BOOL}, -+ {"gui_ulist_show_hosts", P_OFFINT(showhostname_in_userlist), TYPE_BOOL}, -+ {"gui_ulist_sort", P_OFFINT (userlist_sort), TYPE_INT}, -+ {"gui_ulist_style", P_OFFINT (style_namelistgad), TYPE_BOOL}, -+ {"gui_url_mod", P_OFFINT (gui_url_mod), TYPE_INT}, -+ {"gui_usermenu", P_OFFINT (gui_usermenu), TYPE_BOOL}, -+ {"gui_win_height", P_OFFINT (mainwindow_height), TYPE_INT}, -+ {"gui_win_left", P_OFFINT (mainwindow_left), TYPE_INT}, -+ {"gui_win_save", P_OFFINT (mainwindow_save), TYPE_BOOL}, -+ {"gui_win_state", P_OFFINT (gui_win_state), TYPE_INT}, -+ {"gui_win_top", P_OFFINT (mainwindow_top), TYPE_INT}, -+ {"gui_win_width", P_OFFINT (mainwindow_width), TYPE_INT}, -+ -+#ifdef WIN32 -+ {"identd", P_OFFINT (identd), TYPE_BOOL}, -+#endif -+ {"input_balloon_chans", P_OFFINT (input_balloon_chans), TYPE_BOOL}, -+ {"input_balloon_hilight", P_OFFINT (input_balloon_hilight), TYPE_BOOL}, -+ {"input_balloon_priv", P_OFFINT (input_balloon_priv), TYPE_BOOL}, -+ {"input_balloon_time", P_OFFINT (input_balloon_time), TYPE_INT}, -+ {"input_beep_chans", P_OFFINT (input_beep_chans), TYPE_BOOL}, -+ {"input_beep_hilight", P_OFFINT (input_beep_hilight), TYPE_BOOL}, -+ {"input_beep_msg", P_OFFINT (input_beep_priv), TYPE_BOOL}, -+ {"input_command_char", P_OFFSET (cmdchar), TYPE_STR}, -+ {"input_filter_beep", P_OFFINT (filterbeep), TYPE_BOOL}, -+ {"input_flash_chans", P_OFFINT (input_flash_chans), TYPE_BOOL}, -+ {"input_flash_hilight", P_OFFINT (input_flash_hilight), TYPE_BOOL}, -+ {"input_flash_priv", P_OFFINT (input_flash_priv), TYPE_BOOL}, -+ {"input_perc_ascii", P_OFFINT (perc_ascii), TYPE_BOOL}, -+ {"input_perc_color", P_OFFINT (perc_color), TYPE_BOOL}, -+ {"input_tray_chans", P_OFFINT (input_tray_chans), TYPE_BOOL}, -+ {"input_tray_hilight", P_OFFINT (input_tray_hilight), TYPE_BOOL}, -+ {"input_tray_priv", P_OFFINT (input_tray_priv), TYPE_BOOL}, -+ -+ {"irc_auto_rejoin", P_OFFINT (autorejoin), TYPE_BOOL}, -+ {"irc_ban_type", P_OFFINT (bantype), TYPE_INT}, -+ {"irc_conf_mode", P_OFFINT (confmode), TYPE_BOOL}, -+ {"irc_extra_hilight", P_OFFSET (irc_extra_hilight), TYPE_STR}, -+ {"irc_hide_version", P_OFFINT (hidever), TYPE_BOOL}, -+ {"irc_id_ntext", P_OFFSET (irc_id_ntext), TYPE_STR}, -+ {"irc_id_ytext", P_OFFSET (irc_id_ytext), TYPE_STR}, -+ {"irc_invisible", P_OFFINT (invisible), TYPE_BOOL}, -+ {"irc_join_delay", P_OFFINT (irc_join_delay), TYPE_INT}, -+ {"irc_logging", P_OFFINT (logging), TYPE_BOOL}, -+ {"irc_logmask", P_OFFSET (logmask), TYPE_STR}, -+ {"irc_nick1", P_OFFSET (nick1), TYPE_STR}, -+ {"irc_nick2", P_OFFSET (nick2), TYPE_STR}, -+ {"irc_nick3", P_OFFSET (nick3), TYPE_STR}, -+ {"irc_nick_hilight", P_OFFSET (irc_nick_hilight), TYPE_STR}, -+ {"irc_no_hilight", P_OFFSET (irc_no_hilight), TYPE_STR}, -+ {"irc_part_reason", P_OFFSET (partreason), TYPE_STR}, -+ {"irc_quit_reason", P_OFFSET (quitreason), TYPE_STR}, -+ {"irc_raw_modes", P_OFFINT (raw_modes), TYPE_BOOL}, -+ {"irc_real_name", P_OFFSET (realname), TYPE_STR}, -+ {"irc_servernotice", P_OFFINT (servernotice), TYPE_BOOL}, -+ {"irc_skip_motd", P_OFFINT (skipmotd), TYPE_BOOL}, -+ {"irc_user_name", P_OFFSET (username), TYPE_STR}, -+ {"irc_wallops", P_OFFINT (wallops), TYPE_BOOL}, -+ {"irc_who_join", P_OFFINT (userhost), TYPE_BOOL}, -+ {"irc_whois_front", P_OFFINT (irc_whois_front), TYPE_BOOL}, -+ -+ {"net_auto_reconnect", P_OFFINT (autoreconnect), TYPE_BOOL}, -+ {"net_auto_reconnectonfail", P_OFFINT (autoreconnectonfail), TYPE_BOOL}, -+ {"net_bind_host", P_OFFSET (hostname), TYPE_STR}, -+ {"net_ping_timeout", P_OFFINT (pingtimeout), TYPE_INT}, -+ {"net_proxy_auth", P_OFFINT (proxy_auth), TYPE_BOOL}, -+ {"net_proxy_host", P_OFFSET (proxy_host), TYPE_STR}, -+ {"net_proxy_pass", P_OFFSET (proxy_pass), TYPE_STR}, -+ {"net_proxy_port", P_OFFINT (proxy_port), TYPE_INT}, -+ {"net_proxy_type", P_OFFINT (proxy_type), TYPE_INT}, -+ {"net_proxy_use", P_OFFINT (proxy_use), TYPE_INT}, -+ {"net_proxy_user", P_OFFSET (proxy_user), TYPE_STR}, -+ -+ {"net_reconnect_delay", P_OFFINT (recon_delay), TYPE_INT}, -+ {"net_throttle", P_OFFINT (throttle), TYPE_BOOL}, -+ -+ {"notify_timeout", P_OFFINT (notify_timeout), TYPE_INT}, -+ {"notify_whois_online", P_OFFINT (whois_on_notifyonline), TYPE_BOOL}, -+ -+ {"perl_warnings", P_OFFINT (perlwarnings), TYPE_BOOL}, -+ -+ {"sound_command", P_OFFSET (soundcmd), TYPE_STR}, -+ {"sound_dir", P_OFFSET (sounddir), TYPE_STR}, -+ {"stamp_log", P_OFFINT (timestamp_logs), TYPE_BOOL}, -+ {"stamp_log_format", P_OFFSET (timestamp_log_format), TYPE_STR}, -+ {"stamp_text", P_OFFINT (timestamp), TYPE_BOOL}, -+ {"stamp_text_format", P_OFFSET (stamp_format), TYPE_STR}, -+ -+ {"tab_chans", P_OFFINT (tabchannels), TYPE_BOOL}, -+ {"tab_dialogs", P_OFFINT (privmsgtab), TYPE_BOOL}, -+ {"tab_layout", P_OFFINT (tab_layout), TYPE_INT}, -+ {"tab_new_to_front", P_OFFINT (newtabstofront), TYPE_INT}, -+ {"tab_notices", P_OFFINT (notices_tabs), TYPE_BOOL}, -+ {"tab_pos", P_OFFINT (tab_pos), TYPE_INT}, -+ {"tab_position", P_OFFINT (_tabs_position), TYPE_INT}, /* obsolete */ -+ {"tab_server", P_OFFINT (use_server_tab), TYPE_BOOL}, -+ {"tab_small", P_OFFINT (tab_small), TYPE_INT}, -+ {"tab_sort", P_OFFINT (tab_sort), TYPE_BOOL}, -+ {"tab_trunc", P_OFFINT (truncchans), TYPE_INT}, -+ {"tab_utils", P_OFFINT (windows_as_tabs), TYPE_BOOL}, -+ -+ {"text_background", P_OFFSET (background), TYPE_STR}, -+ {"text_color_nicks", P_OFFINT (colorednicks), TYPE_BOOL}, -+ {"text_font", P_OFFSET (font_normal), TYPE_STR}, -+ {"text_indent", P_OFFINT (indent_nicks), TYPE_BOOL}, -+ {"text_max_indent", P_OFFINT (max_auto_indent), TYPE_INT}, -+ {"text_max_lines", P_OFFINT (max_lines), TYPE_INT}, -+ {"text_replay", P_OFFINT (text_replay), TYPE_BOOL}, -+ {"text_show_marker", P_OFFINT (show_marker), TYPE_BOOL}, -+ {"text_show_sep", P_OFFINT (show_separator), TYPE_BOOL}, -+ {"text_stripcolor", P_OFFINT (stripcolor), TYPE_BOOL}, -+ {"text_thin_sep", P_OFFINT (thin_separator), TYPE_BOOL}, -+ {"text_tint_blue", P_OFFINT (tint_blue), TYPE_INT}, -+ {"text_tint_green", P_OFFINT (tint_green), TYPE_INT}, -+ {"text_tint_red", P_OFFINT (tint_red), TYPE_INT}, -+ {"text_transparent", P_OFFINT (transparent), TYPE_BOOL}, -+ {"text_wordwrap", P_OFFINT (wordwrap), TYPE_BOOL}, -+ -+ {0, 0, 0}, -+}; -+ -+static char * -+convert_with_fallback (const char *str, const char *fallback) -+{ -+ char *utf; -+ -+ utf = g_locale_to_utf8 (str, -1, 0, 0, 0); -+ if (!utf) -+ { -+ /* this can happen if CHARSET envvar is set wrong */ -+ /* maybe it's already utf8 (breakage!) */ -+ if (!g_utf8_validate (str, -1, NULL)) -+ utf = g_strdup (fallback); -+ else -+ utf = g_strdup (str); -+ } -+ -+ return utf; -+} -+ -+void -+load_config (void) -+{ -+ struct stat st; -+ char *cfg, *sp; -+ const char *username, *realname; -+ int res, val, i, fh; -+ -+ check_prefs_dir (); -+ username = g_get_user_name (); -+ if (!username) -+ username = "root"; -+ -+ realname = g_get_real_name (); -+ if ((realname && realname[0] == 0) || !realname) -+ realname = username; -+ -+ username = convert_with_fallback (username, "username"); -+ realname = convert_with_fallback (realname, "realname"); -+ -+ memset (&prefs, 0, sizeof (struct xchatprefs)); -+ -+ /* put in default values, anything left out is automatically zero */ -+ prefs.local_ip = 0xffffffff; -+ prefs.irc_join_delay = 3; -+ prefs.show_marker = 1; -+ prefs.newtabstofront = 2; -+ prefs.completion_amount = 5; -+ prefs.away_timeout = 60; -+ prefs.away_size_max = 300; -+ prefs.away_track = 1; -+ prefs.timestamp_logs = 1; -+ prefs.truncchans = 20; -+ prefs.autoresume = 1; -+ prefs.show_away_once = 1; -+ prefs.indent_nicks = 1; -+ prefs.thin_separator = 1; -+ prefs._tabs_position = 2; /* 2 = left */ -+ prefs.fastdccsend = 1; -+ prefs.wordwrap = 1; -+ prefs.autosave = 1; -+ prefs.autodialog = 1; -+ prefs.gui_input_spell = 1; -+ prefs.autoreconnect = 1; -+ prefs.recon_delay = 10; -+ prefs.text_replay = 1; -+ prefs.tabchannels = 1; -+ prefs.tab_layout = 2; /* 0=Tabs 1=Reserved 2=Tree */ -+ prefs.tab_sort = 1; -+ prefs.paned_userlist = 1; -+ prefs.newtabstofront = 2; -+ prefs.use_server_tab = 1; -+ prefs.privmsgtab = 1; -+ /*prefs.style_inputbox = 1;*/ -+ prefs.dccpermissions = 0600; -+ prefs.max_lines = 500; -+ prefs.mainwindow_width = 640; -+ prefs.mainwindow_height = 400; -+ prefs.dialog_width = 500; -+ prefs.dialog_height = 256; -+ prefs.gui_join_dialog = 1; -+ prefs.gui_quit_dialog = 1; -+ prefs.dcctimeout = 180; -+ prefs.dccstalltimeout = 60; -+ prefs.notify_timeout = 15; -+ prefs.tint_red = -+ prefs.tint_green = -+ prefs.tint_blue = 195; -+ prefs.auto_indent = 1; -+ prefs.max_auto_indent = 256; -+ prefs.show_separator = 1; -+ prefs.dcc_blocksize = 1024; -+ prefs.throttle = 1; -+ /*FIXME*/ prefs.msg_time_limit = 30; -+ prefs.msg_number_limit = 5; -+ prefs.ctcp_time_limit = 30; -+ prefs.ctcp_number_limit = 5; -+ prefs.topicbar = 1; -+ prefs.lagometer = 1; -+ prefs.throttlemeter = 1; -+ prefs.autoopendccrecvwindow = 1; -+ prefs.autoopendccsendwindow = 1; -+ prefs.autoopendccchatwindow = 1; -+ prefs.userhost = 1; -+ prefs.gui_url_mod = 4; /* ctrl */ -+ prefs.gui_tray = 1; -+ prefs.gui_pane_left_size = 100; -+ prefs.gui_pane_right_size = 100; -+ prefs.mainwindow_save = 1; -+ prefs.bantype = 2; -+ prefs.input_balloon_time = 20; -+ prefs.input_flash_priv = prefs.input_flash_hilight = 1; -+ prefs.input_tray_priv = prefs.input_tray_hilight = 1; -+ prefs.autodccsend = 2; /* browse mode */ -+#ifdef WIN32 -+ prefs.identd = 1; -+#endif -+ strcpy (prefs.stamp_format, "[%H:%M] "); -+ strcpy (prefs.timestamp_log_format, "%b %d %H:%M:%S "); -+ strcpy (prefs.logmask, "%n-%c.log"); -+ strcpy (prefs.nick_suffix, ","); -+ strcpy (prefs.cmdchar, "/"); -+ strcpy (prefs.nick1, username); -+ strcpy (prefs.nick2, username); -+ strcat (prefs.nick2, "_"); -+ strcpy (prefs.nick3, username); -+ strcat (prefs.nick3, "__"); -+ strcpy (prefs.realname, realname); -+ strcpy (prefs.username, username); -+#ifdef WIN32 -+ strcpy (prefs.sounddir, "./sounds"); -+ { -+ char out[256]; -+ -+ if (get_reg_str ("Software\\Microsoft\\Windows\\CurrentVersion\\" -+ "Explorer\\Shell Folders", "Personal", out, sizeof (out))) -+ snprintf (prefs.dccdir, sizeof (prefs.dccdir), "%s\\Downloads", out); -+ else -+ snprintf (prefs.dccdir, sizeof (prefs.dccdir), "%s\\Downloads", get_xdir_utf8 ()); -+ } -+#else -+ snprintf (prefs.sounddir, sizeof (prefs.sounddir), "%s/sounds", get_xdir_utf8 ()); -+ snprintf (prefs.dccdir, sizeof (prefs.dccdir), "%s/downloads", get_xdir_utf8 ()); -+#endif -+ strcpy (prefs.doubleclickuser, "QUOTE WHOIS %s %s"); -+ strcpy (prefs.awayreason, _("I'm busy")); -+ strcpy (prefs.quitreason, _("Leaving")); -+ strcpy (prefs.partreason, prefs.quitreason); -+ strcpy (prefs.font_normal, DEF_FONT); -+ strcpy (prefs.dnsprogram, "host"); -+ strcpy (prefs.irc_no_hilight, "NickServ,ChanServ"); -+ -+ g_free ((char *)username); -+ g_free ((char *)realname); -+ -+ fh = open (default_file (), OFLAGS | O_RDONLY); -+ if (fh != -1) -+ { -+ fstat (fh, &st); -+ cfg = malloc (st.st_size + 1); -+ cfg[0] = '\0'; -+ i = read (fh, cfg, st.st_size); -+ if (i >= 0) -+ cfg[i] = '\0'; /* make sure cfg is NULL terminated */ -+ close (fh); -+ i = 0; -+ do -+ { -+ switch (vars[i].type) -+ { -+ case TYPE_STR: -+ cfg_get_str (cfg, vars[i].name, (char *) &prefs + vars[i].offset, -+ vars[i].len); -+ break; -+ case TYPE_BOOL: -+ case TYPE_INT: -+ val = cfg_get_int_with_result (cfg, vars[i].name, &res); -+ if (res) -+ *((int *) &prefs + vars[i].offset) = val; -+ break; -+ } -+ i++; -+ } -+ while (vars[i].name); -+ -+ free (cfg); -+ -+ } else -+ { -+#ifndef WIN32 -+#ifndef __EMX__ -+ /* OS/2 uses UID 0 all the time */ -+ if (getuid () == 0) -+ fe_message (_("* Running IRC as root is stupid! You should\n" -+ " create a User Account and use that to login.\n"), FE_MSG_WARN|FE_MSG_WAIT); -+#endif -+#endif /* !WIN32 */ -+ -+ mkdir_utf8 (prefs.dccdir); -+ mkdir_utf8 (prefs.dcc_completed_dir); -+ } -+ if (prefs.mainwindow_height < 138) -+ prefs.mainwindow_height = 138; -+ if (prefs.mainwindow_width < 106) -+ prefs.mainwindow_width = 106; -+ -+ sp = strchr (prefs.username, ' '); -+ if (sp) -+ sp[0] = 0; /* spaces in username would break the login */ -+ -+ /* try to make sense of old ulist/tree position settings */ -+ if (prefs.gui_ulist_pos == 0) -+ { -+ prefs.gui_ulist_pos = 3; /* top right */ -+ if (prefs._gui_ulist_left) -+ prefs.gui_ulist_pos = 2; /* bottom left */ -+ -+ switch (prefs._tabs_position) -+ { -+ case 0: -+ prefs.tab_pos = 6; /* bottom */ -+ break; -+ case 1: -+ prefs.tab_pos = 5; /* top */ -+ break; -+ case 2: -+ prefs.tab_pos = 1; /* left */ -+ break; -+ case 3: -+ prefs.tab_pos = 4; /* right */ -+ break; -+ case 4: -+ prefs.tab_pos = 1; /* (hidden)left */ -+ break; -+ case 5: -+ if (prefs._gui_ulist_left) -+ { -+ prefs.tab_pos = 1; /* above ulist left */ -+ prefs.gui_ulist_pos = 2; -+ } -+ else -+ { -+ prefs.tab_pos = 3; /* above ulist right */ -+ prefs.gui_ulist_pos = 4; -+ } -+ break; -+ } -+ } -+} -+ -+int -+save_config (void) -+{ -+ int fh, i; -+ char *new_config, *config; -+ -+ check_prefs_dir (); -+ -+ config = default_file (); -+ new_config = malloc (strlen (config) + 5); -+ strcpy (new_config, config); -+ strcat (new_config, ".new"); -+ -+ fh = open (new_config, OFLAGS | O_TRUNC | O_WRONLY | O_CREAT, 0600); -+ if (fh == -1) -+ { -+ free (new_config); -+ return 0; -+ } -+ -+ if (!cfg_put_str (fh, "version", PACKAGE_VERSION)) -+ { -+ free (new_config); -+ return 0; -+ } -+ -+ i = 0; -+ do -+ { -+ switch (vars[i].type) -+ { -+ case TYPE_STR: -+ if (!cfg_put_str (fh, vars[i].name, (char *) &prefs + vars[i].offset)) -+ { -+ free (new_config); -+ return 0; -+ } -+ break; -+ case TYPE_INT: -+ case TYPE_BOOL: -+ if (!cfg_put_int (fh, *((int *) &prefs + vars[i].offset), vars[i].name)) -+ { -+ free (new_config); -+ return 0; -+ } -+ } -+ i++; -+ } -+ while (vars[i].name); -+ -+ if (close (fh) == -1) -+ { -+ free (new_config); -+ return 0; -+ } -+ -+#ifdef WIN32 -+ unlink (config); /* win32 can't rename to an existing file */ -+#endif -+ if (rename (new_config, config) == -1) -+ { -+ free (new_config); -+ return 0; -+ } -+ free (new_config); -+ -+ return 1; -+} -+ -+static void -+set_showval (session *sess, const struct prefs *var, char *tbuf) -+{ -+ int len, dots, j; -+ -+ len = strlen (var->name); -+ memcpy (tbuf, var->name, len); -+ dots = 29 - len; -+ if (dots < 0) -+ dots = 0; -+ tbuf[len++] = '\003'; -+ tbuf[len++] = '2'; -+ for (j=0;jtype) -+ { -+ case TYPE_STR: -+ sprintf (tbuf + len, "\0033:\017 %s\n", -+ (char *) &prefs + var->offset); -+ break; -+ case TYPE_INT: -+ sprintf (tbuf + len, "\0033:\017 %d\n", -+ *((int *) &prefs + var->offset)); -+ break; -+ case TYPE_BOOL: -+ if (*((int *) &prefs + var->offset)) -+ sprintf (tbuf + len, "\0033:\017 %s\n", "ON"); -+ else -+ sprintf (tbuf + len, "\0033:\017 %s\n", "OFF"); -+ break; -+ } -+ PrintText (sess, tbuf); -+} -+ -+static void -+set_list (session * sess, char *tbuf) -+{ -+ int i; -+ -+ i = 0; -+ do -+ { -+ set_showval (sess, &vars[i], tbuf); -+ i++; -+ } -+ while (vars[i].name); -+} -+ -+int -+cfg_get_bool (char *var) -+{ -+ int i = 0; -+ -+ do -+ { -+ if (!strcasecmp (var, vars[i].name)) -+ { -+ return *((int *) &prefs + vars[i].offset); -+ } -+ i++; -+ } -+ while (vars[i].name); -+ -+ return -1; -+} -+ -+int -+cmd_set (struct session *sess, char *tbuf, char *word[], char *word_eol[]) -+{ -+ int wild = FALSE; -+ int or = FALSE; -+ int off = FALSE; -+ int quiet = FALSE; -+ int erase = FALSE; -+ int i = 0, finds = 0, found; -+ int idx = 2; -+ char *var, *val; -+ -+ if (strcasecmp (word[2], "-e") == 0) -+ { -+ idx++; -+ erase = TRUE; -+ } -+ -+ /* turn a bit OFF */ -+ if (strcasecmp (word[idx], "-off") == 0) -+ { -+ idx++; -+ off = TRUE; -+ } -+ -+ /* turn a bit ON */ -+ if (strcasecmp (word[idx], "-or") == 0 || strcasecmp (word[idx], "-on") == 0) -+ { -+ idx++; -+ or = TRUE; -+ } -+ -+ if (strcasecmp (word[idx], "-quiet") == 0) -+ { -+ idx++; -+ quiet = TRUE; -+ } -+ -+ var = word[idx]; -+ val = word_eol[idx+1]; -+ -+ if (!*var) -+ { -+ set_list (sess, tbuf); -+ return TRUE; -+ } -+ -+ if ((strchr (var, '*') || strchr (var, '?')) && !*val) -+ wild = TRUE; -+ -+ if (*val == '=') -+ val++; -+ -+ do -+ { -+ if (wild) -+ found = !match (var, vars[i].name); -+ else -+ found = strcasecmp (var, vars[i].name); -+ -+ if (found == 0) -+ { -+ finds++; -+ switch (vars[i].type) -+ { -+ case TYPE_STR: -+ if (erase || *val) -+ { -+ strncpy ((char *) &prefs + vars[i].offset, val, vars[i].len); -+ ((char *) &prefs)[vars[i].offset + vars[i].len - 1] = 0; -+ if (!quiet) -+ PrintTextf (sess, "%s set to: %s\n", var, (char *) &prefs + vars[i].offset); -+ } else -+ { -+ set_showval (sess, &vars[i], tbuf); -+ } -+ break; -+ case TYPE_INT: -+ case TYPE_BOOL: -+ if (*val) -+ { -+ if (vars[i].type == TYPE_BOOL) -+ { -+ if (atoi (val)) -+ *((int *) &prefs + vars[i].offset) = 1; -+ else -+ *((int *) &prefs + vars[i].offset) = 0; -+ if (!strcasecmp (val, "YES") || !strcasecmp (val, "ON")) -+ *((int *) &prefs + vars[i].offset) = 1; -+ if (!strcasecmp (val, "NO") || !strcasecmp (val, "OFF")) -+ *((int *) &prefs + vars[i].offset) = 0; -+ } else -+ { -+ if (or) -+ *((int *) &prefs + vars[i].offset) |= atoi (val); -+ else if (off) -+ *((int *) &prefs + vars[i].offset) &= ~(atoi (val)); -+ else -+ *((int *) &prefs + vars[i].offset) = atoi (val); -+ } -+ if (!quiet) -+ PrintTextf (sess, "%s set to: %d\n", var, -+ *((int *) &prefs + vars[i].offset)); -+ } else -+ { -+ set_showval (sess, &vars[i], tbuf); -+ } -+ break; -+ } -+ } -+ i++; -+ } -+ while (vars[i].name); -+ -+ if (!finds && !quiet) -+ PrintText (sess, "No such variable.\n"); -+ -+ return TRUE; -+} -+ -+int -+xchat_open_file (char *file, int flags, int mode, int xof_flags) -+{ -+ char buf[1024]; -+ -+ if (xof_flags & XOF_FULLPATH) -+ { -+ if (xof_flags & XOF_DOMODE) -+ return open (file, flags | OFLAGS, mode); -+ else -+ return open (file, flags | OFLAGS); -+ } -+ -+ snprintf (buf, sizeof (buf), "%s/%s", get_xdir_fs (), file); -+ if (xof_flags & XOF_DOMODE) -+ return open (buf, flags | OFLAGS, mode); -+ else -+ return open (buf, flags | OFLAGS); -+} -+ -+FILE * -+xchat_fopen_file (const char *file, const char *mode, int xof_flags) -+{ -+ char buf[1024]; -+ -+ if (xof_flags & XOF_FULLPATH) -+ return fopen (file, mode); -+ -+ snprintf (buf, sizeof (buf), "%s/%s", get_xdir_fs (), file); -+ return fopen (buf, mode); -+} -diff -urNp xchat-2.8.8.orig/src/common/xchat.h xchat-2.8.8/src/common/xchat.h ---- xchat-2.8.8.orig/src/common/xchat.h 2013-06-10 14:26:55.885425482 +0200 -+++ xchat-2.8.8/src/common/xchat.h 2013-06-10 14:27:23.748503597 +0200 -@@ -1,6 +1,7 @@ - #include "../../config.h" - - #include -+#include - #include /* need time_t */ - - #ifndef XCHAT_H diff --git a/xchat.spec b/xchat.spec deleted file mode 100644 index c81eb60..0000000 --- a/xchat.spec +++ /dev/null @@ -1,1022 +0,0 @@ -%define _default_patch_fuzz 2 -%define gconf_version 2.14 - -Summary: A popular and easy to use graphical IRC (chat) client -Name: xchat -Version: 2.8.8 -Release: 37%{?dist} -Epoch: 1 -Group: Applications/Internet -License: GPLv2+ -URL: http://www.xchat.org -Source0: http://www.xchat.org/files/source/2.8/xchat-%{version}.tar.xz - -# http://sourceforge.net/p/xchat/bugs/1504/ -Source1: hicolor_apps_16x16_%{name}.png -Source2: hicolor_apps_22x22_%{name}.png -Source3: hicolor_apps_24x24_%{name}.png -Source4: hicolor_apps_32x32_%{name}.png -Source5: hicolor_apps_48x48_%{name}.png -Source6: hicolor_apps_256x256_%{name}.png -Source7: %{name}.svg - -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) - -# Patches 0-9 reserved for official xchat.org patches - -Patch12: xchat-1.8.7-use-sysconf-to-detect-cpus.patch -# see #241923 & #880672 -Patch35: xchat-2.8.8-notifications-and-tray.patch -# Upstream XChat 2.8.6 defaults to Latin1 (what upstream calls the "IRC" -# encoding). Default to UTF-8 instead (as previous versions did, at least when -# running under a UTF-8 locale). -# Both the "IRC" and "UTF-8" settings will try to accept both Latin1 and UTF-8 -# when it comes in, however "IRC" sends Latin1, "UTF-8" sends UTF-8. -Patch41: xchat-2.8.6-default-utf8.patch -# patch to add ability to change to tab with most recent activity -# See http://sourceforge.net/tracker/?func=detail&aid=2022871&group_id=239&atid=350239 -Patch50: xchat-2.8.6-change-page-activity.patch -# add port numbers for Freenode (Debarshi Ray) -Patch51: xchat-2.8.6-freenode-ports.patch -# work with libnotify 0.7 -# https://sourceforge.net/tracker/?func=detail&aid=3109838&group_id=239&atid=100239 -Patch52: xchat-2.8.8-libnotify07.patch -# link against libnotify -# https://sourceforge.net/tracker/?func=detail&aid=3280223&group_id=239&atid=100239 -Patch53: xchat-2.8.8-link-against-libnotify.patch -# Only glib.h can be included and g_thread_init should no longer be used -Patch54: xchat-2.8.8-glib.patch -# http://sourceforge.net/p/xchat/bugs/1504/ -Patch55: xchat-2.8.8-hires-icons.patch -# http://sourceforge.net/p/xchat/bugs/1506/ -Patch56: xchat-2.8.8-xdg-dirs.patch -# http://sourceforge.net/p/xchat/bugs/1397/ -Patch57: xchat-2.8.8-desktop-file-name.patch -# https://bugzilla.redhat.com/show_bug.cgi?id=1091544 -Patch58: 0001-Don-t-force-the-use-of-SSLv3.patch -# https://bugzilla.redhat.com/show_bug.cgi?id=1387521 -Patch59: xchat-2.8.8-openssl-1.1.0.patch - -BuildRequires: perl-interpreter perl-devel perl-generators perl(ExtUtils::Embed) python-devel openssl-devel pkgconfig, tcl-devel -BuildRequires: GConf2-devel -BuildRequires: dbus-devel >= 0.60, dbus-glib-devel >= 0.60 -BuildRequires: glib2-devel >= 2.10.0, gtk2-devel >= 2.10.0, bison >= 1.35 -BuildRequires: gettext-devel /bin/sed -BuildRequires: libtool -BuildRequires: libntlm-devel -BuildRequires: libsexy-devel -BuildRequires: desktop-file-utils >= 0.10 -BuildRequires: libnotify-devel -# For xchat-2.8.8-link-against-libnotify.patch -BuildRequires: autoconf -BuildRequires: automake - -# For gconftool-2: -Requires(post): GConf2 >= %{gconf_version} -Requires(preun): GConf2 >= %{gconf_version} - -# For aplay: -Requires: alsa-utils - -# Ensure that a compatible libperl is installed -Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) - -Provides: xchat-perl = %{epoch}:%{version}-%{release} -Obsoletes: xchat-perl < %{epoch}:%{version}-%{release} -Provides: xchat-python = %{epoch}:%{version}-%{release} -Obsoletes: xchat-python < %{epoch}:%{version}-%{release} - -%description -X-Chat is an easy to use graphical IRC chat client for the X Window System. -It allows you to join multiple IRC channels (chat rooms) at the same time, -talk publicly, private one-on-one conversations etc. Even file transfers -are possible. - -This includes the plugins to run the Perl and Python scripts. - -%package tcl -Summary: Tcl script plugin for X-Chat -Group: Applications/Internet -Requires: %{name} = %{epoch}:%{version}-%{release} -%description tcl -This package contains the X-Chat plugin providing the Tcl scripting interface. - -%prep -%setup -q -# Various small fixes from CVS that are considered safe to apply to 2.8.6. -# (currently none) - -%patch12 -p0 -b .use-sysconf-to-detect-cpus -%patch35 -p1 -b .tray-icon -%patch41 -p1 -b .default-utf8 -%patch50 -p1 -b .active-channel-switch -%patch51 -p1 -b .freenode-ports -%patch52 -p1 -b .libnotify07 -%patch53 -p1 -b .link-against-libnotify -%patch54 -p0 -b .glib -%patch55 -p1 -b .hires-icons -%patch56 -p1 -b .xdg-dirs -%patch57 -p1 -b .desktop-file-name -%patch58 -p1 -b .allow-tls -%patch59 -p1 -b .openssl-1.1.0 - -sed -i -e 's/#define GTK_DISABLE_DEPRECATED//g' src/fe-gtk/*.c - -cp -p %{SOURCE1} icons/ -cp -p %{SOURCE2} icons/ -cp -p %{SOURCE3} icons/ -cp -p %{SOURCE4} icons/ -cp -p %{SOURCE5} icons/ -cp -p %{SOURCE6} icons/ -cp -p %{SOURCE7} icons/ - -%build -# Remove CVS files from source dirs so they're not installed into doc dirs. -find . -name CVS -type d | xargs rm -rf - -export CFLAGS="$RPM_OPT_FLAGS $(perl -MExtUtils::Embed -e ccopts)" -export LDFLAGS=$(perl -MExtUtils::Embed -e ldopts) - -# For xchat-2.8.8-link-against-libnotify.patch -./autogen.sh - -%configure --disable-textfe \ - --enable-gtkfe \ - --enable-openssl \ - --enable-python \ - --enable-tcl=%{_libdir} \ - --enable-ipv6 \ - --enable-spell=libsexy \ - --enable-shm \ - --enable-ntlm - -# gtkspell breaks Input Method commit with ENTER - -make %{?_smp_mflags} - - -%install -%{__rm} -rf $RPM_BUILD_ROOT -%{__make} install DESTDIR=$RPM_BUILD_ROOT GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 - -# Get rid of libtool archives -%{__rm} -f $RPM_BUILD_ROOT%{_libdir}/xchat/plugins/*.la - -# Install the .desktop file properly -%{__rm} -f $RPM_BUILD_ROOT%{_datadir}/applications/xchat.desktop -desktop-file-install --vendor="" \ - --dir $RPM_BUILD_ROOT%{_datadir}/applications \ - --add-category=IRCClient \ - --add-category=GTK xchat.desktop - -# Register as an application to be visible in the software center -# -# NOTE: It would be *awesome* if this file was maintained by the upstream -# project, translated and installed into the right place during `make install`. -# -# See http://www.freedesktop.org/software/appstream/docs/ for more details. -# -mkdir -p $RPM_BUILD_ROOT%{_datadir}/appdata -cat > $RPM_BUILD_ROOT%{_datadir}/appdata/%{name}.appdata.xml < - - - - xchat.desktop - CC0-1.0 - -

- XChat is an Internet Relay Chat (IRC) client. - It allows you to join multiple IRC channels at the same time, which you can view - and browse using tabs or a tree-like interface. - You can use XChat to publicly chat with people in a channel, and to have private - one-on-one conversations. - You can even transfer files with XChat! -

-

- The client includes nick completion, alerts for mentions, logging functionality, - and several customization options for fonts, sounds and colors. -

-
- http://xchat.org/ - - https://raw.githubusercontent.com/hughsie/fedora-appstream/master/screenshots-extra/xchat/a.png - - -
-EOF - -%find_lang %{name} - -# do not Provide plugins .so -%define _use_internal_dependency_generator 0 -%{__cat} << \EOF > %{name}.prov -#!%{_buildshell} -%{__grep} -v %{_docdir} - | %{__find_provides} $* \ - | %{__sed} '/\.so\(()(64bit)\)\?$/d' -EOF -%define __find_provides %{_builddir}/%{name}-%{version}/%{name}.prov -%{__chmod} +x %{__find_provides} - - -%post -# Install schema -export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source` -gconftool-2 --makefile-install-rule /etc/gconf/schemas/apps_xchat_url_handler.schemas >& /dev/null || : - -%postun -if [ $1 -eq 0 ] ; then - /bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null - /usr/bin/gtk-update-icon-cache -f %{_datadir}/icons/hicolor &>/dev/null || : -fi - -%posttrans -/usr/bin/gtk-update-icon-cache -f %{_datadir}/icons/hicolor &>/dev/null || : - -%clean -%{__rm} -rf $RPM_BUILD_ROOT - -%files -f %{name}.lang -%defattr(-,root,root) -%doc README ChangeLog -%doc plugins/plugin20.html plugins/perl/xchat2-perl.html -%{_bindir}/xchat -%dir %{_libdir}/xchat -%dir %{_libdir}/xchat/plugins -%{_libdir}/xchat/plugins/perl.so -%{_libdir}/xchat/plugins/python.so -%{_datadir}/appdata/%{name}.appdata.xml -%{_datadir}/applications/xchat.desktop -%{_datadir}/icons/hicolor/*/apps/xchat.png -%{_datadir}/pixmaps/* -%{_sysconfdir}/gconf/schemas/apps_xchat_url_handler.schemas -%{_datadir}/dbus-1/services/org.xchat.service.service - -%files tcl -%defattr(-,root,root) -%{_libdir}/xchat/plugins/tcl.so - -%changelog -* Thu Aug 03 2017 Fedora Release Engineering - 1:2.8.8-37 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild - -* Thu Jul 27 2017 Fedora Release Engineering - 1:2.8.8-36 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - -* Mon Jun 26 2017 Debarshi Ray - 1:2.8.8-35 -- Port to OpenSSL 1.1.0 (#1387521) - -* Sun Jun 04 2017 Jitka Plesnikova - 1:2.8.8-34 -- Perl 5.26 rebuild - -* Sat Feb 11 2017 Fedora Release Engineering - 1:2.8.8-33 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild - -* Tue May 17 2016 Jitka Plesnikova - 1:2.8.8-32 -- Perl 5.24 rebuild - -* Fri Feb 05 2016 Fedora Release Engineering - 1:2.8.8-31 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild - -* Fri Jun 19 2015 Fedora Release Engineering - 1:2.8.8-30 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild - -* Fri Jun 05 2015 Jitka Plesnikova - 1:2.8.8-29 -- Perl 5.22 rebuild - -* Thu Mar 26 2015 Richard Hughes - 1:2.8.8-28 -- Add an AppData file for the software center - -* Wed Oct 29 2014 Debarshi Ray - 1:2.8.8-27 -- Do not force SSLv3, also allow TLSv1_X (#1091544) - -* Wed Aug 27 2014 Jitka Plesnikova - 1:2.8.8-26 -- Perl 5.20 rebuild - -* Wed Aug 20 2014 Kevin Fenzi - 1:2.8.8-25 -- Rebuild for rpm bug 1131892 - -* Mon Aug 18 2014 Fedora Release Engineering - 1:2.8.8-24 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild - -* Sun Jun 08 2014 Fedora Release Engineering - 1:2.8.8-23 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild - -* Wed May 21 2014 Jaroslav Škarvada - 1:2.8.8-22 -- Rebuilt for https://fedoraproject.org/wiki/Changes/f21tcl86 - -* Sun Aug 04 2013 Fedora Release Engineering - 1:2.8.8-21 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild - -* Wed Jul 17 2013 Petr Pisar - 1:2.8.8-20 -- Perl 5.18 rebuild - -* Mon Jun 10 2013 Debarshi Ray - 1:2.8.8-19 -- Use XDG_CONFIG_HOME instead of home for config files - (http://sourceforge.net/p/xchat/bugs/1506/) -- Use name and generic name correctly in desktop file - (http://sourceforge.net/p/xchat/bugs/1397/) - -* Fri Jun 07 2013 Debarshi Ray - 1:2.8.8-18 -- Add hi-res icons (http://sourceforge.net/p/xchat/bugs/1504/) - -* Fri Feb 15 2013 Fedora Release Engineering - 1:2.8.8-17 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild - -* Tue Nov 27 2012 Debarshi Ray - 1:2.8.8-16 -- Make sure default settings work with gnome-shell (#880672) - -* Sun Jul 22 2012 Fedora Release Engineering - 1:2.8.8-15 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild - -* Mon Jun 11 2012 Petr Pisar - 1:2.8.8-14 -- Perl 5.16 rebuild - -* Sat Feb 25 2012 Bruno Wolff III - 1:2.8.8-13 -- Adjust to glib changes so that xchat will build again - -* Sat Jan 14 2012 Fedora Release Engineering - 1:2.8.8-12 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild - -* Tue Dec 06 2011 Adam Jackson - 1:2.8.8-11 -- Rebuild for new libpng - -* Fri Jun 17 2011 Marcela Mašláňová - 1:2.8.8-10 -- Perl mass rebuild - -* Thu Apr 07 2011 Christopher Aillon - 1:2.8.8-9 -- Link against libnotify (#693362) - -* Thu Apr 07 2011 Christopher Aillon - 1:2.8.8-8 -- Update the dynamic libnotify check for the newer soname (#693362) - -* Mon Feb 07 2011 Fedora Release Engineering - 1:2.8.8-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild - -* Fri Dec 10 2010 Kevin Kofler - 1:2.8.8-6 -- Requires: alsa-utils for aplay (#661957) - -* Mon Nov 15 2010 Owen Taylor - 1:2.8.8-5 -- Add patch to work with libnotify-0.7 - -* Tue Jul 27 2010 Mamoru Tasaka - 1:2.8.8-4 -- Rebuild against python 2.7 - -* Thu Jun 03 2010 Kevin Kofler - 1:2.8.8-3 -- Rebuild again for perl-5.12.0 - -* Thu Jun 03 2010 Kevin Kofler - 1:2.8.8-2 -- --enable-ntlm (no longer enabled by default) - -* Thu Jun 03 2010 Kevin Kofler - 1:2.8.8-1 -- Update to 2.8.8 (#597735) -- Use xz tarball (new in 2.8.8) -- Drop smallfixes, redhat-desktop (remaining part), shm-pixmaps and - connect-mnemonic patches (all fixed upstream) - -* Wed Jun 02 2010 Marcela Maslanova - 1:2.8.6-18 -- Mass rebuild with perl-5.12.0 - -* Wed Apr 21 2010 Kevin Kofler - 1:2.8.6-17 -- Add port numbers for Freenode (Debarshi Ray) - -* Fri Apr 09 2010 Rudolf Kastl - 1:2.8.6-16 -- Added IRCClient .desktop file subcategory (#485306) -- Added GTK .desktop file subcategory -- Added curly brackets to the name macro for consistency. - -* Wed Dec 16 2009 Kevin Fenzi - 1:2.8.6-15 -- Add patch to allow switching to next channel with activity. - -* Mon Dec 7 2009 Stepan Kasal - 1:2.8.6-14 -- rebuild against perl 5.10.1 - -* Thu Sep 10 2009 Christopher Aillon - 1:2.8.6-13 -- Drop the antiquated OPN reference - -* Fri Aug 21 2009 Tomas Mraz - 1:2.8.6-12 -- rebuilt with new openssl - -* Mon Jul 27 2009 Fedora Release Engineering - 1:2.8.6-11 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild - -* Sat Jul 18 2009 Kevin Kofler - 1:2.8.6-10 -- Fixed patch for the "C_onnect" issue (#512034, Edward Sheldrake) - -* Thu Jul 16 2009 Kevin Kofler - 1:2.8.6-9 -- Fix literal underscore in "C_onnect" button (#512034, Matthias Clasen) - -* Mon Jun 29 2009 Kevin Kofler - 1:2.8.6-8 -- Change Name in xchat.desktop to XChat IRC (#293841) - -* Thu Feb 26 2009 Fedora Release Engineering - 1:2.8.6-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild - -* Tue Feb 10 2009 Kevin Kofler - 1:2.8.6-6 -- fix filtering of Provides on lib64 architectures - -* Fri Jan 16 2009 Kevin Kofler - 1:2.8.6-5 -- rebuild for new OpenSSL - -* Sun Nov 30 2008 Ignacio Vazquez-Abrams - 1:2.8.6-4 -- Rebuild for Python 2.6 - -* Mon Aug 11 2008 Kevin Kofler - 1:2.8.6-3 -- rebuild for fixed redhat-rpm-config (#450271) - -* Mon Jul 14 2008 Kevin Kofler - 1:2.8.6-2 -- apply xc286-smallfixes.diff from upstream -- don't #define GTK_DISABLE_DEPRECATED (fixes build against current GTK+) - -* Sun Jun 15 2008 Kevin Kofler - 1:2.8.6-1 -- update to 2.8.6 -- drop upstream patches (already applied in 2.8.6) -- set default charset to UTF-8 (2.8.6 changed it to Latin1) - -* Thu May 22 2008 Kevin Kofler - 1:2.8.4-16 -- fix more bugs in xchat-2.8.4-shm-pixmaps.patch (#282691) - -* Tue Apr 1 2008 Kevin Kofler - 1:2.8.4-15 -- remove --disable-panel which has been ignored since 2.0.0 -- add missing BR libntlm-devel (thanks to Karsten Hopp) - -* Mon Mar 3 2008 Tom "spot" Callaway - 1:2.8.4-14 -- rebuild for new perl - -* Mon Feb 18 2008 Christopher Aillon - 1:2.8.4-13 -- Rebuild to celebrate my birthday (and GCC 4.3) - -* Tue Feb 5 2008 Tom "spot" Callaway - 1:2.8.4-12 -- rebuild for new perl - -* Sat Jan 19 2008 Kevin Kofler - 1:2.8.4-11 -- fix bug in xchat-2.8.4-shm-pixmaps.patch (Adam Jackson, #429218) - -* Thu Jan 3 2008 Christopher Aillon 1:2.8.4-10 -- Rebuild - -* Thu Dec 20 2007 Adam Jackson 1:2.8.4-9 -- xchat-2.8.4-shm-pixmaps.patch: MIT-SHM pixmaps are optional, and when - using EXA they are not available. Check that the server supports them - before trying to create them so we don't crash. - -* Wed Dec 19 2007 Kevin Kofler - 1:2.8.4-8 -- apply xc284-fix-scrollbfdleak.diff from upstream - -* Wed Dec 5 2007 Christopher Aillon - 1:2.8.4-7 -- Fix the icon key in the .desktop file to validate - -* Sat Oct 13 2007 Kevin Kofler - 1:2.8.4-6 -- drop obsolete xchat-2.4.4-unrealize.patch (fixed upstream for a while) -- drop broken xchat-2.4.3-im_context_filter_keypress.patch (#295331) - -* Wed Sep 26 2007 Kevin Kofler - 1:2.8.4-5 -- apply xc284-improvescrollback.diff from upstream - -* Thu Aug 23 2007 Remi Collet - 1:2.8.4-4.fc8.1 -- F-8 rebuild (BuildID) - -* Sat Aug 11 2007 Kevin Kofler - 1:2.8.4-4 -- add missing BR perl(ExtUtils::Embed) - -* Fri Aug 3 2007 Kevin Kofler - 1:2.8.4-3 -- specify GPL version in License tag - -* Tue Jul 10 2007 Kevin Kofler - 1:2.8.4-2 -- apply xc284-scrollbmkdir.diff from upstream - -* Wed Jul 4 2007 Kevin Kofler - 1:2.8.4-1 -- update to 2.8.4 -- drop xc282-fixtrayzombies.diff (already in 2.8.4) -- rebase redhat-desktop and tray-icon patches - -* Fri Jun 22 2007 Kevin Kofler - 1:2.8.2-12 -- install the .desktop file with --vendor="" to keep the old name - -* Thu Jun 21 2007 Kevin Kofler - 1:2.8.2-11 -- add missing BR desktop-file-utils - -* Thu Jun 21 2007 Kevin Kofler - 1:2.8.2-10 -- remove Application; and X-Red-Hat-Extras; categories from .desktop file - (merge review #226551) -- install the .desktop file properly (merge review #226551) - -* Tue Jun 12 2007 Kevin Kofler - 1:2.8.2-9 -- build against system libsexy instead of static sexy-spell-entry now that this - is possible (Core-Extras merge) - -* Sat Jun 2 2007 Kevin Kofler - 1:2.8.2-8 -- disable tray icon by default (#241923) - -* Thu May 31 2007 Kevin Kofler - 1:2.8.2-7 -- revert to redhat-desktop patch pending further discussion - -* Thu May 31 2007 Kevin Kofler - 1:2.8.2-6 -- apply xc282-fixtrayzombies.diff from upstream - -* Wed May 30 2007 Kevin Kofler - 1:2.8.2-5 -- remove Requires: gtkspell as gtkspell is not currently being used - -* Mon May 28 2007 Kevin Kofler - 1:2.8.2-4 -- set explicit libdir for Tcl so it's found on lib64 arches (Remi Collet) -- move Tcl plugin into subpackage - (not an incompatible change as this was not built in f7-final at all) - -* Mon May 28 2007 Kevin Kofler - 1:2.8.2-3 -- use versioned Provides/Obsoletes to allow future package split - -* Mon May 28 2007 Kevin Kofler - 1:2.8.2-2 -- merge updates by Remi Collet and Marius Feraru (#224180) -- mention Tcl in description -- add release and user name to buildroot -- follow desktop-entry-spec on Name and GenericName as required by the Packaging - Guidelines -- drop BR gtkspell-devel as it's not currently used - -* Thu Apr 5 2007 Remi Collet - 1:2.8.2-1.fc6.remi -- update to 2.8.2 - -* Sat Mar 24 2007 Matthias Clasen - 1:2.6.6-9 -- Own /usr/lib/xchat (#166731) - -* Thu Jan 25 2007 Marius Feraru - 1:2.8.0-1.n0i.1 -- version 2.8.0 -- disabled some patches: nonblock, locale (fi, es) -- enabled fast tinting -- fixed "exchant" typo -- switched to using the "make install" (DESTDIR works) -- simplified gconf schema disabling method -- dropped plugins mover -- updated "Get rid of static libs" -- dropped xchat-remote -- updated build requirements -- dropped "default-webbrowser" patches (xchat tries to do it better now) -- do not provide "perl.so", "python.so", etc -- own everything under %%{_libdir}/xchat -- converted spec file to UTF8 -- fixed desktop entry category (dropping "Application") -- keep plugins documentation - -* Tue Jan 16 2007 Remi Collet - 1:2.8.0-2.fc6.remi -- add Provides/Osboletes for extensions (split RPM available on xchat.org). -- longer description -- enable tcl extension -- Requires gtk >= 2.10.0 - -* Mon Jan 15 2007 Remi Collet - 1:2.8.0-1.fc6.remi -- update to 2.8.0 -- add upstream patches (xc280-fix-back.diff, xc280-fix-ja.diff) - -* Fri Nov 3 2006 Matthias Clasen - 1:2.6.6-8 -- Silence %%pre (#213838) - -* Wed Oct 18 2006 Matthias Clasen - 1:2.6.6-7 -- Fix scripts according to packaging guidelines - -* Tue Oct 17 2006 Matthias Clasen - 1:2.6.6-6 -- Tighten up Requires (#203813) - -* Sat Oct 7 2006 David Woodhouse - 1:2.6.6-5 -- Fix nonblocking SSL socket behaviour - -* Mon Aug 28 2006 Warren Togami - 1:2.6.6-4 -- add upstream 2.6.6 es patch - -* Wed Aug 23 2006 Warren Togami - 1:2.6.6-3 -- enable optional spell checking if you install enchant - because gtkspell is currently unusable (#201116) - -* Thu Aug 17 2006 Warren Togami - 1:2.6.6-2 -- disable gtkspell because it breaks Input Method commit -- apply upstream fi patch - -* Wed Aug 2 2006 Marc Deslauriers - 1:2.6.6-1 -- Update to 2.6.6 -- Removed upstreamed dbus patch -- Enabled gtkspell support - -* Wed Jul 19 2006 Matthias Clasen - 1:2.6.0-6 -- Rebuild against dbus - -* Mon May 22 2006 Jesse Keating - 1:2.6.0-5 -- Adding missing buildreq (bz:191577, thanks Paul F.) - -* Sun Feb 12 2006 Christopher Aillon - 1:2.6.0-4 -- Rebuild - -* Tue Feb 07 2006 Jesse Keating - 1:2.6.0-3.2 -- rebuilt for new gcc4.1 snapshot and glibc changes - -* Fri Dec 09 2005 Jesse Keating - 1:2.6.0-3.1 -- rebuilt - -* Thu Dec 01 2005 John (J5) Palmieri - 1:2.6.0-3 -- rebuild for new dbus - -* Tue Nov 15 2005 Florian La Roche 1:2.6.0-2 -- Require(post): GConf2 - -* Thu Nov 10 2005 Christopher Aillon 1:2.6.0-1 -- Update to 2.6.0 - -* Wed Nov 9 2005 Christopher Aillon 1:2.4.5-2 -- Rebuild against newer openssl - -* Mon Sep 19 2005 Christopher Aillon 1:2.4.5-1 -- X-Chat 2.4.5 - -* Wed Aug 17 2005 Matthias Clasen 1:2.4.4-3 -- Fix a bug that could lead to occasional crashes - -* Mon Aug 15 2005 Christopher Aillon 1:2.4.4-2 -- Rebuild - -* Sun Jun 26 2005 Christopher Aillon 1:2.4.4-1 -- Update to xchat-2.4.4 - -* Sun May 15 2005 Warren Togami 1:2.4.3-3 -- Prevent interception of down arrow during Input Method (#144588 tagoh) - -* Thu Apr 14 2005 Warren Togami 1:2.4.3-2 -- fix plugins on lib64 (#113188 Ville Skytta) - -* Sun Apr 03 2005 Warren Togami 1:2.4.3-1 -- 2.4.3, use perl MODULE_COMPAT - -* Mon Mar 28 2005 Christopher Aillon 1:2.4.2-3 -- Fix crash when right clicking users whose away msg is unknown. - -* Fri Mar 25 2005 Christopher Aillon 1:2.4.2-2 -- Add user's away message to right click menu, if known - -* Thu Mar 17 2005 Christopher Aillon 1:2.4.2-1 -- Update to 2.4.2 - -* Sat Mar 5 2005 Christopher Aillon 1:2.4.1-4 -- Rebuild against GCC 4.0 - -* Tue Jan 18 2005 Chip Turner 1:2.4.1-3 -- rebuild for new perl - -* Tue Jan 4 2005 Christopher Aillon 1:2.4.1-2 -- Add Dan Reed's CTCP patch to support multiline messages (#136545) - -* Tue Nov 23 2004 Christopher Aillon 1:2.4.1-1 -- Update to 2.4.1 - -* Mon Sep 20 2004 Daniel Reed 1:2.4.0-3 -- #132967 Remove GenericName - -* Tue Aug 17 2004 Daniel Reed 1:2.4.0-2 -- #125846 Change xchat.desktop names to "IRC" - -* Sun Aug 15 2004 Christopher Aillon 1:2.4.0-1 -- Update to 2.4.0 -- Fix simplify-to-use-gnome-open and simplify-to-use-htmlview patches - to not conflict every time upstream modifies the urlhandler list. -- Remove focus and tab completion patches (no longer needed) - -* Mon Jul 26 2004 Christopher Aillon 1:2.0.10-3 -- Update upstream patch to fix tab completion crash -- Add upstream patch to fix focus crash on some window managers. - -* Fri Jul 9 2004 Mike A. Harris 1:2.0.10-2 -- Added upstream xc2010-fixtabcomp.diff patch to fix SEGV in tab completion - -* Sat Jul 03 2004 Christopher Aillon 1:2.0.10-1 -- Update to 2.0.10 - -* Wed Jun 23 2004 Christopher Aillon 1:2.0.9-1 -- Update to 2.0.9 -- Fixed the URL handler menu patches to apply. - -* Tue Jun 15 2004 Elliot Lee -- rebuilt - -* Tue Mar 9 2004 Mike A. Harris 1:2.0.7-5 -- Bump and rebuild for Fedora devel, to sync up with new perl -- Remove require_autoconf conditional, and conditionalized autoconf BuildRequires - -* Fri Mar 5 2004 Mike A. Harris 1:2.0.7-4 -- Added xchat-2.0.7-simplify-to-use-gnome-open-for-default-webbrowser.patch - and xchat-2.0.7-simplify-to-use-htmlview-for-default-webbrowser.patch to - simplify the default URL handler menu to point only to the default system - web browser by using gnome-open on Fedora Core 2 and later, or htmlview - on earlier OS releases. This is added to improve user friendliness (#82331) - -* Tue Mar 02 2004 Elliot Lee -- rebuilt - -* Tue Feb 17 2004 Mike A. Harris 1:2.0.7-1.FC1.0 -- Rebuild xchat 2.0.7-3 as 2.0.7-1.FC1.0 for release as an enhancement erratum - for Fedora Core 1. Also fixes AMD64 64bit issues reported in bug (#114237) - -* Fri Feb 13 2004 Elliot Lee 1:2.0.7-3 -- rebuilt - -* Mon Jan 26 2004 Jeremy Katz 1:2.0.7-2 -- rebuild for new perl version - -* Sat Jan 10 2004 Mike A. Harris 1:2.0.7-1 -- Updated to xchat 2.0.7 -- Removed already integrated patches, including: xc204-fixperlui.diff, - xchat-2.0.4-screen-position-fix.patch, xchat-2.0.4-exec-shield-GNU-stack.patch -- Added a new rpm macro require_autoconf, which is disabled (0) by default, as - it seems no longer necessary to run autoconf prior to ./configure, so we no - longer need to BuildRequire autoconf 2.54 either. - -* Fri Oct 24 2003 Mike A. Harris 2.0.4-4 -- Added xchat-2.0.4-exec-shield-GNU-stack.patch from Arjan, to allow xchat to - be be protected by exec shield if the system has exec-shield enabled. - -* Fri Sep 19 2003 Mike A. Harris 2.0.4-3.EL -- Rebuilt 2.0.4-3 for Taroon as 2.0.4-3.EL - -* Fri Sep 19 2003 Mike A. Harris 2.0.4-3 -- Added xchat-2.0.4-screen-position-fix.patch to fix problem where xchat - doesn't remember it's screen location between invocations (#103896) - -* Sat Aug 30 2003 Mike A. Harris 2.0.4-2 -- Updated xchat-2.0.4-redhat-desktop-file.patch - -* Thu Aug 28 2003 Mike A. Harris 2.0.4-1 -- Updated to xchat 2.0.4 -- Removed unneeded patches xc203-fixtint.diff, xc203-fix-cps.diff -- Added upstream patch xc204-fixperlui.diff -- Updated autoconf dependancy to version 2.54 and greater as xchat wont - compile otherwise. Meaning Red Hat Linux 9 or higher is needed. - -* Tue Jul 22 2003 Nalin Dahyabhai 2.0.3-4 -- rebuild - -* Mon Jul 14 2003 Chip Turner -- rebuild for new perl 5.8.1 - -* Thu Jul 10 2003 Mike A. Harris 2.0.3-2 -- Added xc203-fix-cps.diff patch from upstream to fix cps calculation -- TCL plugin was getting built even though we don't want it, so now we pass - --enable-tcl or --disable-tcl explicitly, depending on with_tclplugin macro - -* Mon Jun 30 2003 Mike A. Harris 2.0.3-1.EL -- Rebuilt 2.0.3-1 as 2.0.3-1.EL for Red Hat Enterprise Linux development - -* Mon Jun 30 2003 Mike A. Harris 2.0.3-1 -- Updated to xchat 2.0.3 -- Dropped old patches: xc202-fixdetach.diff, xc202-fixurlg.diff, - xchat-2.0.2-lib64-cleanup-for-python.patch -- Added upstream patch: xc203-fixtint.diff - -* Wed Jun 04 2003 Elliot Lee -- rebuilt - -* Thu May 29 2003 Mike A. Harris 2.0.2-7 -- Added back BuildRequires autoconf, and call autoconf prior to ./configure - as it seems to make xchat build successfully. Have not bothered to figure - out why calling autoconf is needed. Something for a rainy day. - -* Thu May 29 2003 Mike A. Harris 2.0.2-6 -- Removed gnome-libs BuildRequires as it is bogus now -- Removed autoconf BuildRequires and usage, as it should be unneeded -- Added new BuildRequires on gettext, bison >= 1.35, glib2-devel >= 2.0.3, - gtk2-devel >= 2.0.3, /bin/sed (#91676 - Warren Togami) -- Removed dead patches: xchat-1.8.9-perlcrypt.patch, xchat-1.8.9-korean-fontset.patch - -* Wed May 21 2003 Mike A. Harris 2.0.2-5 -- Removed xchat.desktop file, as it was earlier replacedwith a patch -- Converted xchat-2.0.2-redhat-desktop-file.patch to be UTF-8 clean now, - instead of the various random legacy mix of encodings it was, updating - the following: es, ko, uk, zh_TW - -* Tue May 20 2003 Mike A. Harris 2.0.2-4 -- Replace explicit perl package name-epoch-version Requires added in 2.0.2-3 - with a more robust and generic solution of querying perl for the archlibexp - dir during building, and requiring it instead - -* Tue May 20 2003 Bill Nottingham 2.0.2-3 -- rebuild against new (old?) perl, add epoch to dependency - -* Sat May 17 2003 Mike A. Harris 2.0.2-1 -- Updated to new xchat 2.0.2 based on GTK2 -- Dropped unneeded patches xchat-1.8.1-konqueror.patch, - xchat-1.8.4-fix-USE_GNOME.patch -- Updated xchat-2.0.2-freenode.patch to refer to Openprojects.net -- Removed doc/xchat.sgml doc/*.html scripts-python scripts-perl from %%doc -- Added xchat-2.0.2-redhat-desktop-file.patch to patch the supplied xchat - desktop file, instead of replacing it and trying to stay in sync -- Added xchat-2.0.2-lib64-cleanup-for-python.patch which fixes build problems - on lib64 archs, and replaces xchat-multilib.patch -- Added with_tclplugin macro and default it to disabled - -* Mon Mar 17 2003 Mike A. Harris 1.8.11-8 -- Added xchat-1.8.11-nickall.patch which was written by Fabio Olive Leite, - sent to me by Rik van Riel - -* Wed Feb 19 2003 Bill Nottingham 1.8.11-7 -- ship single desktop in %{_datadir}/applications, not /etc/X11/applnk - -* Fri Jan 31 2003 Mike A. Harris 1.8.11-6 -- Added xchat-1.8.11-freenode.patch to rename all openprojects.net entries - to freenode.net in the default server list. Patch courtesy of Dan Burcaw - from bug (#81704) - -* Wed Jan 22 2003 Mike A. Harris 1.8.11-5 -- Removed double .desktop file (#81874,82315) - -* Wed Jan 22 2003 Tim Powers 1.8.11-4 -- rebuilt - -* Tue Jan 7 2003 Mike A. Harris 1.8.11-3 -- Add bugfix from xchat.org xc1811fixststint.diff - -* Tue Jan 7 2003 Mike A. Harris 1.8.11-2 -- Remove CVS files from source dirs so they're not installed into doc dirs. - -* Tue Jan 7 2003 Mike A. Harris 1.8.11-1 -- Update to xchat 1.8.11 bugfix release, fixes various runtime crashes -- Remove now included patches: xchat-1.8.10-urlhandler-open-in-new-tab.patch, - xchat-1.8.10-beep-beep-beep.patch - -* Tue Jan 7 2003 Nalin Dahyabhai 1.8.10-13 -- Pick up OpenSSL configuration from pkgconfig, if available -- Add openssl-devel and pkgconfig as buildreqs - -* Wed Dec 11 2002 Elliot Lee 1.8.10-12 -- Fix broken libpython path on multilibbed systems (patch13) -- _smp_mflags - -* Tue Nov 26 2002 Mike A. Harris 1.8.10-11 -- Added xchat-1.8.10-urlhandler-open-in-new-tab.patch to offer the option of - opening a URL in a new tab of an existing browser window rather than a new - window - -* Sat Nov 23 2002 Mike A. Harris 1.8.10-10 -- Added BuildRequires: python-devel to hopefully pick up a missing dep - causing package build failure in timp's nightly builds. -- Removed dead patches -- Updated package summary and description to be more user friendly by - rewording, and removing scary words like GNOME, GTK and other irrelevance - -* Wed Nov 13 2002 Mike A. Harris 1.8.10-9 -- Made sure {_sysconfdir}/X11/applnk/Internet/xchat.desktop gets packaged -- Removed some conditional weirdness in %%files list. This may break xchat - erratum releases on Red Hat Linux 7.x. May need to be fixed in future. - -* Fri Aug 23 2002 Mike A. Harris 1.8.10-7 -- Added Requires line so that xchat requires the exact version of perl - be installed, that was used to compile it, since the embedded perl - interpreter will break, if you upgrade perl - -* Thu Aug 15 2002 Mike A. Harris 1.8.10-6 -- Fix Bill's beep beep beep bug (#71651) - -* Wed Aug 14 2002 Jonathan Blandford 1.8.10-5 -- actually install the desktop file. - -* Fri Aug 9 2002 Mike A. Harris 1.8.10-3 -- Added http://xchat.org/files/source/1.8/patches/xc1810fixme.diff to fix - bug with using /ME in a /QUERY window. (#71179) - -* Wed Aug 7 2002 Mike A. Harris 1.8.10-2 -- Updated to xchat 1.8.10 to fix a few bugs where a remote ircd could cause - the xchat client to crash. This is a bugfix only release. - -* Tue Aug 6 2002 Mike A. Harris 1.8.9-10 -- Added Korean fontset support to fix bug (#69771) - -* Mon Aug 5 2002 Mike A. Harris 1.8.9-9 -- Enabled python scripting which was somehow disabled somewhere along the - line by default in upstream sources, and we missed catching it. (#70816) - -* Sun Aug 4 2002 Mike A. Harris 1.8.9-8 -- Created new-style net-xchat.desktop file (#69541) - -* Fri Jun 21 2002 Tim Powers 1.8.9-7 -- automated rebuild - -* Tue Jun 18 2002 Mike A. Harris 1.8.9-6 -- updated the package description -- Added CFLAGS and LDFLAGS export vars before configure to fix rpath problem - -* Sun May 26 2002 Tim Powers -- automated rebuild - -* Mon May 20 2002 Mike A. Harris 1.8.9-2 -- Updated to xchat 1.8.9 - -* Mon Apr 8 2002 Mike A. Harris 1.8.8-5 -- Re-enabled GNOME support due to user complaints of pixmaps missing, key - bindings, and other fairly important features no longer working. - -* Tue Mar 27 2002 Mike A. Harris 1.8.8-4 -- Disabled GNOME support since it doesn't seem too useful anyways, and forces - all xchat users to install GNOME libs even if they use KDE. (#59626) -- Updated URL and source lines in spec. - -* Wed Mar 6 2002 Mike A. Harris 1.8.8-1 -- Updated to xchat 1.8.8 - -* Tue Feb 26 2002 Mike A. Harris 1.8.7-6 -- Built in new buildroot - -* Tue Feb 5 2002 Mike A. Harris 1.8.7-5 -- Added xchat-1.8.7-use-sysconf-to-detect-cpus.patch to use glibc's sysconf() - to detect the number of processors available. - -* Mon Feb 4 2002 Mike A. Harris 1.8.7-4 -- Enabled IPv6 support as per the request for enhancement (#52124) - -* Thu Jan 24 2002 Mike A. Harris 1.8.7-3 -- Rebuilt in new build environment - -* Thu Jan 10 2002 Mike A. Harris 1.8.7-2 -- Updated to xchat 1.8.7 -- New release fixes security vulnerability in CTCP reply -- Built erratum for all supported releases (1.8.7-1.62.0, 1.8.7-1.70.0, - 1.8.7-1.71.0, 1.8.7-1.72.0) -- Removed konqueror patch as it is integrated now. - -* Sat Jan 5 2002 Mike A. Harris 1.8.6-2 -- Enabled ssl support with --enable-openssl -- Also built releases 1.72.0, 1.71.0, 1.70.0, 1.62.0 for erratum release - -* Mon Dec 10 2001 Mike A. Harris 1.8.6-1 -- Updated to xchat 1.8.6 - -* Tue Nov 13 2001 Mike A. Harris 1.8.5-1 -- Updated to xchat 1.8.5 -- Added f to rm -r in install and clean sections - -* Sun Oct 7 2001 Mike A. Harris 1.8.4-1 -- Updated to 1.8.4, now using tar.bz2 -- Removed kanjiconv-fix patch as it is integrated now -- Added xchat-1.8.4-fix-USE_GNOME.patch to fix simple ifdef USE_GNOME typo - -* Fri Jul 13 2001 Akira TAGOH 1.8.1-2 -- fixed check locale. -- don't save kanji_conv. - always check locale. however anyone can change the option from - the settings menu. - -* Thu Jul 12 2001 Havoc Pennington -- upgrade to 1.8.1 -- remove autoconnect patch since it's upstream -- remove japanese patch, upstream seems to have applied - parts of it and changelog says there's upstream support. - (this patch was pretty huge to maintain in an SRPM anyway...) -- put scripts-python scripts-perl in docs bug #28521 -- remove patch to include locale.h, gone upstream -- upgrade konqueror patch - -* Thu Jul 12 2001 Havoc Pennington -- nevermind, BuildRequires gnome-libs, that should - close #48923 - -* Thu Jul 12 2001 Havoc Pennington -- fix file list to not include absolute path "/usr/share/..." - no idea how that ever worked at all. closes #48923 - -* Mon Jun 25 2001 Karsten Hopp -- use konqueror, not kfmclient on URLs - -* Fri Feb 23 2001 Trond Eivind Glomsrød -- langify -- use %%{_tmppath} -- make it compile - -* Tue Feb 13 2001 Akira TAGOH -- Added Japanese patch. - -* Tue Feb 13 2001 Havoc Pennington -- patch that may fix autoconnections (bug 27093) - -* Mon Jan 22 2001 Havoc Pennington -- 1.6.3 -- remove patch to desktop file (Internet->Application), seems to - have gone upstream - -* Sat Dec 9 2000 Havoc Pennington -- Remove security fix which has been merged upstream -- upgrade to 1.6.1 - -* Sat Aug 19 2000 Havoc Pennington -- Don't use /bin/sh to interpret URLs from the net - -* Fri Aug 11 2000 Jonathan Blandford -- Updated Epoch - -* Thu Jul 13 2000 Prospector -- automatic rebuild - -* Mon Jun 19 2000 Havoc Pennington -- Install HTML docs - -* Fri Jun 16 2000 Preston Brown -- fix desktop entry - -* Fri May 19 2000 Havoc Pennington -- rebuild for the Winston tree, update to 1.4.2 diff --git a/xchat.svg b/xchat.svg deleted file mode 100644 index c7055d8..0000000 --- a/xchat.svg +++ /dev/null @@ -1,1802 +0,0 @@ - - - - - Pidgin - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - Jakub Steiner - - - http://jimmac.musichall.cz - - Pidgin - - - pidgin - im - instant - messaging - - - - - - - - - - - - - - - - - - - - - Hylke Bons, Lapo Calamandrei - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -