diff options
author | 2004-08-17 01:32:04 +0000 | |
---|---|---|
committer | 2004-08-17 01:32:04 +0000 | |
commit | a299c8feb5a04d9e91cbc75018acfc0f47458dea (patch) | |
tree | f043f2341ddd7a96d4c1941f1983d6d9ba529a02 /net-im | |
parent | clean older versions (diff) | |
download | historical-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/ChangeLog | 9 | ||||
-rw-r--r-- | net-im/gaim/Manifest | 16 | ||||
-rw-r--r-- | net-im/gaim/files/digest-gaim-0.81-r2 | 1 | ||||
-rw-r--r-- | net-im/gaim/files/gaim-0.82cvs-gtkprefs-fix.patch | 27 | ||||
-rw-r--r-- | net-im/gaim/files/syslog_fd_leak.diff | 263 | ||||
-rw-r--r-- | net-im/gaim/gaim-0.81-r2.ebuild | 121 |
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 +} |