summaryrefslogtreecommitdiff
path: root/net-im
diff options
context:
space:
mode:
authorDon Seiler <rizzo@gentoo.org>2004-08-17 01:32:04 +0000
committerDon Seiler <rizzo@gentoo.org>2004-08-17 01:32:04 +0000
commita299c8feb5a04d9e91cbc75018acfc0f47458dea (patch)
treef043f2341ddd7a96d4c1941f1983d6d9ba529a02 /net-im
parentclean older versions (diff)
downloadhistorical-a299c8feb5a04d9e91cbc75018acfc0f47458dea.tar.gz
historical-a299c8feb5a04d9e91cbc75018acfc0f47458dea.tar.bz2
historical-a299c8feb5a04d9e91cbc75018acfc0f47458dea.zip
Patches for a file descriptor leak and issue with smileys
Diffstat (limited to 'net-im')
-rw-r--r--net-im/gaim/ChangeLog9
-rw-r--r--net-im/gaim/Manifest16
-rw-r--r--net-im/gaim/files/digest-gaim-0.81-r21
-rw-r--r--net-im/gaim/files/gaim-0.82cvs-gtkprefs-fix.patch27
-rw-r--r--net-im/gaim/files/syslog_fd_leak.diff263
-rw-r--r--net-im/gaim/gaim-0.81-r2.ebuild121
6 files changed, 430 insertions, 7 deletions
diff --git a/net-im/gaim/ChangeLog b/net-im/gaim/ChangeLog
index 2719889aefd6..37aa008be792 100644
--- a/net-im/gaim/ChangeLog
+++ b/net-im/gaim/ChangeLog
@@ -1,6 +1,13 @@
# ChangeLog for net-im/gaim
# Copyright 2002-2004 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/net-im/gaim/ChangeLog,v 1.220 2004/08/15 03:47:11 geoman Exp $
+# $Header: /var/cvsroot/gentoo-x86/net-im/gaim/ChangeLog,v 1.221 2004/08/17 01:32:04 rizzo Exp $
+
+*gaim-0.81-r2 (16 Aug 2004)
+
+ 16 Aug 2004; Don Seiler <rizzo@gentoo.org>
+ +files/gaim-0.82cvs-gtkprefs-fix.patch, +files/syslog_fd_leak.diff,
+ +gaim-0.81-r2.ebuild:
+ Patches for a file descriptor leak and issue with smileys
14 Aug 2004; Stephen P. Becker <geoman@gentoo.org> gaim-0.81-r1.ebuild:
Stable on mips - bug 60034
diff --git a/net-im/gaim/Manifest b/net-im/gaim/Manifest
index e8104539fce0..adfadacb713c 100644
--- a/net-im/gaim/Manifest
+++ b/net-im/gaim/Manifest
@@ -1,12 +1,16 @@
+MD5 890e500c582d8fbc95ff83efafdb5c28 ChangeLog 35543
+MD5 c21c8b11e93aaa2494e8d22cd918d8e0 gaim-0.81-r2.ebuild 3623
MD5 aa2bd01ed3b53a41dd82677362df7309 gaim-0.80.ebuild 3677
-MD5 24624eec56252c54a285be58a39ee241 ChangeLog 35315
MD5 19b3cafbbe380403d46cccc45a984b80 metadata.xml 481
MD5 ce948aa070cbdedd0e166613b097fb6e gaim-0.81-r1.ebuild 3525
-MD5 7a5f5d2d68f003ca4e2b61935ca40ea1 files/digest-gaim-0.80 63
-MD5 12944fad880bbec0f05c539550fa5dd4 files/gaim-0.81cvs-gtkblist_dnd.diff 1516
-MD5 4d66f0652fc19f650164da20f3898eac files/gaim-0.81cvs-irc-ison-lessflood.patch 1252
MD5 ed679fa262748c5626af4d9dcfd4b278 files/digest-gaim-0.81-r1 63
+MD5 ad7e4af1d9de1d8a8c2b24530b6469e5 files/gaim-0.81_msn-slp.diff 779
+MD5 7a5f5d2d68f003ca4e2b61935ca40ea1 files/digest-gaim-0.80 63
+MD5 afc682711efed5d09a9229bd06a7a13b files/gaim-0.76-xinput.patch 644
+MD5 0dadf0b96457e6b4069d9b23e6b3a80c files/gaim-0.82cvs-gtkprefs-fix.patch 982
+MD5 22aae7173f7cbf5d93d1db9907740064 files/syslog_fd_leak.diff 8423
+MD5 ed679fa262748c5626af4d9dcfd4b278 files/digest-gaim-0.81-r2 63
MD5 91841348c88bce66a078e65c4c26f9ca files/gaim-0.81cvs-chatbutton-crashfix.patch 2932
+MD5 12944fad880bbec0f05c539550fa5dd4 files/gaim-0.81cvs-gtkblist_dnd.diff 1516
MD5 d37f310f1242f44dab25d3aa42c8836d files/gaim-0.81cvs-icon_scaling.diff 3999
-MD5 afc682711efed5d09a9229bd06a7a13b files/gaim-0.76-xinput.patch 644
-MD5 ad7e4af1d9de1d8a8c2b24530b6469e5 files/gaim-0.81_msn-slp.diff 779
+MD5 4d66f0652fc19f650164da20f3898eac files/gaim-0.81cvs-irc-ison-lessflood.patch 1252
diff --git a/net-im/gaim/files/digest-gaim-0.81-r2 b/net-im/gaim/files/digest-gaim-0.81-r2
new file mode 100644
index 000000000000..0f0ac7561307
--- /dev/null
+++ b/net-im/gaim/files/digest-gaim-0.81-r2
@@ -0,0 +1 @@
+MD5 ee3460363f51ad24db1c5697d1da3c1b gaim-0.81.tar.bz2 4588215
diff --git a/net-im/gaim/files/gaim-0.82cvs-gtkprefs-fix.patch b/net-im/gaim/files/gaim-0.82cvs-gtkprefs-fix.patch
new file mode 100644
index 000000000000..c50f48395d17
--- /dev/null
+++ b/net-im/gaim/files/gaim-0.82cvs-gtkprefs-fix.patch
@@ -0,0 +1,27 @@
+Index: src/gtkprefs.c
+===================================================================
+RCS file: /cvsroot/gaim/gaim/src/gtkprefs.c,v
+retrieving revision 1.199
+diff -u -p -r1.199 gtkprefs.c
+--- src/gtkprefs.c 10 Aug 2004 12:57:41 -0000 1.199
++++ src/gtkprefs.c 17 Aug 2004 00:42:38 -0000
+@@ -523,7 +523,7 @@ GtkTreePath *theme_refresh_theme_list()
+
+ void theme_install_theme(char *path, char *extn) {
+ #ifndef _WIN32
+- gchar *command;
++ gchar *command, *escaped;
+ #endif
+ gchar *destdir;
+ gchar *tail;
+@@ -544,7 +544,9 @@ void theme_install_theme(char *path, cha
+ * other platforms, if need be */
+ if (!g_ascii_strcasecmp(tail, ".gz") || !g_ascii_strcasecmp(tail, ".tgz")) {
+ #ifndef _WIN32
+- command = g_strdup_printf("tar > /dev/null xzf \"%s\" -C %s", path, destdir);
++ escaped = g_shell_quote(path);
++ command = g_strdup_printf("tar > /dev/null xzf %s -C %s", escaped, destdir);
++ g_free(escaped);
+ #else
+ if(!wgaim_gz_untar(path, destdir)) {
+ g_free(destdir);
diff --git a/net-im/gaim/files/syslog_fd_leak.diff b/net-im/gaim/files/syslog_fd_leak.diff
new file mode 100644
index 000000000000..780ee0ba5840
--- /dev/null
+++ b/net-im/gaim/files/syslog_fd_leak.diff
@@ -0,0 +1,263 @@
+diff -urd gaim-0.81/src/log.c gaim-0.81-new/src/log.c
+--- gaim-0.81/src/log.c 2004-08-05 10:34:02.000000000 -0700
++++ gaim-0.81-new/src/log.c 2004-08-15 19:43:02.000000000 -0700
+@@ -332,6 +332,60 @@
+ FILE *file;
+ };
+
++static void log_writer_common(GaimLog *log, GaimMessageFlags type,
++ const char *prpl, time_t time,
++ const char *ext)
++{
++ char date[64];
++ struct generic_logger_data *data = log->logger_data;
++
++ if(!data) {
++ /* This log is new */
++ char *ud = gaim_user_dir();
++ char *acct_name = g_strdup(gaim_normalize(log->account,
++ gaim_account_get_username(log->account)));
++ char *target;
++ char *dir;
++ char *filename, *path;
++
++ printf("%s\n", acct_name);
++
++ if (log->type == GAIM_LOG_CHAT) {
++ target = g_strdup_printf("%s.chat", gaim_normalize(log->account,
++ log->name));
++ } else if(log->type == GAIM_LOG_SYSTEM) {
++ target = g_strdup(".system");
++ } else {
++ target = g_strdup(gaim_normalize(log->account, log->name));
++ }
++
++ strftime(date, sizeof(date), "%Y-%m-%d.%H%M%S", localtime(&log->time));
++
++ dir = g_build_filename(ud, "logs",
++ prpl, acct_name, target, NULL);
++ gaim_build_dir (dir, S_IRUSR | S_IWUSR | S_IXUSR);
++ g_free(target);
++ g_free(acct_name);
++
++ filename = g_strdup_printf("%s%s", date, ext ? ext : "");
++
++ path = g_build_filename(dir, filename, NULL);
++ g_free(dir);
++ g_free(filename);
++
++ log->logger_data = data = g_new0(struct generic_logger_data, 1);
++
++ data->file = fopen(path, "a");
++ if (!data->file) {
++ gaim_debug(GAIM_DEBUG_ERROR, "log",
++ "Could not create log file %s\n", filename);
++ g_free(path);
++ return;
++ }
++ g_free(path);
++ }
++}
++
+ static GList *log_lister_common(GaimLogType type, const char *name, GaimAccount *account, const char *ext, GaimLogLogger *logger)
+ {
+ GDir *dir;
+@@ -505,47 +559,23 @@
+ static void html_logger_write(GaimLog *log, GaimMessageFlags type,
+ const char *from, time_t time, const char *message)
+ {
+- char date[64];
+ char *msg_fixed;
+- struct generic_logger_data *data = log->logger_data;
++ char date[64];
+ GaimPlugin *plugin = gaim_find_prpl(gaim_account_get_protocol_id(log->account));
+ const char *prpl_name = plugin->info->name;
++ struct generic_logger_data *data = log->logger_data;
+
+ if(!data) {
+- /* This log is new */
+- char *ud = gaim_user_dir();
+- char *guy = g_strdup(gaim_normalize(log->account, gaim_account_get_username(log->account)));
+- char *chat;
+- const char *prpl = GAIM_PLUGIN_PROTOCOL_INFO(plugin)->list_icon(log->account, NULL);
+- char *dir;
+- char *filename;
+-
+- if (log->type == GAIM_LOG_CHAT) {
+- chat = g_strdup_printf("%s.chat", guy);
+- g_free(guy);
+- guy = chat;
+- }
+-
+- strftime(date, sizeof(date), "%Y-%m-%d.%H%M%S.html", localtime(&log->time));
+-
+- dir = g_build_filename(ud, "logs",
+- prpl, guy, gaim_normalize(log->account, log->name), NULL);
+- gaim_build_dir (dir, S_IRUSR | S_IWUSR | S_IXUSR);
+- g_free(guy);
+-
+- filename = g_build_filename(dir, date, NULL);
+- g_free(dir);
++ const char *prpl =
++ GAIM_PLUGIN_PROTOCOL_INFO(plugin)->list_icon(log->account, NULL);
++ log_writer_common(log, type, prpl, time, ".html");
+
+- log->logger_data = data = g_new0(struct generic_logger_data, 1);
++ data = log->logger_data;
+
+- data->file = fopen(filename, "a");
+- if (!data->file) {
+- gaim_debug(GAIM_DEBUG_ERROR, "log",
+- "Could not create log file %s\n", filename);
+- g_free(filename);
++ /* if we can't write to the file, give up before we hurt ourselves */
++ if(!data->file)
+ return;
+- }
+- g_free(filename);
++
+ strftime(date, sizeof(date), "%Y-%m-%d %H:%M:%S", localtime(&log->time));
+ fprintf(data->file, "<html><head><title>");
+ fprintf(data->file, "Conversation with %s at %s on %s (%s)",
+@@ -554,11 +584,8 @@
+ fprintf(data->file,
+ "<h3>Conversation with %s at %s on %s (%s)</h3>\n",
+ log->name, date, gaim_account_get_username(log->account), prpl);
+- }
+
+- /* if we can't write to the file, give up before we hurt ourselves */
+- if(!data->file)
+- return;
++ }
+
+ gaim_markup_html_to_xhtml(message, &msg_fixed, NULL);
+
+@@ -642,35 +669,6 @@
+
+ static void html_logger_create(GaimLog *log)
+ {
+- if(log->type == GAIM_LOG_SYSTEM){
+- char date[64];
+- const char *prpl = GAIM_PLUGIN_PROTOCOL_INFO
+- (gaim_find_prpl(gaim_account_get_protocol_id(log->account)))->list_icon(log->account, NULL);
+- char *ud = gaim_user_dir();
+- char *dir = g_build_filename(ud, "logs", prpl, log->name, ".system", NULL);
+- char *filename;
+- struct generic_logger_data *data;
+-
+- gaim_build_dir (dir, S_IRUSR | S_IWUSR | S_IXUSR);
+- strftime(date, sizeof(date), "%Y-%m-%d.%H%M%S.html", localtime(&log->time));
+- filename = g_build_filename(dir, date, NULL);
+- g_free(dir);
+-
+- log->logger_data = data = g_new0(struct generic_logger_data, 1);
+-
+- data->file = fopen(filename, "a");
+- if (!data->file) {
+- gaim_debug(GAIM_DEBUG_ERROR, "log",
+- "Could not create log file %s\n", filename);
+- g_free(filename);
+- return;
+- }
+- fprintf(data->file, "<html><head><title>");
+- fprintf(data->file, "System Log for %s (%s)",
+- gaim_account_get_username(log->account), prpl);
+- fprintf(data->file, "</title></head><body>");
+- g_free(filename);
+- }
+ }
+
+ static GaimLogLogger html_logger = {
+@@ -697,49 +695,25 @@
+ const char *from, time_t time, const char *message)
+ {
+ char date[64];
+- char *stripped = NULL;
++ GaimPlugin *plugin = gaim_find_prpl(gaim_account_get_protocol_id(log->account));
+ struct generic_logger_data *data = log->logger_data;
+- if (!data) {
++ char *stripped = NULL;
++
++ if(!data) {
+ /* This log is new. We could use the loggers 'new' function, but
+ * creating a new file there would result in empty files in the case
+ * that you open a convo with someone, but don't say anything.
+- *
+- * The log is also not a system log. Because if it is, data would
+- * be created in txt_logger_create
+ */
+- char *ud = gaim_user_dir();
+- char *guy = g_strdup(gaim_normalize(log->account, gaim_account_get_username(log->account)));
+- char *chat;
+- const char *prpl = GAIM_PLUGIN_PROTOCOL_INFO
+- (gaim_find_prpl(gaim_account_get_protocol_id(log->account)))->list_icon(log->account, NULL);
+- char *dir;
+- char *filename;
+-
+- if (log->type == GAIM_LOG_CHAT) {
+- chat = g_strdup_printf("%s.chat", guy);
+- g_free(guy);
+- guy = chat;
+- }
+-
+- strftime(date, sizeof(date), "%Y-%m-%d.%H%M%S.txt", localtime(&log->time));
+-
+- dir = g_build_filename(ud, "logs",
+- prpl, guy, gaim_normalize(log->account, log->name), NULL);
+- gaim_build_dir (dir, S_IRUSR | S_IWUSR | S_IXUSR);
+- g_free(guy);
+-
+- filename = g_build_filename(dir, date, NULL);
+- g_free(dir);
++ const char *prpl =
++ GAIM_PLUGIN_PROTOCOL_INFO(plugin)->list_icon(log->account, NULL);
++ log_writer_common(log, type, prpl, time, ".txt");
+
+- log->logger_data = data = g_new0(struct generic_logger_data, 1);
++ data = log->logger_data;
+
+- data->file = fopen(filename, "a");
+- if (!data->file) {
+- gaim_debug(GAIM_DEBUG_ERROR, "log", "Could not create log file %s\n", filename);
+- g_free(filename);
++ /* if we can't write to the file, give up before we hurt ourselves */
++ if(!data->file)
+ return;
+- }
+- g_free(filename);
++
+ strftime(date, sizeof(date), "%Y-%m-%d %H:%M:%S", localtime(&log->time));
+ fprintf(data->file, "Conversation with %s at %s on %s (%s)\n",
+ log->name, date, gaim_account_get_username(log->account), prpl);
+@@ -831,31 +805,6 @@
+
+ static void txt_logger_create(GaimLog *log)
+ {
+- if(log->type == GAIM_LOG_SYSTEM){
+- char date[64];
+- const char *prpl = GAIM_PLUGIN_PROTOCOL_INFO
+- (gaim_find_prpl(gaim_account_get_protocol_id(log->account)))->list_icon(log->account, NULL);
+- char *ud = gaim_user_dir();
+- char *dir = g_build_filename(ud, "logs", prpl, log->name, ".system", NULL);
+- char *filename;
+- struct generic_logger_data *data;
+-
+- gaim_build_dir (dir, S_IRUSR | S_IWUSR | S_IXUSR);
+- strftime(date, sizeof(date), "%Y-%m-%d.%H%M%S.txt", localtime(&log->time));
+- filename = g_build_filename(dir, date, NULL);
+- g_free(dir);
+-
+- log->logger_data = data = g_new0(struct generic_logger_data, 1);
+-
+- data->file = fopen(filename, "a");
+- if (!data->file) {
+- gaim_debug(GAIM_DEBUG_ERROR, "log",
+- "Could not create log file %s\n", filename);
+- g_free(filename);
+- return;
+- }
+- g_free(filename);
+- }
+ }
+
+ static GaimLogLogger txt_logger = {
diff --git a/net-im/gaim/gaim-0.81-r2.ebuild b/net-im/gaim/gaim-0.81-r2.ebuild
new file mode 100644
index 000000000000..6482d04d828e
--- /dev/null
+++ b/net-im/gaim/gaim-0.81-r2.ebuild
@@ -0,0 +1,121 @@
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-im/gaim/gaim-0.81-r2.ebuild,v 1.1 2004/08/17 01:32:04 rizzo Exp $
+
+inherit flag-o-matic eutils gcc
+use debug && inherit debug
+
+IUSE="nls perl spell nas debug crypt cjk gnutls silc evo krb4"
+
+DESCRIPTION="GTK Instant Messenger client"
+HOMEPAGE="http://gaim.sourceforge.net/"
+SRC_URI="mirror://sourceforge/gaim/${P}.tar.bz2"
+
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="~x86 ~sparc ~amd64 ~ppc ~alpha ~ia64 ~mips ~hppa"
+
+DEPEND=">=x11-libs/gtk+-2.0
+ >=dev-libs/glib-2.0
+ nas? ( >=media-libs/nas-1.4.1-r1 )
+ sys-devel/gettext
+ media-libs/libao
+ >=media-libs/audiofile-0.2.0
+ perl? ( >=dev-lang/perl-5.8.2-r1
+ !<dev-perl/ExtUtils-MakeMaker-6.17 )
+ spell? ( >=app-text/gtkspell-2.0.2 )
+ dev-libs/nss
+ gnutls? ( net-libs/gnutls )
+ krb4? ( app-crypt/mit-krb5 )
+ silc? ( >=net-im/silc-toolkit-0.9.12-r2 )
+ evo? ( mail-client/evolution )"
+
+PDEPEND="crypt? ( >=x11-plugins/gaim-encryption-2.29 )"
+
+print_gaim_warning() {
+ ewarn
+ ewarn "If you are merging ${P} from an earlier version, you will need"
+ ewarn "to re-merge any plugins like gaim-encryption or gaim-snpp."
+ ewarn
+ ewarn "If you experience problems with gaim, file them as bugs with"
+ ewarn "Gentoo's bugzilla, http://bugs.gentoo.org. DO NOT report them"
+ ewarn "as bugs with gaim's sourceforge tracker, and by all means DO NOT"
+ ewarn "seek help in #gaim."
+ ewarn
+ ewarn "Be sure to USE=\"debug\" and include a backtrace for any seg"
+ ewarn "faults, see http://gaim.sourceforge.net/gdb.php for details on"
+ ewarn "backtraces."
+ ewarn
+ ewarn "Please read the gaim FAQ at http://gaim.sourceforge.net/faq.php"
+ ewarn
+ einfo
+ einfo "Note that we are now filtering all unstable flags in C[XX]FLAGS."
+ einfo
+ for TICKER in 1 2 3 4 5; do
+ # Double beep here.
+ echo -ne "\a" ; sleep 0.1 &>/dev/null ; sleep 0,1 &>/dev/null
+ echo -ne "\a" ; sleep 1
+ done
+ sleep 3
+}
+
+pkg_setup() {
+ print_gaim_warning
+}
+
+src_unpack() {
+ unpack ${A}
+ cd ${S}
+ use cjk && epatch ${FILESDIR}/gaim-0.76-xinput.patch
+ epatch ${FILESDIR}/syslog_fd_leak.diff
+ epatch ${FILESDIR}/gaim-0.82cvs-gtkprefs-fix.patch
+ cd src/protocols/msn/
+ epatch ${FILESDIR}/gaim-0.81_msn-slp.diff
+}
+
+src_compile() {
+ # Stabilize things, for your own good
+ strip-flags
+ replace-flags -O? -O2
+
+ # -msse2 doesn't play nice on gcc 3.2
+ [ "`gcc-version`" == "3.2" ] && filter-flags -msse2
+
+ local myconf
+ use perl || myconf="${myconf} --disable-perl"
+ use spell || myconf="${myconf} --disable-gtkspell"
+ use nls || myconf="${myconf} --disable-nls"
+ use nas && myconf="${myconf} --enable-nas" || myconf="${myconf} --disable-nas"
+ use evo || myconf="${myconf} --disable-gevolution"
+ use krb4 && myconf="${myconf} --with-krb4=/usr"
+
+ if use gnutls ; then
+ myconf="${myconf} --with-gnutls-includes=/usr/include/gnutls"
+ myconf="${myconf} --with-gnutls-libs=/usr/lib"
+ else
+ myconf="${myconf} --enable-gnutls=no"
+ fi
+
+ if use silc ; then
+ myconf="${myconf} --with-silc-includes=/usr/include/silc-toolkit"
+ myconf="${myconf} --with-silc-libs=/usr/lib"
+ fi
+
+ myconf="${myconf} --with-nspr-includes=/usr/include/nspr"
+ myconf="${myconf} --with-nss-includes=/usr/include/nss"
+ myconf="${myconf} --with-nspr-libs=/usr/lib"
+ myconf="${myconf} --with-nss-libs=/usr/lib"
+
+ econf ${myconf} || die "Configuration failed"
+
+ emake || MAKEOPTS="${MAKEOPTS} -j1" emake || die "Make failed"
+}
+
+src_install() {
+ make install DESTDIR=${D} || die "Install failed"
+ dodoc ABOUT-NLS AUTHORS COPYING HACKING INSTALL NEWS PROGRAMMING_NOTES README ChangeLog VERSION
+}
+
+pkg_postinst() {
+ print_gaim_warning
+}