Screenshot instructions:
Windows
Mac
Red Hat Linux
Ubuntu
Click URL instructions:
Right-click on ad, choose "Copy Link", then paste here →
(This may not be possible with some types of ads)
You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(106) |
Oct
(334) |
Nov
(246) |
Dec
(145) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(42) |
Feb
(53) |
Mar
(232) |
Apr
(109) |
May
(137) |
Jun
(63) |
Jul
(26) |
Aug
(263) |
Sep
(193) |
Oct
(507) |
Nov
(440) |
Dec
(241) |
2003 |
Jan
(567) |
Feb
(195) |
Mar
(504) |
Apr
(481) |
May
(524) |
Jun
(522) |
Jul
(594) |
Aug
(502) |
Sep
(643) |
Oct
(508) |
Nov
(430) |
Dec
(377) |
2004 |
Jan
(361) |
Feb
(251) |
Mar
(219) |
Apr
(499) |
May
(461) |
Jun
(419) |
Jul
(314) |
Aug
(519) |
Sep
(416) |
Oct
(247) |
Nov
(305) |
Dec
(382) |
2005 |
Jan
(267) |
Feb
(282) |
Mar
(327) |
Apr
(338) |
May
(189) |
Jun
(400) |
Jul
(462) |
Aug
(530) |
Sep
(316) |
Oct
(523) |
Nov
(481) |
Dec
(650) |
2006 |
Jan
(536) |
Feb
(361) |
Mar
(287) |
Apr
(146) |
May
(101) |
Jun
(169) |
Jul
(221) |
Aug
(498) |
Sep
(300) |
Oct
(236) |
Nov
(209) |
Dec
(205) |
2007 |
Jan
(30) |
Feb
(23) |
Mar
(26) |
Apr
(15) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
|
|
|
|
1
(1) |
2
|
3
(1) |
4
|
5
(3) |
6
(11) |
7
(1) |
8
(10) |
9
|
10
(12) |
11
(11) |
12
(3) |
13
|
14
|
15
(1) |
16
(6) |
17
(3) |
18
(4) |
19
(15) |
20
(5) |
21
(6) |
22
(7) |
23
(11) |
24
(12) |
25
(4) |
26
(16) |
27
(7) |
28
(10) |
29
(4) |
30
(5) |
|
From: <sadrul@us...> - 2006-06-26 19:55:06
|
Revision: 16354 Author: sadrul Date: 2006-06-26 12:54:53 -0700 (Mon, 26 Jun 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16354&view=rev Log Message: ----------- Paco-Paco spake unto me the following wisdom: sadrul: your console UI looks for gaim/*.h, but uses pkg-config --cflags gaim, which returns include/gaim I have fixed it by changing the #include-s. Modified Paths: -------------- trunk/console/gntblist.c Modified: trunk/console/gntblist.c =================================================================== --- trunk/console/gntblist.c 2006-06-26 19:38:29 UTC (rev 16353) +++ trunk/console/gntblist.c 2006-06-26 19:54:53 UTC (rev 16354) @@ -1,8 +1,8 @@ -#include <gaim/account.h> -#include <gaim/blist.h> +#include <account.h> +#include <blist.h> +#include <server.h> #include <signal.h> -#include <gaim/util.h> -#include <gaim/server.h> +#include <util.h> #include "gntgaim.h" #include "gntbox.h" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lschiere@us...> - 2006-06-26 19:47:54
|
Revision: 16353 Author: lschiere Date: 2006-06-26 12:38:29 -0700 (Mon, 26 Jun 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16353&view=rev Log Message: ----------- (15:33:14) SimGuy: LSchiere2: also, I noticed the FAQ links to 2.0.0beta3 to the beta1 files (15:35:49) LSchiere2: is this in faq.txt or faq2.txt? (15:36:08) LSchiere2: (faq.php and faq2.php respectively) (15:36:29) SimGuy: I think it's actually in faq.php (15:36:44) SimGuy: it's in the reference to faq2.php on faq.php Modified Paths: -------------- web/htdocs/faq.php Modified: web/htdocs/faq.php =================================================================== --- web/htdocs/faq.php 2006-06-26 17:55:17 UTC (rev 16352) +++ web/htdocs/faq.php 2006-06-26 19:38:29 UTC (rev 16353) @@ -7,7 +7,7 @@ <h1>Frequently Asked Questions</h1> <p><i>Frequently asked questions specific to Windows have their own <a href="/win32">FAQ</a>.</i></p> -<p><i>For those users testing <a href="http://sourceforge.net/project/showfiles.php?group_id=235&package_id=253&release_id=378940">2.0.0beta3</a>, we have an updated <a href="faq2.php">FAQ</a>.</i></p> +<p><i>For those users testing <a href="http://sourceforge.net/project/showfiles.php?group_id=235&package_id=253&release_id=405479">2.0.0beta3</a>, we have an updated <a href="faq2.php">FAQ</a>.</i></p> <? /* The Q&A begins here */ $faq = file("./faq.txt"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <eblanton@us...> - 2006-06-26 17:55:21
|
Revision: 16352 Author: eblanton Date: 2006-06-26 10:55:17 -0700 (Mon, 26 Jun 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16352&view=rev Log Message: ----------- ------------------------------------------------------------------------ r16351 | eblanton | 2006-06-26 13:52:26 -0400 (Mon, 26 Jun 2006) | 1 line Focus newly created IRC tabs created with /join and /query ------------------------------------------------------------------------ Modified Paths: -------------- branches/v2_0_0/src/protocols/irc/cmds.c branches/v2_0_0/src/protocols/irc/msgs.c Modified: branches/v2_0_0/src/protocols/irc/cmds.c =================================================================== --- branches/v2_0_0/src/protocols/irc/cmds.c 2006-06-26 17:52:26 UTC (rev 16351) +++ branches/v2_0_0/src/protocols/irc/cmds.c 2006-06-26 17:55:17 UTC (rev 16352) @@ -402,6 +402,7 @@ return 0; convo = gaim_conversation_new(GAIM_CONV_TYPE_IM, irc->account, args[0]); + gaim_conversation_present(convo); if (args[1]) { gc = gaim_account_get_connection(irc->account); Modified: branches/v2_0_0/src/protocols/irc/msgs.c =================================================================== --- branches/v2_0_0/src/protocols/irc/msgs.c 2006-06-26 17:52:26 UTC (rev 16351) +++ branches/v2_0_0/src/protocols/irc/msgs.c 2006-06-26 17:55:17 UTC (rev 16352) @@ -675,6 +675,14 @@ /* We are joining a channel for the first time */ serv_got_joined_chat(gc, id++, args[0]); g_free(nick); + convo = gaim_find_conversation_with_account(GAIM_CONV_TYPE_CHAT, + args[0], + irc->account); + if (convo == NULL) { + gaim_debug_error("irc", "tried to join %s but couldn't\n", args[0]); + return; + } + gaim_conversation_present(convo); return; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <eblanton@us...> - 2006-06-26 17:52:31
|
Revision: 16351 Author: eblanton Date: 2006-06-26 10:52:26 -0700 (Mon, 26 Jun 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16351&view=rev Log Message: ----------- Focus newly created IRC tabs created with /join and /query Modified Paths: -------------- trunk/src/protocols/irc/cmds.c trunk/src/protocols/irc/msgs.c Modified: trunk/src/protocols/irc/cmds.c =================================================================== --- trunk/src/protocols/irc/cmds.c 2006-06-26 09:04:41 UTC (rev 16350) +++ trunk/src/protocols/irc/cmds.c 2006-06-26 17:52:26 UTC (rev 16351) @@ -402,6 +402,7 @@ return 0; convo = gaim_conversation_new(GAIM_CONV_TYPE_IM, irc->account, args[0]); + gaim_conversation_present(convo); if (args[1]) { gc = gaim_account_get_connection(irc->account); Modified: trunk/src/protocols/irc/msgs.c =================================================================== --- trunk/src/protocols/irc/msgs.c 2006-06-26 09:04:41 UTC (rev 16350) +++ trunk/src/protocols/irc/msgs.c 2006-06-26 17:52:26 UTC (rev 16351) @@ -675,6 +675,14 @@ /* We are joining a channel for the first time */ serv_got_joined_chat(gc, id++, args[0]); g_free(nick); + convo = gaim_find_conversation_with_account(GAIM_CONV_TYPE_CHAT, + args[0], + irc->account); + if (convo == NULL) { + gaim_debug_error("irc", "tried to join %s but couldn't\n", args[0]); + return; + } + gaim_conversation_present(convo); return; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <thekingant@us...> - 2006-06-26 09:04:44
|
Revision: 16350 Author: thekingant Date: 2006-06-26 02:04:41 -0700 (Mon, 26 Jun 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16350&view=rev Log Message: ----------- Backport SVN revision 16349 from HEAD to v2_0_0 Original commit message: Three changes: 1. When you try to sign on with an oscar screen name that is not valid ("123abc" for example), the PRPL will set gc->wants_to_die to TRUE so that the account will not be auto-reconnected. 2. When we get an AIM userinfo packet about someone in our buddy list, if the person has some kind of screen name formatting set ("Mark Doliner" instead of "markdoliner") then we set the buddies server_nick to that formatted name. 3. Add a "Get AIM Info" to the context menu for ICQ buddies who are in the buddy list of an ICQ user. ViewCVS Links: ------------- http://svn.sourceforge.net/gaim/?rev=16349&view=rev Modified Paths: -------------- branches/v2_0_0/src/protocols/oscar/oscar.c Modified: branches/v2_0_0/src/protocols/oscar/oscar.c =================================================================== --- branches/v2_0_0/src/protocols/oscar/oscar.c 2006-06-26 09:03:54 UTC (rev 16349) +++ branches/v2_0_0/src/protocols/oscar/oscar.c 2006-06-26 09:04:41 UTC (rev 16350) @@ -1225,6 +1225,7 @@ if (!aim_snvalid(gaim_account_get_username(account))) { gchar *buf; buf = g_strdup_printf(_("Unable to login: Could not sign on as %s because the screen name is invalid. Screen names must either start with a letter and contain only letters, numbers and spaces, or contain only numbers."), gaim_account_get_username(account)); + gc->wants_to_die = TRUE; gaim_connection_error(gc, buf); g_free(buf); } @@ -2914,6 +2915,11 @@ if (b == NULL) return 1; + if (strcmp(gaim_buddy_get_name(b), userinfo->sn)) + serv_got_alias(gc, gaim_buddy_get_name(b), userinfo->sn); + else + serv_got_alias(gc, gaim_buddy_get_name(b), NULL); + presence = gaim_buddy_get_presence(b); status = gaim_presence_get_active_status(presence); @@ -4226,6 +4232,11 @@ return ret; } +/* + * As of 26 June 2006, ICQ users can request AIM info from + * everyone, and can request ICQ info from ICQ users, and + * AIM users can only request AIM info. + */ static void oscar_get_info(GaimConnection *gc, const char *name) { OscarData *od = (OscarData *)gc->proto_data; @@ -5759,6 +5770,20 @@ g_free(buf); } +static void +oscar_get_aim_info_cb(GaimBlistNode *node, gpointer ignore) +{ + GaimBuddy *buddy; + GaimConnection *gc; + + g_return_if_fail(GAIM_BLIST_NODE_IS_BUDDY(node)); + + buddy = (GaimBuddy *)node; + gc = gaim_account_get_connection(buddy->account); + + aim_locate_getinfoshort(gc->proto_data, gaim_buddy_get_name(buddy), 0x00000003); +} + static GList *oscar_buddy_menu(GaimBuddy *buddy) { GaimConnection *gc; @@ -5772,6 +5797,14 @@ userinfo = aim_locate_finduserinfo(od, buddy->name); m = NULL; + if (od->icq && aim_sn_is_icq(gaim_buddy_get_name(buddy))) + { + act = gaim_menu_action_new(_("Get AIM Info"), + GAIM_CALLBACK(oscar_get_aim_info_cb), + NULL, NULL); + m = g_list_append(m, act); + } + act = gaim_menu_action_new(_("Edit Buddy Comment"), GAIM_CALLBACK(oscar_buddycb_edit_comment), NULL, NULL); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <thekingant@us...> - 2006-06-26 09:03:58
|
Revision: 16349 Author: thekingant Date: 2006-06-26 02:03:54 -0700 (Mon, 26 Jun 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16349&view=rev Log Message: ----------- Three changes: 1. When you try to sign on with an oscar screen name that is not valid ("123abc" for example), the PRPL will set gc->wants_to_die to TRUE so that the account will not be auto-reconnected. 2. When we get an AIM userinfo packet about someone in our buddy list, if the person has some kind of screen name formatting set ("Mark Doliner" instead of "markdoliner") then we set the buddies server_nick to that formatted name. 3. Add a "Get AIM Info" to the context menu for ICQ buddies who are in the buddy list of an ICQ user. Modified Paths: -------------- trunk/src/protocols/oscar/oscar.c Modified: trunk/src/protocols/oscar/oscar.c =================================================================== --- trunk/src/protocols/oscar/oscar.c 2006-06-26 08:07:37 UTC (rev 16348) +++ trunk/src/protocols/oscar/oscar.c 2006-06-26 09:03:54 UTC (rev 16349) @@ -1225,6 +1225,7 @@ if (!aim_snvalid(gaim_account_get_username(account))) { gchar *buf; buf = g_strdup_printf(_("Unable to login: Could not sign on as %s because the screen name is invalid. Screen names must either start with a letter and contain only letters, numbers and spaces, or contain only numbers."), gaim_account_get_username(account)); + gc->wants_to_die = TRUE; gaim_connection_error(gc, buf); g_free(buf); } @@ -2915,6 +2916,11 @@ if (b == NULL) return 1; + if (strcmp(gaim_buddy_get_name(b), userinfo->sn)) + serv_got_alias(gc, gaim_buddy_get_name(b), userinfo->sn); + else + serv_got_alias(gc, gaim_buddy_get_name(b), NULL); + presence = gaim_buddy_get_presence(b); status = gaim_presence_get_active_status(presence); @@ -4227,6 +4233,11 @@ return ret; } +/* + * As of 26 June 2006, ICQ users can request AIM info from + * everyone, and can request ICQ info from ICQ users, and + * AIM users can only request AIM info. + */ static void oscar_get_info(GaimConnection *gc, const char *name) { OscarData *od = (OscarData *)gc->proto_data; @@ -5760,6 +5771,20 @@ g_free(buf); } +static void +oscar_get_aim_info_cb(GaimBlistNode *node, gpointer ignore) +{ + GaimBuddy *buddy; + GaimConnection *gc; + + g_return_if_fail(GAIM_BLIST_NODE_IS_BUDDY(node)); + + buddy = (GaimBuddy *)node; + gc = gaim_account_get_connection(buddy->account); + + aim_locate_getinfoshort(gc->proto_data, gaim_buddy_get_name(buddy), 0x00000003); +} + static GList *oscar_buddy_menu(GaimBuddy *buddy) { GaimConnection *gc; @@ -5773,6 +5798,14 @@ userinfo = aim_locate_finduserinfo(od, buddy->name); m = NULL; + if (od->icq && aim_sn_is_icq(gaim_buddy_get_name(buddy))) + { + act = gaim_menu_action_new(_("Get AIM Info"), + GAIM_CALLBACK(oscar_get_aim_info_cb), + NULL, NULL); + m = g_list_append(m, act); + } + act = gaim_menu_action_new(_("Edit Buddy Comment"), GAIM_CALLBACK(oscar_buddycb_edit_comment), NULL, NULL); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <thekingant@us...> - 2006-06-26 08:07:40
|
Revision: 16348 Author: thekingant Date: 2006-06-26 01:07:37 -0700 (Mon, 26 Jun 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16348&view=rev Log Message: ----------- Minor change to the ignore property on the qq directory Property Changed: ---------------- trunk/src/protocols/qq/ Property changes on: trunk/src/protocols/qq ___________________________________________________________________ Name: svn:ignore - Makefile.in Makefile .deps/ .libs/ + Makefile.in Makefile .deps .libs This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <thekingant@us...> - 2006-06-26 04:24:27
|
Revision: 16347 Author: thekingant Date: 2006-06-25 21:24:24 -0700 (Sun, 25 Jun 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16347&view=rev Log Message: ----------- I think I figured out the svn:ignore property. I'm so money! Property Changed: ---------------- trunk/src/protocols/qq/ Property changes on: trunk/src/protocols/qq ___________________________________________________________________ Name: svn:ignore - .deps/ Makefile + Makefile.in Makefile .deps/ .libs/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <thekingant@us...> - 2006-06-26 04:21:06
|
Revision: 16346 Author: thekingant Date: 2006-06-25 21:21:04 -0700 (Sun, 25 Jun 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16346&view=rev Log Message: ----------- Makefile.in should not be in the repository, and Makefile and .deps should be ignored (I'm not sure I did this right... we'll see :-) ) Removed Paths: ------------- trunk/src/protocols/qq/Makefile.in Property Changed: ---------------- trunk/src/protocols/qq/ Property changes on: trunk/src/protocols/qq ___________________________________________________________________ Name: svn:ignore + .deps/ Makefile Deleted: trunk/src/protocols/qq/Makefile.in =================================================================== --- trunk/src/protocols/qq/Makefile.in 2006-06-26 03:57:19 UTC (rev 16345) +++ trunk/src/protocols/qq/Makefile.in 2006-06-26 04:21:04 UTC (rev 16346) @@ -1,576 +0,0 @@ -# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am - -# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - - -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include - -DESTDIR = - -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ - -top_builddir = ../../.. - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -transform = @program_transform_name@ - -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_alias = @build_alias@ -build_triplet = @build@ -host_alias = @host_alias@ -host_triplet = @host@ -target_alias = @target_alias@ -target_triplet = @target@ -ALL_LINGUAS = @ALL_LINGUAS@ -AO_CFLAGS = @AO_CFLAGS@ -AO_LIBS = @AO_LIBS@ -AR = @AR@ -AS = @AS@ -AUDIOFILE_CFLAGS = @AUDIOFILE_CFLAGS@ -AUDIOFILE_CONFIG = @AUDIOFILE_CONFIG@ -AUDIOFILE_LIBS = @AUDIOFILE_LIBS@ -BINRELOC_CFLAGS = @BINRELOC_CFLAGS@ -BINRELOC_LIBS = @BINRELOC_LIBS@ -BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ -CATALOGS = @CATALOGS@ -CATOBJEXT = @CATOBJEXT@ -CC = @CC@ -CFLAGS = @CFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -DATADIRNAME = @DATADIRNAME@ -DBUS_CFLAGS = @DBUS_CFLAGS@ -DBUS_LIBS = @DBUS_LIBS@ -DBUS_SERVICES_DIR = @DBUS_SERVICES_DIR@ -DEBUG_CFLAGS = @DEBUG_CFLAGS@ -DLLTOOL = @DLLTOOL@ -DOT = @DOT@ -DOXYGEN = @DOXYGEN@ -DYNALOADER_A = @DYNALOADER_A@ -DYNAMIC_PRPLS = @DYNAMIC_PRPLS@ -ECHO = @ECHO@ -EGREP = @EGREP@ -EVOLUTION_ADDRESSBOOK_CFLAGS = @EVOLUTION_ADDRESSBOOK_CFLAGS@ -EVOLUTION_ADDRESSBOOK_LIBS = @EVOLUTION_ADDRESSBOOK_LIBS@ -EXEEXT = @EXEEXT@ -F77 = @F77@ -GADU_CFLAGS = @GADU_CFLAGS@ -GADU_LIBS = @GADU_LIBS@ -GCJ = @GCJ@ -GCJFLAGS = @GCJFLAGS@ -GENCAT = @GENCAT@ -GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ -GLIBC2 = @GLIBC2@ -GLIBC21 = @GLIBC21@ -GLIB_CFLAGS = @GLIB_CFLAGS@ -GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ -GLIB_LIBS = @GLIB_LIBS@ -GLIB_MKENUMS = @GLIB_MKENUMS@ -GMOFILES = @GMOFILES@ -GMSGFMT = @GMSGFMT@ -GNUTLS_CFLAGS = @GNUTLS_CFLAGS@ -GNUTLS_LIBS = @GNUTLS_LIBS@ -GOBJECT_QUERY = @GOBJECT_QUERY@ -GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@ -GSTREAMER_LIBS = @GSTREAMER_LIBS@ -GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ -GTKSPELL_LIBS = @GTKSPELL_LIBS@ -GTK_CFLAGS = @GTK_CFLAGS@ -GTK_LIBS = @GTK_LIBS@ -HAVE_ASPRINTF = @HAVE_ASPRINTF@ -HAVE_LIB = @HAVE_LIB@ -HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ -HAVE_SNPRINTF = @HAVE_SNPRINTF@ -HAVE_WPRINTF = @HAVE_WPRINTF@ -HOWL_CFLAGS = @HOWL_CFLAGS@ -HOWL_LIBS = @HOWL_LIBS@ -INSTOBJEXT = @INSTOBJEXT@ -INTLBISON = @INTLBISON@ -INTLLIBS = @INTLLIBS@ -INTLOBJS = @INTLOBJS@ -INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@ -INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@ -INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@ -INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ -INTLTOOL_ICONV = @INTLTOOL_ICONV@ -INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@ -INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@ -INTLTOOL_MERGE = @INTLTOOL_MERGE@ -INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@ -INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@ -INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@ -INTLTOOL_PERL = @INTLTOOL_PERL@ -INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@ -INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@ -INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@ -INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@ -INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@ -INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@ -INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@ -INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@ -INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@ -INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ -INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@ -INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@ -INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@ -INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@ -INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ -INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ -KRB4_CFLAGS = @KRB4_CFLAGS@ -KRB4_LDFLAGS = @KRB4_LDFLAGS@ -KRB4_LIBS = @KRB4_LIBS@ -LDADD = @LDADD@ -LIB = @LIB@ -LIBICONV = @LIBICONV@ -LIBINTL = @LIBINTL@ -LIBPERL_A = @LIBPERL_A@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIBXML_CFLAGS = @LIBXML_CFLAGS@ -LIBXML_LIBS = @LIBXML_LIBS@ -LN_S = @LN_S@ -LTLIB = @LTLIB@ -LTLIBICONV = @LTLIBICONV@ -LTLIBINTL = @LTLIBINTL@ -MAKEINFO = @MAKEINFO@ -MEANWHILE_CFLAGS = @MEANWHILE_CFLAGS@ -MEANWHILE_LIBS = @MEANWHILE_LIBS@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -MONO_CFLAGS = @MONO_CFLAGS@ -MONO_LIBS = @MONO_LIBS@ -NSS_CFLAGS = @NSS_CFLAGS@ -NSS_LIBS = @NSS_LIBS@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -PACKAGE = @PACKAGE@ -PERL = @PERL@ -PERL_CFLAGS = @PERL_CFLAGS@ -PERL_LIBS = @PERL_LIBS@ -PERL_MM_PARAMS = @PERL_MM_PARAMS@ -PKG_CONFIG = @PKG_CONFIG@ -POFILES = @POFILES@ -POSUB = @POSUB@ -PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ -PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ -PYTHON = @PYTHON@ -RANLIB = @RANLIB@ -RC = @RC@ -SASL_LIBS = @SASL_LIBS@ -SILC_CFLAGS = @SILC_CFLAGS@ -SILC_LIBS = @SILC_LIBS@ -SM_LIBS = @SM_LIBS@ -STARTUP_NOTIFICATION_CFLAGS = @STARTUP_NOTIFICATION_CFLAGS@ -STARTUP_NOTIFICATION_LIBS = @STARTUP_NOTIFICATION_LIBS@ -STATIC_LINK_LIBS = @STATIC_LINK_LIBS@ -STATIC_PRPLS = @STATIC_PRPLS@ -STRIP = @STRIP@ -TCL_CFLAGS = @TCL_CFLAGS@ -TCL_LIBS = @TCL_LIBS@ -TK_LIBS = @TK_LIBS@ -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ -XSS_LIBS = @XSS_LIBS@ -ZEPHYR_CFLAGS = @ZEPHYR_CFLAGS@ -ZEPHYR_LDFLAGS = @ZEPHYR_LDFLAGS@ -ZEPHYR_LIBS = @ZEPHYR_LIBS@ -enable_dbus = @enable_dbus@ -enable_dot = @enable_dot@ -enable_doxygen = @enable_doxygen@ -gaimpath = @gaimpath@ -perlpath = @perlpath@ -sedpath = @sedpath@ - -EXTRA_DIST = Makefile.mingw - - -pkgdir = $(libdir)/gaim - -QQSOURCES = utils.c utils.h packet_parse.c packet_parse.h buddy_info.c buddy_info.h buddy_list.c buddy_list.h buddy_opt.c buddy_opt.h buddy_status.c buddy_status.h qq.c char_conv.c char_conv.h crypt.c crypt.h group_admindlg.c group_admindlg.h group.c group_conv.c group_conv.h group_find.c group_find.h group_free.c group_free.h group.h group_hash.c group_hash.h group_im.c group_im.h group_info.c group_info.h group_join.c group_join.h group_misc.c group_misc.h group_network.c group_network.h group_opt.c group_opt.h group_search.c group_search.h qq.h header_info.c header_info.h im.c im.h infodlg.c infodlg.h ip_location.c ip_location.h keep_alive.c keep_alive.h login_logout.c login_logout.h qq_proxy.c qq_proxy.h recv_core.c recv_core.h send_core.c send_core.h sendqueue.c sendqueue.h show.c show.h sys_msg.c sys_msg.h udp_proxy_s5.c udp_proxy_s5.h send_file.c send_file.h file_trans.c file_trans.h - - -AM_CFLAGS = $(st) - -libqq_la_LDFLAGS = -module -avoid-version - -@...@st = -DGAIM_STATIC_PRPL -@...@st = -@...@noinst_LIBRARIES = libqq.a -@...@libqq_a_SOURCES = $(QQSOURCES) -@...@libqq_a_CFLAGS = $(AM_CFLAGS) -@...@pkg_LTLIBRARIES = libqq.la -@...@libqq_la_SOURCES = $(QQSOURCES) - -AM_CPPFLAGS = -I$(top_srcdir)/src -DDATADIR=\"${datadir}\" -DVERSION=\"$(VERSION)\" $(DEBUG_CFLAGS) $(GTK_CFLAGS) $(GLIB_CFLAGS) $(GAIM_CFLAGS) - -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_HEADER = ../../../config.h -CONFIG_CLEAN_FILES = -LIBRARIES = $(noinst_LIBRARIES) - - -DEFS = @DEFS@ -I. -I$(srcdir) -I../../.. -CPPFLAGS = @CPPFLAGS@ -LDFLAGS = @LDFLAGS@ -X_CFLAGS = @X_CFLAGS@ -X_LIBS = @X_LIBS@ -X_EXTRA_LIBS = @X_EXTRA_LIBS@ -X_PRE_LIBS = @X_PRE_LIBS@ -libqq_a_LIBADD = -@...@libqq_a_OBJECTS = utils.$(OBJEXT) \ -@...@packet_parse.$(OBJEXT) buddy_info.$(OBJEXT) \ -@...@buddy_list.$(OBJEXT) buddy_opt.$(OBJEXT) \ -@...@buddy_status.$(OBJEXT) qq.$(OBJEXT) char_conv.$(OBJEXT) \ -@...@crypt.$(OBJEXT) group_admindlg.$(OBJEXT) \ -@...@group.$(OBJEXT) group_conv.$(OBJEXT) \ -@...@group_find.$(OBJEXT) group_free.$(OBJEXT) \ -@...@group_hash.$(OBJEXT) group_im.$(OBJEXT) \ -@...@group_info.$(OBJEXT) group_join.$(OBJEXT) \ -@...@group_misc.$(OBJEXT) group_network.$(OBJEXT) \ -@...@group_opt.$(OBJEXT) group_search.$(OBJEXT) \ -@...@header_info.$(OBJEXT) im.$(OBJEXT) infodlg.$(OBJEXT) \ -@...@ip_location.$(OBJEXT) keep_alive.$(OBJEXT) \ -@...@login_logout.$(OBJEXT) qq_proxy.$(OBJEXT) \ -@...@recv_core.$(OBJEXT) send_core.$(OBJEXT) \ -@...@sendqueue.$(OBJEXT) show.$(OBJEXT) sys_msg.$(OBJEXT) \ -@...@udp_proxy_s5.$(OBJEXT) send_file.$(OBJEXT) \ -@...@file_trans.$(OBJEXT) -LTLIBRARIES = $(pkg_LTLIBRARIES) - -libqq_la_LIBADD = -@...@libqq_la_OBJECTS = utils.lo packet_parse.lo \ -@...@buddy_info.lo buddy_list.lo buddy_opt.lo \ -@...@buddy_status.lo qq.lo char_conv.lo crypt.lo \ -@...@group_admindlg.lo group.lo group_conv.lo group_find.lo \ -@...@group_free.lo group_hash.lo group_im.lo group_info.lo \ -@...@group_join.lo group_misc.lo group_network.lo \ -@...@group_opt.lo group_search.lo header_info.lo im.lo \ -@...@infodlg.lo ip_location.lo keep_alive.lo \ -@...@login_logout.lo qq_proxy.lo recv_core.lo send_core.lo \ -@...@sendqueue.lo show.lo sys_msg.lo udp_proxy_s5.lo \ -@...@send_file.lo file_trans.lo -COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ -DIST_COMMON = Makefile.am Makefile.in - - -DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) - -TAR = tar -GZIP_ENV = --best -DEP_FILES = .deps/buddy_info.P .deps/buddy_list.P .deps/buddy_opt.P \ -.deps/buddy_status.P .deps/char_conv.P .deps/crypt.P .deps/file_trans.P \ -.deps/group.P .deps/group_admindlg.P .deps/group_conv.P \ -.deps/group_find.P .deps/group_free.P .deps/group_hash.P \ -.deps/group_im.P .deps/group_info.P .deps/group_join.P \ -.deps/group_misc.P .deps/group_network.P .deps/group_opt.P \ -.deps/group_search.P .deps/header_info.P .deps/im.P .deps/infodlg.P \ -.deps/ip_location.P .deps/keep_alive.P .deps/login_logout.P \ -.deps/packet_parse.P .deps/qq.P .deps/qq_proxy.P .deps/recv_core.P \ -.deps/send_core.P .deps/send_file.P .deps/sendqueue.P .deps/show.P \ -.deps/sys_msg.P .deps/udp_proxy_s5.P .deps/utils.P -SOURCES = $(libqq_a_SOURCES) $(libqq_la_SOURCES) -OBJECTS = $(libqq_a_OBJECTS) $(libqq_la_OBJECTS) - -all: all-redirect -.SUFFIXES: -.SUFFIXES: .S .c .lo .o .obj .s -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) - cd $(top_srcdir) && $(AUTOMAKE) --gnu src/protocols/qq/Makefile - -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) - cd $(top_builddir) \ - && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status - - -mostlyclean-noinstLIBRARIES: - -clean-noinstLIBRARIES: - -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) - -distclean-noinstLIBRARIES: - -maintainer-clean-noinstLIBRARIES: - -# FIXME: We should only use cygpath when building on Windows, -# and only if it is available. -.c.obj: - $(COMPILE) -c `cygpath -w $<` - -.s.o: - $(COMPILE) -c $< - -.S.o: - $(COMPILE) -c $< - -mostlyclean-compile: - -rm -f *.o core *.core - -rm -f *.$(OBJEXT) - -clean-compile: - -distclean-compile: - -rm -f *.tab.c - -maintainer-clean-compile: - -.s.lo: - $(LIBTOOL) --mode=compile $(COMPILE) -c $< - -.S.lo: - $(LIBTOOL) --mode=compile $(COMPILE) -c $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -distclean-libtool: - -maintainer-clean-libtool: - -libqq.a: $(libqq_a_OBJECTS) $(libqq_a_DEPENDENCIES) - -rm -f libqq.a - $(AR) cru libqq.a $(libqq_a_OBJECTS) $(libqq_a_LIBADD) - $(RANLIB) libqq.a - -mostlyclean-pkgLTLIBRARIES: - -clean-pkgLTLIBRARIES: - -test -z "$(pkg_LTLIBRARIES)" || rm -f $(pkg_LTLIBRARIES) - -distclean-pkgLTLIBRARIES: - -maintainer-clean-pkgLTLIBRARIES: - -install-pkgLTLIBRARIES: $(pkg_LTLIBRARIES) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(pkgdir) - @list='$(pkg_LTLIBRARIES)'; for p in $$list; do \ - if test -f $$p; then \ - echo "$(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(pkgdir)/$$p"; \ - $(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(pkgdir)/$$p; \ - else :; fi; \ - done - -uninstall-pkgLTLIBRARIES: - @$(NORMAL_UNINSTALL) - list='$(pkg_LTLIBRARIES)'; for p in $$list; do \ - $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(pkgdir)/$$p; \ - done - -libqq.la: $(libqq_la_OBJECTS) $(libqq_la_DEPENDENCIES) - $(LINK) -rpath $(pkgdir) $(libqq_la_LDFLAGS) $(libqq_la_OBJECTS) $(libqq_la_LIBADD) $(LIBS) - -tags: TAGS - -ID: $(HEADERS) $(SOURCES) $(LISP) - list='$(SOURCES) $(HEADERS)'; \ - unique=`for i in $$list; do echo $$i; done | \ - awk ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - here=`pwd` && cd $(srcdir) \ - && mkid -f$$here/ID $$unique $(LISP) - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS)'; \ - unique=`for i in $$list; do echo $$i; done | \ - awk ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ - || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags $$unique $(LISP)) - -mostlyclean-tags: - -clean-tags: - -distclean-tags: - -rm -f TAGS ID - -maintainer-clean-tags: - -distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) - -subdir = src/protocols/qq - -distdir: $(DISTFILES) - here=`cd $(top_builddir) && pwd`; \ - top_distdir=`cd $(top_distdir) && pwd`; \ - distdir=`cd $(distdir) && pwd`; \ - cd $(top_srcdir) \ - && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu src/protocols/qq/Makefile - @for file in $(DISTFILES); do \ - d=$(srcdir); \ - if test -d $$d/$$file; then \ - cp -pr $$d/$$file $(distdir)/$$file; \ - else \ - test -f $(distdir)/$$file \ - || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ - || cp -p $$d/$$file $(distdir)/$$file || :; \ - fi; \ - done - -DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :) - --include $(DEP_FILES) - -mostlyclean-depend: - -clean-depend: - -distclean-depend: - -rm -rf .deps - -maintainer-clean-depend: - -%.o: %.c - @echo '$(COMPILE) -c $<'; \ - $(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $< - @-cp .deps/$(*F).pp .deps/$(*F).P; \ - tr ' ' '\012' < .deps/$(*F).pp \ - | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ - >> .deps/$(*F).P; \ - rm .deps/$(*F).pp - -%.lo: %.c - @echo '$(LTCOMPILE) -c $<'; \ - $(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $< - @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \ - < .deps/$(*F).pp > .deps/$(*F).P; \ - tr ' ' '\012' < .deps/$(*F).pp \ - | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ - >> .deps/$(*F).P; \ - rm -f .deps/$(*F).pp -info-am: -info: info-am -dvi-am: -dvi: dvi-am -check-am: all-am -check: check-am -installcheck-am: -installcheck: installcheck-am -install-exec-am: -install-exec: install-exec-am - -install-data-am: install-pkgLTLIBRARIES -install-data: install-data-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -install: install-am -uninstall-am: uninstall-pkgLTLIBRARIES -uninstall: uninstall-am -all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) -all-redirect: all-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install -installdirs: - $(mkinstalldirs) $(DESTDIR)$(pkgdir) - - -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* - -maintainer-clean-generic: -mostlyclean-am: mostlyclean-noinstLIBRARIES mostlyclean-compile \ - mostlyclean-libtool mostlyclean-pkgLTLIBRARIES \ - mostlyclean-tags mostlyclean-depend mostlyclean-generic - -mostlyclean: mostlyclean-am - -clean-am: clean-noinstLIBRARIES clean-compile clean-libtool \ - clean-pkgLTLIBRARIES clean-tags clean-depend \ - clean-generic mostlyclean-am - -clean: clean-am - -distclean-am: distclean-noinstLIBRARIES distclean-compile \ - distclean-libtool distclean-pkgLTLIBRARIES \ - distclean-tags distclean-depend distclean-generic \ - clean-am - -rm -f libtool - -distclean: distclean-am - -maintainer-clean-am: maintainer-clean-noinstLIBRARIES \ - maintainer-clean-compile maintainer-clean-libtool \ - maintainer-clean-pkgLTLIBRARIES maintainer-clean-tags \ - maintainer-clean-depend maintainer-clean-generic \ - distclean-am - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - -maintainer-clean: maintainer-clean-am - -.PHONY: mostlyclean-noinstLIBRARIES distclean-noinstLIBRARIES \ -clean-noinstLIBRARIES maintainer-clean-noinstLIBRARIES \ -mostlyclean-compile distclean-compile clean-compile \ -maintainer-clean-compile mostlyclean-libtool distclean-libtool \ -clean-libtool maintainer-clean-libtool mostlyclean-pkgLTLIBRARIES \ -distclean-pkgLTLIBRARIES clean-pkgLTLIBRARIES \ -maintainer-clean-pkgLTLIBRARIES uninstall-pkgLTLIBRARIES \ -install-pkgLTLIBRARIES tags mostlyclean-tags distclean-tags clean-tags \ -maintainer-clean-tags distdir mostlyclean-depend distclean-depend \ -clean-depend maintainer-clean-depend info-am info dvi-am dvi check \ -check-am installcheck-am installcheck install-exec-am install-exec \ -install-data-am install-data install-am install uninstall-am uninstall \ -all-redirect all-am all installdirs mostlyclean-generic \ -distclean-generic clean-generic maintainer-clean-generic clean \ -mostlyclean distclean maintainer-clean - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <thekingant@us...> - 2006-06-26 03:57:21
|
Revision: 16345 Author: thekingant Date: 2006-06-25 20:57:19 -0700 (Sun, 25 Jun 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16345&view=rev Log Message: ----------- Backport SVN revision 16344 from HEAD to v2_0_0 Original commit message: Fix some bugs that Relan (resver) tracked down. Basically we were attempting to convert various strings from some encoding to UTF8 twice. The strings were mostly in ICQ buddy info. He submitted sf patch #1503955, but I like my approach better. ViewCVS Links: ------------- http://svn.sourceforge.net/gaim/?rev=16344&view=rev Modified Paths: -------------- branches/v2_0_0/src/protocols/oscar/oscar.c Modified: branches/v2_0_0/src/protocols/oscar/oscar.c =================================================================== --- branches/v2_0_0/src/protocols/oscar/oscar.c 2006-06-26 03:55:24 UTC (rev 16344) +++ branches/v2_0_0/src/protocols/oscar/oscar.c 2006-06-26 03:57:19 UTC (rev 16345) @@ -726,9 +726,18 @@ } static void -oscar_string_append(GaimAccount *account, GString *str, const char *newline, +oscar_string_append(GString *str, const char *newline, const char *name, const char *value) { + if (value && value[0]) { + g_string_append_printf(str, "%s<b>%s:</b> %s", newline, name, value); + } +} + +static void +oscar_string_convert_and_append(GaimAccount *account, GString *str, const char *newline, + const char *name, const char *value) +{ gchar *utf8; if (value && value[0] && (utf8 = oscar_utf8_try_convert(account, value))) { @@ -772,16 +781,16 @@ if (gaim_presence_is_online(presence)) { if (aim_sn_is_icq(b->name)) { GaimStatus *status = gaim_presence_get_active_status(presence); - oscar_string_append(gc->account, str, newline, _("Status"), + oscar_string_append(str, newline, _("Status"), gaim_status_get_name(status)); } } else { tmp = aim_ssi_itemlist_findparentname(od->ssi.local, b->name); if (aim_ssi_waitingforauth(od->ssi.local, tmp, b->name)) - oscar_string_append(gc->account, str, newline, _("Status"), + oscar_string_append(str, newline, _("Status"), _("Not Authorized")); else - oscar_string_append(gc->account, str, newline, _("Status"), + oscar_string_append(str, newline, _("Status"), _("Offline")); } } @@ -792,14 +801,14 @@ (bi->ipaddr & 0x00ff0000) >> 16, (bi->ipaddr & 0x0000ff00) >> 8, (bi->ipaddr & 0x000000ff)); - oscar_string_append(gc->account, str, newline, _("IP Address"), tmp); + oscar_string_append(str, newline, _("IP Address"), tmp); g_free(tmp); } if ((userinfo != NULL) && (userinfo->warnlevel != 0)) { tmp = g_strdup_printf("%d", (int)(userinfo->warnlevel/10.0 + .5)); - oscar_string_append(gc->account, str, newline, _("Warning Level"), tmp); + oscar_string_append(str, newline, _("Warning Level"), tmp); g_free(tmp); } @@ -808,7 +817,7 @@ if (tmp != NULL) { char *tmp2 = g_markup_escape_text(tmp, strlen(tmp)); g_free(tmp); - oscar_string_append(gc->account, str, newline, _("Buddy Comment"), tmp2); + oscar_string_convert_and_append(account, str, newline, _("Buddy Comment"), tmp2); g_free(tmp2); } } @@ -2823,23 +2832,23 @@ if (userinfo->present & AIM_USERINFO_PRESENT_ONLINESINCE) { time_t t = userinfo->onlinesince - od->timeoffset; - oscar_string_append(gc->account, str, "\n<br>", _("Online Since"), gaim_date_format_full(localtime(&t))); + oscar_string_append(str, "\n<br>", _("Online Since"), gaim_date_format_full(localtime(&t))); } if (userinfo->present & AIM_USERINFO_PRESENT_MEMBERSINCE) { time_t t = userinfo->membersince - od->timeoffset; - oscar_string_append(gc->account, str, "\n<br>", _("Member Since"), gaim_date_format_full(localtime(&t))); + oscar_string_append(str, "\n<br>", _("Member Since"), gaim_date_format_full(localtime(&t))); } if (userinfo->capabilities != 0) { tmp = oscar_caps_to_string(userinfo->capabilities); - oscar_string_append(gc->account, str, "\n<br>", _("Capabilities"), tmp); + oscar_string_append(str, "\n<br>", _("Capabilities"), tmp); g_free(tmp); } if (userinfo->present & AIM_USERINFO_PRESENT_IDLE) { tmp = gaim_str_seconds_to_string(userinfo->idletime*60); - oscar_string_append(gc->account, str, "\n<br>", _("Idle"), tmp); + oscar_string_append(str, "\n<br>", _("Idle"), tmp); g_free(tmp); } @@ -2851,7 +2860,7 @@ if (userinfo->status[0] != '\0') tmp = oscar_encoding_to_utf8(userinfo->status_encoding, userinfo->status, userinfo->status_len); - oscar_string_append(gc->account, str, "\n<br>", _("Available Message"), tmp); + oscar_string_convert_and_append(account, str, "\n<br>", _("Available Message"), tmp); g_free(tmp); } @@ -3597,9 +3606,10 @@ static int gaim_icqinfo(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { - GaimConnection *gc = od->gc; + GaimConnection *gc; + GaimAccount *account; GaimBuddy *buddy; - struct buddyinfo *bi = NULL; + struct buddyinfo *bi; gchar who[16]; GString *str; gchar *utf8; @@ -3607,6 +3617,9 @@ va_list ap; struct aim_icq_info *info; + gc = od->gc; + account = gaim_connection_get_account(gc); + va_start(ap, fr); info = va_arg(ap, struct aim_icq_info *); va_end(ap); @@ -3619,20 +3632,22 @@ buddy = gaim_find_buddy(gaim_connection_get_account(gc), who); if (buddy != NULL) bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(buddy->account, buddy->name)); + else + bi = NULL; g_string_append_printf(str, "<b>%s:</b> %s", _("UIN"), who); - oscar_string_append(gc->account, str, "\n<br>", _("Nick"), info->nick); + oscar_string_convert_and_append(account, str, "\n<br>", _("Nick"), info->nick); if ((bi != NULL) && (bi->ipaddr != 0)) { char *tstr = g_strdup_printf("%hhu.%hhu.%hhu.%hhu", (bi->ipaddr & 0xff000000) >> 24, (bi->ipaddr & 0x00ff0000) >> 16, (bi->ipaddr & 0x0000ff00) >> 8, (bi->ipaddr & 0x000000ff)); - oscar_string_append(gc->account, str, "\n<br>", _("IP Address"), tstr); + oscar_string_append(str, "\n<br>", _("IP Address"), tstr); g_free(tstr); } - oscar_string_append(gc->account, str, "\n<br>", _("First Name"), info->first); - oscar_string_append(gc->account, str, "\n<br>", _("Last Name"), info->last); + oscar_string_convert_and_append(account, str, "\n<br>", _("First Name"), info->first); + oscar_string_convert_and_append(account, str, "\n<br>", _("Last Name"), info->last); if (info->email && info->email[0] && (utf8 = oscar_utf8_try_convert(gc->account, info->email))) { g_string_append_printf(str, "\n<br><b>%s:</b> <a href=\"mailto:%s\">%s</a>", _("E-Mail Address"), utf8, utf8); g_free(utf8); @@ -3646,9 +3661,9 @@ } } } - oscar_string_append(gc->account, str, "\n<br>", _("Mobile Phone"), info->mobile); + oscar_string_convert_and_append(account, str, "\n<br>", _("Mobile Phone"), info->mobile); if (info->gender != 0) - oscar_string_append(gc->account, str, "\n<br>", _("Gender"), info->gender == 1 ? _("Female") : _("Male")); + oscar_string_append(str, "\n<br>", _("Gender"), info->gender == 1 ? _("Female") : _("Male")); if ((info->birthyear > 1900) && (info->birthmonth > 0) && (info->birthday > 0)) { /* Initialize the struct properly or strftime() will crash * under some conditions (e.g. Debian sarge w/ LANG=en_HK). */ @@ -3664,13 +3679,13 @@ * feel free to remove it. --rlaager */ mktime(tm); - oscar_string_append(gc->account, str, "\n<br>", _("Birthday"), + oscar_string_append(str, "\n<br>", _("Birthday"), gaim_date_format_short(tm)); } if ((info->age > 0) && (info->age < 255)) { char age[5]; snprintf(age, sizeof(age), "%hhd", info->age); - oscar_string_append(gc->account, str, "\n<br>", _("Age"), age); + oscar_string_append(str, "\n<br>", _("Age"), age); } if (info->personalwebpage && info->personalwebpage[0] && (utf8 = oscar_utf8_try_convert(gc->account, info->personalwebpage))) { g_string_append_printf(str, "\n<br><b>%s:</b> <a href=\"%s\">%s</a>", _("Personal Web Page"), utf8, utf8); @@ -3683,25 +3698,25 @@ g_string_append_printf(str, "<hr>"); if ((info->homeaddr && (info->homeaddr[0])) || (info->homecity && info->homecity[0]) || (info->homestate && info->homestate[0]) || (info->homezip && info->homezip[0])) { g_string_append_printf(str, "<b>%s:</b>", _("Home Address")); - oscar_string_append(gc->account, str, "\n<br>", _("Address"), info->homeaddr); - oscar_string_append(gc->account, str, "\n<br>", _("City"), info->homecity); - oscar_string_append(gc->account, str, "\n<br>", _("State"), info->homestate); - oscar_string_append(gc->account, str, "\n<br>", _("Zip Code"), info->homezip); + oscar_string_convert_and_append(account, str, "\n<br>", _("Address"), info->homeaddr); + oscar_string_convert_and_append(account, str, "\n<br>", _("City"), info->homecity); + oscar_string_convert_and_append(account, str, "\n<br>", _("State"), info->homestate); + oscar_string_convert_and_append(account, str, "\n<br>", _("Zip Code"), info->homezip); g_string_append_printf(str, "\n<hr>"); } if ((info->workaddr && info->workaddr[0]) || (info->workcity && info->workcity[0]) || (info->workstate && info->workstate[0]) || (info->workzip && info->workzip[0])) { g_string_append_printf(str, "<b>%s:</b>", _("Work Address")); - oscar_string_append(gc->account, str, "\n<br>", _("Address"), info->workaddr); - oscar_string_append(gc->account, str, "\n<br>", _("City"), info->workcity); - oscar_string_append(gc->account, str, "\n<br>", _("State"), info->workstate); - oscar_string_append(gc->account, str, "\n<br>", _("Zip Code"), info->workzip); + oscar_string_convert_and_append(account, str, "\n<br>", _("Address"), info->workaddr); + oscar_string_convert_and_append(account, str, "\n<br>", _("City"), info->workcity); + oscar_string_convert_and_append(account, str, "\n<br>", _("State"), info->workstate); + oscar_string_convert_and_append(account, str, "\n<br>", _("Zip Code"), info->workzip); g_string_append_printf(str, "\n<hr>"); } if ((info->workcompany && info->workcompany[0]) || (info->workdivision && info->workdivision[0]) || (info->workposition && info->workposition[0]) || (info->workwebpage && info->workwebpage[0])) { g_string_append_printf(str, "<b>%s:</b>", _("Work Information")); - oscar_string_append(gc->account, str, "\n<br>", _("Company"), info->workcompany); - oscar_string_append(gc->account, str, "\n<br>", _("Division"), info->workdivision); - oscar_string_append(gc->account, str, "\n<br>", _("Position"), info->workposition); + oscar_string_convert_and_append(account, str, "\n<br>", _("Company"), info->workcompany); + oscar_string_convert_and_append(account, str, "\n<br>", _("Division"), info->workdivision); + oscar_string_convert_and_append(account, str, "\n<br>", _("Position"), info->workposition); if (info->workwebpage && info->workwebpage[0] && (utf8 = oscar_utf8_try_convert(gc->account, info->workwebpage))) { g_string_append_printf(str, "\n<br><b>%s:</b> <a href=\"%s\">%s</a>", _("Web Page"), utf8, utf8); g_free(utf8); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <thekingant@us...> - 2006-06-26 03:55:26
|
Revision: 16344 Author: thekingant Date: 2006-06-25 20:55:24 -0700 (Sun, 25 Jun 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16344&view=rev Log Message: ----------- Fix some bugs that Relan (resver) tracked down. Basically we were attempting to convert various strings from some encoding to UTF8 twice. The strings were mostly in ICQ buddy info. He submitted sf patch #1503955, but I like my approach better. Modified Paths: -------------- trunk/src/protocols/oscar/oscar.c Modified: trunk/src/protocols/oscar/oscar.c =================================================================== --- trunk/src/protocols/oscar/oscar.c 2006-06-26 03:53:13 UTC (rev 16343) +++ trunk/src/protocols/oscar/oscar.c 2006-06-26 03:55:24 UTC (rev 16344) @@ -726,9 +726,18 @@ } static void -oscar_string_append(GaimAccount *account, GString *str, const char *newline, +oscar_string_append(GString *str, const char *newline, const char *name, const char *value) { + if (value && value[0]) { + g_string_append_printf(str, "%s<b>%s:</b> %s", newline, name, value); + } +} + +static void +oscar_string_convert_and_append(GaimAccount *account, GString *str, const char *newline, + const char *name, const char *value) +{ gchar *utf8; if (value && value[0] && (utf8 = oscar_utf8_try_convert(account, value))) { @@ -772,16 +781,16 @@ if (gaim_presence_is_online(presence)) { if (aim_sn_is_icq(b->name)) { GaimStatus *status = gaim_presence_get_active_status(presence); - oscar_string_append(gc->account, str, newline, _("Status"), + oscar_string_append(str, newline, _("Status"), gaim_status_get_name(status)); } } else { tmp = aim_ssi_itemlist_findparentname(od->ssi.local, b->name); if (aim_ssi_waitingforauth(od->ssi.local, tmp, b->name)) - oscar_string_append(gc->account, str, newline, _("Status"), + oscar_string_append(str, newline, _("Status"), _("Not Authorized")); else - oscar_string_append(gc->account, str, newline, _("Status"), + oscar_string_append(str, newline, _("Status"), _("Offline")); } } @@ -792,14 +801,14 @@ (bi->ipaddr & 0x00ff0000) >> 16, (bi->ipaddr & 0x0000ff00) >> 8, (bi->ipaddr & 0x000000ff)); - oscar_string_append(gc->account, str, newline, _("IP Address"), tmp); + oscar_string_append(str, newline, _("IP Address"), tmp); g_free(tmp); } if ((userinfo != NULL) && (userinfo->warnlevel != 0)) { tmp = g_strdup_printf("%d", (int)(userinfo->warnlevel/10.0 + .5)); - oscar_string_append(gc->account, str, newline, _("Warning Level"), tmp); + oscar_string_append(str, newline, _("Warning Level"), tmp); g_free(tmp); } @@ -808,7 +817,7 @@ if (tmp != NULL) { char *tmp2 = g_markup_escape_text(tmp, strlen(tmp)); g_free(tmp); - oscar_string_append(gc->account, str, newline, _("Buddy Comment"), tmp2); + oscar_string_convert_and_append(account, str, newline, _("Buddy Comment"), tmp2); g_free(tmp2); } } @@ -2824,23 +2833,23 @@ if (userinfo->present & AIM_USERINFO_PRESENT_ONLINESINCE) { time_t t = userinfo->onlinesince - od->timeoffset; - oscar_string_append(gc->account, str, "\n<br>", _("Online Since"), gaim_date_format_full(localtime(&t))); + oscar_string_append(str, "\n<br>", _("Online Since"), gaim_date_format_full(localtime(&t))); } if (userinfo->present & AIM_USERINFO_PRESENT_MEMBERSINCE) { time_t t = userinfo->membersince - od->timeoffset; - oscar_string_append(gc->account, str, "\n<br>", _("Member Since"), gaim_date_format_full(localtime(&t))); + oscar_string_append(str, "\n<br>", _("Member Since"), gaim_date_format_full(localtime(&t))); } if (userinfo->capabilities != 0) { tmp = oscar_caps_to_string(userinfo->capabilities); - oscar_string_append(gc->account, str, "\n<br>", _("Capabilities"), tmp); + oscar_string_append(str, "\n<br>", _("Capabilities"), tmp); g_free(tmp); } if (userinfo->present & AIM_USERINFO_PRESENT_IDLE) { tmp = gaim_str_seconds_to_string(userinfo->idletime*60); - oscar_string_append(gc->account, str, "\n<br>", _("Idle"), tmp); + oscar_string_append(str, "\n<br>", _("Idle"), tmp); g_free(tmp); } @@ -2852,7 +2861,7 @@ if (userinfo->status[0] != '\0') tmp = oscar_encoding_to_utf8(userinfo->status_encoding, userinfo->status, userinfo->status_len); - oscar_string_append(gc->account, str, "\n<br>", _("Available Message"), tmp); + oscar_string_convert_and_append(account, str, "\n<br>", _("Available Message"), tmp); g_free(tmp); } @@ -3598,9 +3607,10 @@ static int gaim_icqinfo(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { - GaimConnection *gc = od->gc; + GaimConnection *gc; + GaimAccount *account; GaimBuddy *buddy; - struct buddyinfo *bi = NULL; + struct buddyinfo *bi; gchar who[16]; GString *str; gchar *utf8; @@ -3608,6 +3618,9 @@ va_list ap; struct aim_icq_info *info; + gc = od->gc; + account = gaim_connection_get_account(gc); + va_start(ap, fr); info = va_arg(ap, struct aim_icq_info *); va_end(ap); @@ -3620,20 +3633,22 @@ buddy = gaim_find_buddy(gaim_connection_get_account(gc), who); if (buddy != NULL) bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(buddy->account, buddy->name)); + else + bi = NULL; g_string_append_printf(str, "<b>%s:</b> %s", _("UIN"), who); - oscar_string_append(gc->account, str, "\n<br>", _("Nick"), info->nick); + oscar_string_convert_and_append(account, str, "\n<br>", _("Nick"), info->nick); if ((bi != NULL) && (bi->ipaddr != 0)) { char *tstr = g_strdup_printf("%hhu.%hhu.%hhu.%hhu", (bi->ipaddr & 0xff000000) >> 24, (bi->ipaddr & 0x00ff0000) >> 16, (bi->ipaddr & 0x0000ff00) >> 8, (bi->ipaddr & 0x000000ff)); - oscar_string_append(gc->account, str, "\n<br>", _("IP Address"), tstr); + oscar_string_append(str, "\n<br>", _("IP Address"), tstr); g_free(tstr); } - oscar_string_append(gc->account, str, "\n<br>", _("First Name"), info->first); - oscar_string_append(gc->account, str, "\n<br>", _("Last Name"), info->last); + oscar_string_convert_and_append(account, str, "\n<br>", _("First Name"), info->first); + oscar_string_convert_and_append(account, str, "\n<br>", _("Last Name"), info->last); if (info->email && info->email[0] && (utf8 = oscar_utf8_try_convert(gc->account, info->email))) { g_string_append_printf(str, "\n<br><b>%s:</b> <a href=\"mailto:%s\">%s</a>", _("E-Mail Address"), utf8, utf8); g_free(utf8); @@ -3647,9 +3662,9 @@ } } } - oscar_string_append(gc->account, str, "\n<br>", _("Mobile Phone"), info->mobile); + oscar_string_convert_and_append(account, str, "\n<br>", _("Mobile Phone"), info->mobile); if (info->gender != 0) - oscar_string_append(gc->account, str, "\n<br>", _("Gender"), info->gender == 1 ? _("Female") : _("Male")); + oscar_string_append(str, "\n<br>", _("Gender"), info->gender == 1 ? _("Female") : _("Male")); if ((info->birthyear > 1900) && (info->birthmonth > 0) && (info->birthday > 0)) { /* Initialize the struct properly or strftime() will crash * under some conditions (e.g. Debian sarge w/ LANG=en_HK). */ @@ -3665,13 +3680,13 @@ * feel free to remove it. --rlaager */ mktime(tm); - oscar_string_append(gc->account, str, "\n<br>", _("Birthday"), + oscar_string_append(str, "\n<br>", _("Birthday"), gaim_date_format_short(tm)); } if ((info->age > 0) && (info->age < 255)) { char age[5]; snprintf(age, sizeof(age), "%hhd", info->age); - oscar_string_append(gc->account, str, "\n<br>", _("Age"), age); + oscar_string_append(str, "\n<br>", _("Age"), age); } if (info->personalwebpage && info->personalwebpage[0] && (utf8 = oscar_utf8_try_convert(gc->account, info->personalwebpage))) { g_string_append_printf(str, "\n<br><b>%s:</b> <a href=\"%s\">%s</a>", _("Personal Web Page"), utf8, utf8); @@ -3684,25 +3699,25 @@ g_string_append_printf(str, "<hr>"); if ((info->homeaddr && (info->homeaddr[0])) || (info->homecity && info->homecity[0]) || (info->homestate && info->homestate[0]) || (info->homezip && info->homezip[0])) { g_string_append_printf(str, "<b>%s:</b>", _("Home Address")); - oscar_string_append(gc->account, str, "\n<br>", _("Address"), info->homeaddr); - oscar_string_append(gc->account, str, "\n<br>", _("City"), info->homecity); - oscar_string_append(gc->account, str, "\n<br>", _("State"), info->homestate); - oscar_string_append(gc->account, str, "\n<br>", _("Zip Code"), info->homezip); + oscar_string_convert_and_append(account, str, "\n<br>", _("Address"), info->homeaddr); + oscar_string_convert_and_append(account, str, "\n<br>", _("City"), info->homecity); + oscar_string_convert_and_append(account, str, "\n<br>", _("State"), info->homestate); + oscar_string_convert_and_append(account, str, "\n<br>", _("Zip Code"), info->homezip); g_string_append_printf(str, "\n<hr>"); } if ((info->workaddr && info->workaddr[0]) || (info->workcity && info->workcity[0]) || (info->workstate && info->workstate[0]) || (info->workzip && info->workzip[0])) { g_string_append_printf(str, "<b>%s:</b>", _("Work Address")); - oscar_string_append(gc->account, str, "\n<br>", _("Address"), info->workaddr); - oscar_string_append(gc->account, str, "\n<br>", _("City"), info->workcity); - oscar_string_append(gc->account, str, "\n<br>", _("State"), info->workstate); - oscar_string_append(gc->account, str, "\n<br>", _("Zip Code"), info->workzip); + oscar_string_convert_and_append(account, str, "\n<br>", _("Address"), info->workaddr); + oscar_string_convert_and_append(account, str, "\n<br>", _("City"), info->workcity); + oscar_string_convert_and_append(account, str, "\n<br>", _("State"), info->workstate); + oscar_string_convert_and_append(account, str, "\n<br>", _("Zip Code"), info->workzip); g_string_append_printf(str, "\n<hr>"); } if ((info->workcompany && info->workcompany[0]) || (info->workdivision && info->workdivision[0]) || (info->workposition && info->workposition[0]) || (info->workwebpage && info->workwebpage[0])) { g_string_append_printf(str, "<b>%s:</b>", _("Work Information")); - oscar_string_append(gc->account, str, "\n<br>", _("Company"), info->workcompany); - oscar_string_append(gc->account, str, "\n<br>", _("Division"), info->workdivision); - oscar_string_append(gc->account, str, "\n<br>", _("Position"), info->workposition); + oscar_string_convert_and_append(account, str, "\n<br>", _("Company"), info->workcompany); + oscar_string_convert_and_append(account, str, "\n<br>", _("Division"), info->workdivision); + oscar_string_convert_and_append(account, str, "\n<br>", _("Position"), info->workposition); if (info->workwebpage && info->workwebpage[0] && (utf8 = oscar_utf8_try_convert(gc->account, info->workwebpage))) { g_string_append_printf(str, "\n<br><b>%s:</b> <a href=\"%s\">%s</a>", _("Web Page"), utf8, utf8); g_free(utf8); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <thekingant@us...> - 2006-06-26 03:53:19
|
Revision: 16343 Author: thekingant Date: 2006-06-25 20:53:13 -0700 (Sun, 25 Jun 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16343&view=rev Log Message: ----------- Backport SVN revision #16342 from HEAD to v2_0_0 Original commit message: Get rid of some unnecessary if !NULL checks ViewCVS Links: ------------- http://svn.sourceforge.net/gaim/?rev=16342&view=rev Modified Paths: -------------- branches/v2_0_0/src/buddyicon.c Modified: branches/v2_0_0/src/buddyicon.c =================================================================== --- branches/v2_0_0/src/buddyicon.c 2006-06-26 03:52:21 UTC (rev 16342) +++ branches/v2_0_0/src/buddyicon.c 2006-06-26 03:53:13 UTC (rev 16343) @@ -132,12 +132,8 @@ if (icon_cache != NULL) g_hash_table_remove(icon_cache, gaim_buddy_icon_get_username(icon)); - if (icon->username != NULL) - g_free(icon->username); - - if (icon->data != NULL) - g_free(icon->data); - + g_free(icon->username); + g_free(icon->data); GAIM_DBUS_UNREGISTER_POINTER(icon); g_free(icon); } @@ -315,8 +311,7 @@ g_return_if_fail(icon != NULL); g_return_if_fail(username != NULL); - if (icon->username != NULL) - g_free(icon->username); + g_free(icon->username); icon->username = g_strdup(username); } @@ -326,8 +321,7 @@ { g_return_if_fail(icon != NULL); - if (icon->data != NULL) - g_free(icon->data); + g_free(icon->data); if (data != NULL && len > 0) { @@ -485,8 +479,7 @@ { g_return_if_fail(dir != NULL); - if (cache_dir != NULL) - g_free(cache_dir); + g_free(cache_dir); cache_dir = g_strdup(dir); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <thekingant@us...> - 2006-06-26 03:52:25
|
Revision: 16342 Author: thekingant Date: 2006-06-25 20:52:21 -0700 (Sun, 25 Jun 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16342&view=rev Log Message: ----------- Get rid of some unnecessary if !NULL checks Modified Paths: -------------- trunk/src/buddyicon.c Modified: trunk/src/buddyicon.c =================================================================== --- trunk/src/buddyicon.c 2006-06-26 03:44:39 UTC (rev 16341) +++ trunk/src/buddyicon.c 2006-06-26 03:52:21 UTC (rev 16342) @@ -132,12 +132,8 @@ if (icon_cache != NULL) g_hash_table_remove(icon_cache, gaim_buddy_icon_get_username(icon)); - if (icon->username != NULL) - g_free(icon->username); - - if (icon->data != NULL) - g_free(icon->data); - + g_free(icon->username); + g_free(icon->data); GAIM_DBUS_UNREGISTER_POINTER(icon); g_free(icon); } @@ -315,8 +311,7 @@ g_return_if_fail(icon != NULL); g_return_if_fail(username != NULL); - if (icon->username != NULL) - g_free(icon->username); + g_free(icon->username); icon->username = g_strdup(username); } @@ -326,8 +321,7 @@ { g_return_if_fail(icon != NULL); - if (icon->data != NULL) - g_free(icon->data); + g_free(icon->data); if (data != NULL && len > 0) { @@ -485,8 +479,7 @@ { g_return_if_fail(dir != NULL); - if (cache_dir != NULL) - g_free(cache_dir); + g_free(cache_dir); cache_dir = g_strdup(dir); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <markhuetsch@us...> - 2006-06-26 03:44:44
|
Revision: 16341 Author: markhuetsch Date: 2006-06-25 20:44:39 -0700 (Sun, 25 Jun 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16341&view=rev Log Message: ----------- Fixed a bug that prevented libqq from being loaded as a plugin. Modified Paths: -------------- trunk/src/protocols/qq/buddy_status.c trunk/src/protocols/qq/im.c trunk/src/protocols/qq/qq_proxy.c trunk/src/protocols/qq/send_core.c trunk/src/protocols/qq/send_file.c Modified: trunk/src/protocols/qq/buddy_status.c =================================================================== --- trunk/src/protocols/qq/buddy_status.c 2006-06-26 02:58:54 UTC (rev 16340) +++ trunk/src/protocols/qq/buddy_status.c 2006-06-26 03:44:39 UTC (rev 16341) @@ -62,7 +62,7 @@ /*****************************************************************************/ // parse the data into qq_buddy_status -static gint _qq_buddy_status_read(guint8 * data, guint8 ** cursor, gint len, qq_buddy_status * s) { +gint _qq_buddy_status_read(guint8 * data, guint8 ** cursor, gint len, qq_buddy_status * s) { gint bytes; g_return_val_if_fail(data != NULL && *cursor != NULL && s != NULL, -1); Modified: trunk/src/protocols/qq/im.c =================================================================== --- trunk/src/protocols/qq/im.c 2006-06-26 02:58:54 UTC (rev 16340) +++ trunk/src/protocols/qq/im.c 2006-06-26 03:44:39 UTC (rev 16341) @@ -48,7 +48,7 @@ #define DEFAULT_FONT_NAME_LEN 4 // a debug function -static void _qq_show_packet(gchar * desc, gchar * buf, gint len); +void _qq_show_packet(gchar * desc, gchar * buf, gint len); enum { @@ -230,7 +230,7 @@ /*****************************************************************************/ // generate a md5 key using uid and session_key -static gchar *_gen_session_md5(gint uid, gchar * session_key) +gchar *_gen_session_md5(gint uid, gchar * session_key) { gchar *src, md5_str[QQ_KEY_LENGTH]; guint8 *cursor; Modified: trunk/src/protocols/qq/qq_proxy.c =================================================================== --- trunk/src/protocols/qq/qq_proxy.c 2006-06-26 02:58:54 UTC (rev 16340) +++ trunk/src/protocols/qq/qq_proxy.c 2006-06-26 03:44:39 UTC (rev 16341) @@ -60,7 +60,7 @@ } */ -static void _qq_show_packet(gchar * desc, gchar * buf, gint len) +void _qq_show_packet(gchar * desc, gchar * buf, gint len) { char buf1[4096], buf2[10]; int i; @@ -108,7 +108,7 @@ /*****************************************************************************/ -static gint _qq_fill_host(struct sockaddr_in * addr, const gchar * host, guint16 port) +gint _qq_fill_host(struct sockaddr_in * addr, const gchar * host, guint16 port) { if (!inet_aton(host, &(addr->sin_addr))) { struct hostent *hp; Modified: trunk/src/protocols/qq/send_core.c =================================================================== --- trunk/src/protocols/qq/send_core.c 2006-06-26 02:58:54 UTC (rev 16340) +++ trunk/src/protocols/qq/send_core.c 2006-06-26 03:44:39 UTC (rev 16341) @@ -37,7 +37,7 @@ // create qq packet header with given sequence // return the number of bytes in header if succeeds // return -1 if there is any error -static gint _create_packet_head_seq(guint8 * buf, guint8 ** cursor, +gint _create_packet_head_seq(guint8 * buf, guint8 ** cursor, GaimConnection * gc, guint16 cmd, gboolean is_auto_seq, guint16 * seq) { qq_data *qd; @@ -77,7 +77,7 @@ // for those need ack and resend no ack feed back from server // return number of bytes written to the socket, // return -1 if there is any error -static gint _qq_send_packet(GaimConnection * gc, guint8 * buf, gint len, guint16 cmd) +gint _qq_send_packet(GaimConnection * gc, guint8 * buf, gint len, guint16 cmd) { qq_data *qd; qq_sendpacket *p; Modified: trunk/src/protocols/qq/send_file.c =================================================================== --- trunk/src/protocols/qq/send_file.c 2006-06-26 02:58:54 UTC (rev 16340) +++ trunk/src/protocols/qq/send_file.c 2006-06-26 03:44:39 UTC (rev 16341) @@ -140,7 +140,7 @@ } */ -static gssize _qq_xfer_write(const guchar *buf, size_t len, GaimXfer *xfer) //gfhuang +gssize _qq_xfer_write(const guchar *buf, size_t len, GaimXfer *xfer) //gfhuang { return _qq_xfer_udp_send(buf, len, xfer); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <markhuetsch@us...> - 2006-06-26 03:01:06
|
Revision: 16340 Author: markhuetsch Date: 2006-06-25 19:58:54 -0700 (Sun, 25 Jun 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16340&view=rev Log Message: ----------- Performed minor cleanup of the OpenQ codebase and patched it into the Gaim trunk as a prpl, providing basic QQ functionality. Modified Paths: -------------- trunk/configure.ac trunk/pixmaps/smileys/default/Makefile.am trunk/pixmaps/smileys/default/theme trunk/pixmaps/status/default/Makefile.am trunk/src/protocols/Makefile.am Added Paths: ----------- trunk/pixmaps/smileys/default/qq_smiley_0.gif trunk/pixmaps/smileys/default/qq_smiley_1.gif trunk/pixmaps/smileys/default/qq_smiley_10.gif trunk/pixmaps/smileys/default/qq_smiley_11.gif trunk/pixmaps/smileys/default/qq_smiley_12.gif trunk/pixmaps/smileys/default/qq_smiley_13.gif trunk/pixmaps/smileys/default/qq_smiley_14.gif trunk/pixmaps/smileys/default/qq_smiley_15.gif trunk/pixmaps/smileys/default/qq_smiley_16.gif trunk/pixmaps/smileys/default/qq_smiley_17.gif trunk/pixmaps/smileys/default/qq_smiley_18.gif trunk/pixmaps/smileys/default/qq_smiley_19.gif trunk/pixmaps/smileys/default/qq_smiley_2.gif trunk/pixmaps/smileys/default/qq_smiley_20.gif trunk/pixmaps/smileys/default/qq_smiley_21.gif trunk/pixmaps/smileys/default/qq_smiley_22.gif trunk/pixmaps/smileys/default/qq_smiley_23.gif trunk/pixmaps/smileys/default/qq_smiley_24.gif trunk/pixmaps/smileys/default/qq_smiley_25.gif trunk/pixmaps/smileys/default/qq_smiley_26.gif trunk/pixmaps/smileys/default/qq_smiley_27.gif trunk/pixmaps/smileys/default/qq_smiley_28.gif trunk/pixmaps/smileys/default/qq_smiley_29.gif trunk/pixmaps/smileys/default/qq_smiley_3.gif trunk/pixmaps/smileys/default/qq_smiley_30.gif trunk/pixmaps/smileys/default/qq_smiley_31.gif trunk/pixmaps/smileys/default/qq_smiley_32.gif trunk/pixmaps/smileys/default/qq_smiley_33.gif trunk/pixmaps/smileys/default/qq_smiley_34.gif trunk/pixmaps/smileys/default/qq_smiley_35.gif trunk/pixmaps/smileys/default/qq_smiley_36.gif trunk/pixmaps/smileys/default/qq_smiley_37.gif trunk/pixmaps/smileys/default/qq_smiley_38.gif trunk/pixmaps/smileys/default/qq_smiley_39.gif trunk/pixmaps/smileys/default/qq_smiley_4.gif trunk/pixmaps/smileys/default/qq_smiley_40.gif trunk/pixmaps/smileys/default/qq_smiley_41.gif trunk/pixmaps/smileys/default/qq_smiley_42.gif trunk/pixmaps/smileys/default/qq_smiley_43.gif trunk/pixmaps/smileys/default/qq_smiley_44.gif trunk/pixmaps/smileys/default/qq_smiley_45.gif trunk/pixmaps/smileys/default/qq_smiley_46.gif trunk/pixmaps/smileys/default/qq_smiley_47.gif trunk/pixmaps/smileys/default/qq_smiley_48.gif trunk/pixmaps/smileys/default/qq_smiley_49.gif trunk/pixmaps/smileys/default/qq_smiley_5.gif trunk/pixmaps/smileys/default/qq_smiley_50.gif trunk/pixmaps/smileys/default/qq_smiley_51.gif trunk/pixmaps/smileys/default/qq_smiley_52.gif trunk/pixmaps/smileys/default/qq_smiley_53.gif trunk/pixmaps/smileys/default/qq_smiley_54.gif trunk/pixmaps/smileys/default/qq_smiley_55.gif trunk/pixmaps/smileys/default/qq_smiley_56.gif trunk/pixmaps/smileys/default/qq_smiley_57.gif trunk/pixmaps/smileys/default/qq_smiley_58.gif trunk/pixmaps/smileys/default/qq_smiley_59.gif trunk/pixmaps/smileys/default/qq_smiley_6.gif trunk/pixmaps/smileys/default/qq_smiley_60.gif trunk/pixmaps/smileys/default/qq_smiley_61.gif trunk/pixmaps/smileys/default/qq_smiley_62.gif trunk/pixmaps/smileys/default/qq_smiley_63.gif trunk/pixmaps/smileys/default/qq_smiley_64.gif trunk/pixmaps/smileys/default/qq_smiley_65.gif trunk/pixmaps/smileys/default/qq_smiley_66.gif trunk/pixmaps/smileys/default/qq_smiley_67.gif trunk/pixmaps/smileys/default/qq_smiley_68.gif trunk/pixmaps/smileys/default/qq_smiley_69.gif trunk/pixmaps/smileys/default/qq_smiley_7.gif trunk/pixmaps/smileys/default/qq_smiley_70.gif trunk/pixmaps/smileys/default/qq_smiley_71.gif trunk/pixmaps/smileys/default/qq_smiley_72.gif trunk/pixmaps/smileys/default/qq_smiley_73.gif trunk/pixmaps/smileys/default/qq_smiley_74.gif trunk/pixmaps/smileys/default/qq_smiley_75.gif trunk/pixmaps/smileys/default/qq_smiley_76.gif trunk/pixmaps/smileys/default/qq_smiley_77.gif trunk/pixmaps/smileys/default/qq_smiley_78.gif trunk/pixmaps/smileys/default/qq_smiley_79.gif trunk/pixmaps/smileys/default/qq_smiley_8.gif trunk/pixmaps/smileys/default/qq_smiley_80.gif trunk/pixmaps/smileys/default/qq_smiley_81.gif trunk/pixmaps/smileys/default/qq_smiley_82.gif trunk/pixmaps/smileys/default/qq_smiley_83.gif trunk/pixmaps/smileys/default/qq_smiley_84.gif trunk/pixmaps/smileys/default/qq_smiley_85.gif trunk/pixmaps/smileys/default/qq_smiley_86.gif trunk/pixmaps/smileys/default/qq_smiley_87.gif trunk/pixmaps/smileys/default/qq_smiley_88.gif trunk/pixmaps/smileys/default/qq_smiley_89.gif trunk/pixmaps/smileys/default/qq_smiley_9.gif trunk/pixmaps/smileys/default/qq_smiley_90.gif trunk/pixmaps/smileys/default/qq_smiley_91.gif trunk/pixmaps/smileys/default/qq_smiley_92.gif trunk/pixmaps/smileys/default/qq_smiley_93.gif trunk/pixmaps/smileys/default/qq_smiley_94.gif trunk/pixmaps/smileys/default/qq_smiley_95.gif trunk/pixmaps/status/default/qq.png trunk/src/protocols/qq/ trunk/src/protocols/qq/Makefile.am trunk/src/protocols/qq/Makefile.in trunk/src/protocols/qq/Makefile.mingw trunk/src/protocols/qq/TODO trunk/src/protocols/qq/buddy_info.c trunk/src/protocols/qq/buddy_info.h trunk/src/protocols/qq/buddy_list.c trunk/src/protocols/qq/buddy_list.h trunk/src/protocols/qq/buddy_opt.c trunk/src/protocols/qq/buddy_opt.h trunk/src/protocols/qq/buddy_status.c trunk/src/protocols/qq/buddy_status.h trunk/src/protocols/qq/char_conv.c trunk/src/protocols/qq/char_conv.h trunk/src/protocols/qq/crypt.c trunk/src/protocols/qq/crypt.h trunk/src/protocols/qq/file_trans.c trunk/src/protocols/qq/file_trans.h trunk/src/protocols/qq/group.c trunk/src/protocols/qq/group.h trunk/src/protocols/qq/group_admindlg.c trunk/src/protocols/qq/group_admindlg.h trunk/src/protocols/qq/group_conv.c trunk/src/protocols/qq/group_conv.h trunk/src/protocols/qq/group_find.c trunk/src/protocols/qq/group_find.h trunk/src/protocols/qq/group_free.c trunk/src/protocols/qq/group_free.h trunk/src/protocols/qq/group_hash.c trunk/src/protocols/qq/group_hash.h trunk/src/protocols/qq/group_im.c trunk/src/protocols/qq/group_im.h trunk/src/protocols/qq/group_info.c trunk/src/protocols/qq/group_info.h trunk/src/protocols/qq/group_join.c trunk/src/protocols/qq/group_join.h trunk/src/protocols/qq/group_misc.c trunk/src/protocols/qq/group_misc.h trunk/src/protocols/qq/group_network.c trunk/src/protocols/qq/group_network.h trunk/src/protocols/qq/group_opt.c trunk/src/protocols/qq/group_opt.h trunk/src/protocols/qq/group_search.c trunk/src/protocols/qq/group_search.h trunk/src/protocols/qq/header_info.c trunk/src/protocols/qq/header_info.h trunk/src/protocols/qq/im.c trunk/src/protocols/qq/im.h trunk/src/protocols/qq/infodlg.c trunk/src/protocols/qq/infodlg.h trunk/src/protocols/qq/ip_location.c trunk/src/protocols/qq/ip_location.h trunk/src/protocols/qq/keep_alive.c trunk/src/protocols/qq/keep_alive.h trunk/src/protocols/qq/login_logout.c trunk/src/protocols/qq/login_logout.h trunk/src/protocols/qq/packet_parse.c trunk/src/protocols/qq/packet_parse.h trunk/src/protocols/qq/qq.c trunk/src/protocols/qq/qq.h trunk/src/protocols/qq/qq_proxy.c trunk/src/protocols/qq/qq_proxy.h trunk/src/protocols/qq/recv_core.c trunk/src/protocols/qq/recv_core.h trunk/src/protocols/qq/send_core.c trunk/src/protocols/qq/send_core.h trunk/src/protocols/qq/send_file.c trunk/src/protocols/qq/send_file.h trunk/src/protocols/qq/sendqueue.c trunk/src/protocols/qq/sendqueue.h trunk/src/protocols/qq/show.c trunk/src/protocols/qq/show.h trunk/src/protocols/qq/sys_msg.c trunk/src/protocols/qq/sys_msg.h trunk/src/protocols/qq/udp_proxy_s5.c trunk/src/protocols/qq/udp_proxy_s5.h trunk/src/protocols/qq/utils.c trunk/src/protocols/qq/utils.h Modified: trunk/configure.ac =================================================================== --- trunk/configure.ac 2006-06-26 00:12:31 UTC (rev 16339) +++ trunk/configure.ac 2006-06-26 02:58:54 UTC (rev 16340) @@ -401,7 +401,7 @@ fi if test "x$STATIC_PRPLS" = "xall" ; then - STATIC_PRPLS="bonjour gg irc jabber msn novell oscar sametime silc simple yahoo zephyr" + STATIC_PRPLS="bonjour gg irc jabber msn novell oscar qq sametime silc simple yahoo zephyr" fi if test "x$have_meanwhile" != "xyes" ; then STATIC_PRPLS=`echo $STATIC_PRPLS | $sedpath 's/sametime//'` @@ -436,6 +436,7 @@ msn) static_msn=yes ;; novell) static_novell=yes ;; oscar) static_oscar=yes ;; + qq) static_qq=yes ;; sametime) static_sametime=yes ;; silc) static_silc=yes ;; simple) static_simple=yes ;; @@ -452,6 +453,7 @@ AM_CONDITIONAL(STATIC_MSN, test "x$static_msn" = "xyes") AM_CONDITIONAL(STATIC_NOVELL, test "x$static_novell" = "xyes") AM_CONDITIONAL(STATIC_OSCAR, test "x$static_oscar" = "xyes") +AM_CONDITIONAL(STATIC_QQ, test "x$static_qq" = "xyes") AM_CONDITIONAL(STATIC_SAMETIME, test "x$static_sametime" = "xyes" -a "x$have_meanwhile" = "xyes") AM_CONDITIONAL(STATIC_SILC, test "x$static_silc" = "xyes" -a "x$silcincludes" = "xyes" -a "x$silcclient" = "xyes") AM_CONDITIONAL(STATIC_SIMPLE, test "x$static_simple" = "xyes") @@ -464,7 +466,7 @@ AC_ARG_WITH(dynamic_prpls, [AC_HELP_STRING([--with-dynamic-prpls], [specify which protocols to build dynamically])], [DYNAMIC_PRPLS=`echo $withval | $sedpath 's/,/ /g'`]) if test "x$DYNAMIC_PRPLS" = "xall" ; then - DYNAMIC_PRPLS="bonjour gg irc jabber msn novell oscar sametime silc simple yahoo zephyr" + DYNAMIC_PRPLS="bonjour gg irc jabber msn novell oscar qq sametime silc simple yahoo zephyr" fi if test "x$have_meanwhile" != "xyes"; then DYNAMIC_PRPLS=`echo $DYNAMIC_PRPLS | $sedpath 's/sametime//'` @@ -488,6 +490,7 @@ msn) dynamic_msn=yes ;; novell) dynamic_novell=yes ;; oscar) dynamic_oscar=yes ;; + qq) dynamic_qq=yes ;; sametime) dynamic_sametime=yes ;; silc) dynamic_silc=yes ;; simple) dynamic_simple=yes ;; @@ -504,6 +507,7 @@ AM_CONDITIONAL(DYNAMIC_MSN, test "x$dynamic_msn" = "xyes") AM_CONDITIONAL(DYNAMIC_NOVELL, test "x$dynamic_novell" = "xyes") AM_CONDITIONAL(DYNAMIC_OSCAR, test "x$dynamic_oscar" = "xyes") +AM_CONDITIONAL(DYNAMIC_QQ, test "x$dynamic_qq" = "xyes") AM_CONDITIONAL(DYNAMIC_SAMETIME, test "x$dynamic_sametime" = "xyes" -a "x$have_meanwhile" = "xyes") AM_CONDITIONAL(DYNAMIC_SILC, test "x$dynamic_silc" = "xyes" -a "x$silcincludes" = "xyes" -a "x$silcclient" = "xyes") AM_CONDITIONAL(DYNAMIC_SIMPLE, test "x$dynamic_simple" = "xyes") @@ -1772,6 +1776,7 @@ src/protocols/napster/Makefile src/protocols/novell/Makefile src/protocols/oscar/Makefile + src/protocols/qq/Makefile src/protocols/sametime/Makefile src/protocols/silc/Makefile src/protocols/simple/Makefile Modified: trunk/pixmaps/smileys/default/Makefile.am =================================================================== --- trunk/pixmaps/smileys/default/Makefile.am 2006-06-26 00:12:31 UTC (rev 16339) +++ trunk/pixmaps/smileys/default/Makefile.am 2006-06-26 02:58:54 UTC (rev 16340) @@ -107,6 +107,104 @@ msn_wink.gif \ msn_xbox.png +QQ_SMILEYS = \ + qq_smiley_0.gif \ + qq_smiley_10.gif \ + qq_smiley_11.gif \ + qq_smiley_12.gif \ + qq_smiley_13.gif \ + qq_smiley_14.gif \ + qq_smiley_15.gif \ + qq_smiley_16.gif \ + qq_smiley_17.gif \ + qq_smiley_18.gif \ + qq_smiley_19.gif \ + qq_smiley_1.gif \ + qq_smiley_20.gif \ + qq_smiley_21.gif \ + qq_smiley_22.gif \ + qq_smiley_23.gif \ + qq_smiley_24.gif \ + qq_smiley_25.gif \ + qq_smiley_26.gif \ + qq_smiley_27.gif \ + qq_smiley_28.gif \ + qq_smiley_29.gif \ + qq_smiley_2.gif \ + qq_smiley_30.gif \ + qq_smiley_31.gif \ + qq_smiley_32.gif \ + qq_smiley_33.gif \ + qq_smiley_34.gif \ + qq_smiley_35.gif \ + qq_smiley_36.gif \ + qq_smiley_37.gif \ + qq_smiley_38.gif \ + qq_smiley_39.gif \ + qq_smiley_3.gif \ + qq_smiley_40.gif \ + qq_smiley_41.gif \ + qq_smiley_42.gif \ + qq_smiley_43.gif \ + qq_smiley_44.gif \ + qq_smiley_45.gif \ + qq_smiley_46.gif \ + qq_smiley_47.gif \ + qq_smiley_48.gif \ + qq_smiley_49.gif \ + qq_smiley_4.gif \ + qq_smiley_50.gif \ + qq_smiley_51.gif \ + qq_smiley_52.gif \ + qq_smiley_53.gif \ + qq_smiley_54.gif \ + qq_smiley_55.gif \ + qq_smiley_56.gif \ + qq_smiley_57.gif \ + qq_smiley_58.gif \ + qq_smiley_59.gif \ + qq_smiley_5.gif \ + qq_smiley_60.gif \ + qq_smiley_61.gif \ + qq_smiley_62.gif \ + qq_smiley_63.gif \ + qq_smiley_64.gif \ + qq_smiley_65.gif \ + qq_smiley_66.gif \ + qq_smiley_67.gif \ + qq_smiley_68.gif \ + qq_smiley_69.gif \ + qq_smiley_6.gif \ + qq_smiley_70.gif \ + qq_smiley_71.gif \ + qq_smiley_72.gif \ + qq_smiley_73.gif \ + qq_smiley_74.gif \ + qq_smiley_75.gif \ + qq_smiley_76.gif \ + qq_smiley_77.gif \ + qq_smiley_78.gif \ + qq_smiley_79.gif \ + qq_smiley_7.gif \ + qq_smiley_80.gif \ + qq_smiley_81.gif \ + qq_smiley_82.gif \ + qq_smiley_83.gif \ + qq_smiley_84.gif \ + qq_smiley_85.gif \ + qq_smiley_86.gif \ + qq_smiley_87.gif \ + qq_smiley_88.gif \ + qq_smiley_89.gif \ + qq_smiley_8.gif \ + qq_smiley_90.gif \ + qq_smiley_91.gif \ + qq_smiley_92.gif \ + qq_smiley_93.gif \ + qq_smiley_94.gif \ + qq_smiley_95.gif \ + qq_smiley_9.gif + YAHOO_SMILEYS = \ yahoo_alien.gif \ yahoo_alien2.gif \ @@ -194,6 +292,7 @@ $(AIM_SMILEYS) \ $(MSN_SMILEYS) \ $(YAHOO_SMILEYS) \ + $(QQ_SMILEYS) \ theme EXTRA_DIST = $(gaimsmileypix_DATA) Added: trunk/pixmaps/smileys/default/qq_smiley_0.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_0.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_1.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_1.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_10.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_10.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_11.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_11.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_12.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_12.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_13.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_13.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_14.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_14.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_15.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_15.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_16.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_16.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_17.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_17.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_18.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_18.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_19.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_19.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_2.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_2.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_20.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_20.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_21.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_21.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_22.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_22.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_23.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_23.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_24.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_24.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_25.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_25.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_26.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_26.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_27.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_27.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_28.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_28.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_29.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_29.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_3.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_3.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_30.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_30.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_31.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_31.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_32.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_32.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_33.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_33.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_34.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_34.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_35.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_35.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_36.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_36.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_37.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_37.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_38.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_38.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_39.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_39.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_4.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_4.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_40.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_40.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_41.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_41.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_42.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_42.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_43.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_43.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_44.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_44.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_45.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_45.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_46.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_46.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_47.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_47.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_48.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_48.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_49.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_49.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_5.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_5.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_50.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_50.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_51.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_51.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_52.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_52.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_53.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_53.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_54.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_54.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_55.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_55.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_56.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_56.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_57.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_57.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_58.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_58.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_59.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_59.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_6.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_6.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_60.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_60.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_61.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_61.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_62.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_62.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_63.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_63.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_64.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_64.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_65.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_65.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_66.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_66.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_67.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_67.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_68.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_68.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_69.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_69.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_7.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_7.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_70.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_70.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_71.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_71.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_72.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_72.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_73.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_73.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_74.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_74.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_75.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_75.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_76.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_76.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_77.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_77.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_78.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_78.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_79.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_79.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_8.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_8.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_80.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_80.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_81.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_81.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_82.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_82.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_83.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_83.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_84.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_84.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_85.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_85.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_86.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_86.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_87.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_87.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_88.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_88.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_89.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_89.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_9.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_9.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_90.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_90.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_91.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_91.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_92.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_92.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_93.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_93.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_94.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_94.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/pixmaps/smileys/default/qq_smiley_95.gif =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/smileys/default/qq_smiley_95.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: trunk/pixmaps/smileys/default/theme =================================================================== --- trunk/pixmaps/smileys/default/theme 2006-06-26 00:12:31 UTC (rev 16339) +++ trunk/pixmaps/smileys/default/theme 2006-06-26 02:58:54 UTC (rev 16340) @@ -37,7 +37,7 @@ msn_tongue.png :p :-P :P :-p msn_hot.png (h) (H) msn_angry.png :@ :-@ -msn_neutral.png :-| :| +msn_neutral.png :-| :| msn_weird.png :s :-S :-s :S msn_embarrassed.png :$ :-$ msn_sad.png :( :-( :-< @@ -110,6 +110,104 @@ msn_xbox.png (xx) msn_cigarette.gif (ci) +[QQ] +qq_smiley_0.gif /jy +qq_smiley_1.gif /se +qq_smiley_2.gif /pz +qq_smiley_3.gif /fd +qq_smiley_4.gif /dy +qq_smiley_5.gif /ll +qq_smiley_6.gif /hx +qq_smiley_7.gif /bz +qq_smiley_8.gif /shui +qq_smiley_9.gif /dk +qq_smiley_10.gif /gg +qq_smiley_11.gif /fn +qq_smiley_12.gif /tp +qq_smiley_13.gif /cy +qq_smiley_14.gif /wx +qq_smiley_15.gif /ng +qq_smiley_16.gif /kuk +qq_smiley_17.gif /feid +qq_smiley_18.gif /zk +qq_smiley_19.gif /tu +qq_smiley_20.gif /tx +qq_smiley_21.gif /ka +qq_smiley_22.gif /by +qq_smiley_23.gif /am +qq_smiley_24.gif /jie +qq_smiley_25.gif /kun +qq_smiley_26.gif /jk +qq_smiley_27.gif /lh +qq_smiley_28.gif /hanx +qq_smiley_29.gif /db +qq_smiley_30.gif /fendou +qq_smiley_31.gif /zhm +qq_smiley_32.gif /yiw +qq_smiley_33.gif /xu +qq_smiley_34.gif /yun +qq_smiley_35.gif /zhem +qq_smiley_36.gif /shuai +qq_smiley_37.gif /kl +qq_smiley_38.gif /qiao +qq_smiley_39.gif /zj +qq_smiley_40.gif /shan +qq_smiley_41.gif /fad +qq_smiley_42.gif /aiq +qq_smiley_43.gif /tiao +qq_smiley_44.gif /zhao +qq_smiley_45.gif /mm +qq_smiley_46.gif /zt +qq_smiley_47.gif /maom +qq_smiley_48.gif /xg +qq_smiley_49.gif /yb +qq_smiley_50.gif /qianc +qq_smiley_51.gif /dp +qq_smiley_52.gif /bei +qq_smiley_53.gif /dg +qq_smiley_54.gif /shd +qq_smiley_55.gif /zhd +qq_smiley_56.gif /dao +qq_smiley_57.gif /zq +qq_smiley_58.gif /yy +qq_smiley_59.gif /bb +qq_smiley_60.gif /gf +qq_smiley_61.gif /fan +qq_smiley_62.gif /yw +qq_smiley_63.gif /mg +qq_smiley_64.gif /dx +qq_smiley_65.gif /wen +qq_smiley_66.gif /xin +qq_smiley_67.gif /xs +qq_smiley_68.gif /hy +qq_smiley_69.gif /lw +qq_smiley_70.gif /dh +qq_smiley_71.gif /sj +qq_smiley_72.gif /yj +qq_smiley_73.gif /ds +qq_smiley_74.gif /ty +qq_smiley_75.gif /yl +qq_smiley_76.gif /qiang +qq_smiley_77.gif /ruo +qq_smiley_78.gif /ws +qq_smiley_79.gif /shl +qq_smiley_80.gif /dd +qq_smiley_81.gif /mn +qq_smiley_82.gif /hl +qq_smiley_83.gif /mamao +qq_smiley_84.gif /qz +qq_smiley_85.gif /fw +qq_smiley_86.gif /oh +qq_smiley_87.gif /bj +qq_smiley_88.gif /qsh +qq_smiley_89.gif /xig +qq_smiley_90.gif /xy +qq_smiley_91.gif /duoy +qq_smiley_92.gif /xr +qq_smiley_93.gif /xixing +qq_smiley_94.gif /nv +qq_smiley_95.gif /nan + [Yahoo] yahoo_angel.gif o:-) O:-) 0:-) yahoo_angry.gif X-( x-( X( x( Modified: trunk/pixmaps/status/default/Makefile.am =================================================================== --- trunk/pixmaps/status/default/Makefile.am 2006-06-26 00:12:31 UTC (rev 16339) +++ trunk/pixmaps/status/default/Makefile.am 2006-06-26 02:58:54 UTC (rev 16340) @@ -34,6 +34,7 @@ offline.png \ op.png \ pending.png \ + qq.png \ secure.png \ silc.png \ simple.png \ Added: trunk/pixmaps/status/default/qq.png =================================================================== (Binary files differ) Property changes on: trunk/pixmaps/status/default/qq.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: trunk/src/protocols/Makefile.am =================================================================== --- trunk/src/protocols/Makefile.am 2006-06-26 00:12:31 UTC (rev 16339) +++ trunk/src/protocols/Makefile.am 2006-06-26 02:58:54 UTC (rev 16340) @@ -1,3 +1,3 @@ -DIST_SUBDIRS = bonjour gg irc jabber msn napster novell oscar sametime silc toc simple yahoo zephyr +DIST_SUBDIRS = bonjour gg irc jabber msn napster novell oscar qq sametime silc toc simple yahoo zephyr SUBDIRS = $(DYNAMIC_PRPLS) $(STATIC_PRPLS) Added: trunk/src/protocols/qq/Makefile.am =================================================================== --- trunk/src/protocols/qq/Makefile.am (rev 0) +++ trunk/src/protocols/qq/Makefile.am 2006-06-26 02:58:54 UTC (rev 16340) @@ -0,0 +1,108 @@ +EXTRA_DIST = \ + Makefile.mingw + +pkgdir = $(libdir)/gaim + +QQSOURCES = \ + utils.c \ + utils.h \ + packet_parse.c \ + packet_parse.h \ + buddy_info.c \ + buddy_info.h \ + buddy_list.c \ + buddy_list.h \ + buddy_opt.c \ + buddy_opt.h \ + buddy_status.c \ + buddy_status.h \ + qq.c \ + char_conv.c \ + char_conv.h \ + crypt.c \ + crypt.h \ + group_admindlg.c \ + group_admindlg.h \ + group.c \ + group_conv.c \ + group_conv.h \ + group_find.c \ + group_find.h \ + group_free.c \ + group_free.h \ + group.h \ + group_hash.c \ + group_hash.h \ + group_im.c \ + group_im.h \ + group_info.c \ + group_info.h \ + group_join.c \ + group_join.h \ + group_misc.c \ + group_misc.h \ + group_network.c \ + group_network.h \ + group_opt.c \ + group_opt.h \ + group_search.c \ + group_search.h \ + qq.h \ + header_info.c \ + header_info.h \ + im.c \ + im.h \ + infodlg.c \ + infodlg.h \ + ip_location.c \ + ip_location.h \ + keep_alive.c \ + keep_alive.h \ + login_logout.c \ + login_logout.h \ + qq_proxy.c \ + qq_proxy.h \ + recv_core.c \ + recv_core.h \ + send_core.c \ + send_core.h \ + sendqueue.c \ + sendqueue.h \ + show.c \ + show.h \ + sys_msg.c \ + sys_msg.h \ + udp_proxy_s5.c \ + udp_proxy_s5.h \ + send_file.c \ + send_file.h \ + file_trans.c \ + file_trans.h + +AM_CFLAGS = $(st) + +libqq_la_LDFLAGS = -module -avoid-version + +if STATIC_QQ + +st = -DGAIM_STATIC_PRPL +noinst_LIBRARIES = libqq.a +libqq_a_SOURCES = $(QQSOURCES) +libqq_a_CFLAGS = $(AM_CFLAGS) + +else + +st = +pkg_LTLIBRARIES = libqq.la +libqq_la_SOURCES = $(QQSOURCES) + +endif + +AM_CPPFLAGS = \ + -I$(top_srcdir)/src \ + -DDATADIR=\"${datadir}\" \ + -DVERSION=\"$(VERSION)\" \ + $(DEBUG_CFLAGS) \ + $(GTK_CFLAGS) \ + $(GLIB_CFLAGS) \ + $(GAIM_CFLAGS) Property changes on: trunk/src/protocols/qq/Makefile.am ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native Added: trunk/src/protocols/qq/Makefile.in =================================================================== --- trunk/src/protocols/qq/Makefile.in (rev 0) +++ trunk/src/protocols/qq/Makefile.in 2006-06-26 02:58:54 UTC (rev 16340) @@ -0,0 +1,576 @@ +# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am + +# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include + +DESTDIR = + +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ + +top_builddir = ../../.. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +transform = @program_transform_name@ + +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_alias = @build_alias@ +build_triplet = @build@ +host_alias = @host_alias@ +host_triplet = @host@ +target_alias = @target_alias@ +target_triplet = @target@ +ALL_LINGUAS = @ALL_LINGUAS@ +AO_CFLAGS = @AO_CFLAGS@ +AO_LIBS = @AO_LIBS@ +AR = @AR@ +AS = @AS@ +AUDIOFILE_CFLAGS = @AUDIOFILE_CFLAGS@ +AUDIOFILE_CONFIG = @AUDIOFILE_CONFIG@ +AUDIOFILE_LIBS = @AUDIOFILE_LIBS@ +BINRELOC_CFLAGS = @BINRELOC_CFLAGS@ +BINRELOC_LIBS = @BINRELOC_LIBS@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CFLAGS = @CFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +DATADIRNAME = @DATADIRNAME@ +DBUS_CFLAGS = @DBUS_CFLAGS@ +DBUS_LIBS = @DBUS_LIBS@ +DBUS_SERVICES_DIR = @DBUS_SERVICES_DIR@ +DEBUG_CFLAGS = @DEBUG_CFLAGS@ +DLLTOOL = @DLLTOOL@ +DOT = @DOT@ +DOXYGEN = @DOXYGEN@ +DYNALOADER_A = @DYNALOADER_A@ +DYNAMIC_PRPLS = @DYNAMIC_PRPLS@ +ECHO = @ECHO@ +EGREP = @EGREP@ +EVOLUTION_ADDRESSBOOK_CFLAGS = @EVOLUTION_ADDRESSBOOK_CFLAGS@ +EVOLUTION_ADDRESSBOOK_LIBS = @EVOLUTION_ADDRESSBOOK_LIBS@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +GADU_CFLAGS = @GADU_CFLAGS@ +GADU_LIBS = @GADU_LIBS@ +GCJ = @GCJ@ +GCJFLAGS = @GCJFLAGS@ +GENCAT = @GENCAT@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GLIB_CFLAGS = @GLIB_CFLAGS@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GLIB_LIBS = @GLIB_LIBS@ +GLIB_MKENUMS = @GLIB_MKENUMS@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GNUTLS_CFLAGS = @GNUTLS_CFLAGS@ +GNUTLS_LIBS = @GNUTLS_LIBS@ +GOBJECT_QUERY = @GOBJECT_QUERY@ +GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@ +GSTREAMER_LIBS = @GSTREAMER_LIBS@ +GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ +GTKSPELL_LIBS = @GTKSPELL_LIBS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_LIBS = @GTK_LIBS@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_LIB = @HAVE_LIB@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +HOWL_CFLAGS = @HOWL_CFLAGS@ +HOWL_LIBS = @HOWL_LIBS@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@ +INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@ +INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@ +INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ +INTLTOOL_ICONV = @INTLTOOL_ICONV@ +INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@ +INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@ +INTLTOOL_MERGE = @INTLTOOL_MERGE@ +INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@ +INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@ +INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@ +INTLTOOL_PERL = @INTLTOOL_PERL@ +INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@ +INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@ +INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@ +INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@ +INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@ +INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@ +INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@ +INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@ +INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@ +INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ +INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@ +INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@ +INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@ +INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +KRB4_CFLAGS = @KRB4_CFLAGS@ +KRB4_LDFLAGS = @KRB4_LDFLAGS@ +KRB4_LIBS = @KRB4_LIBS@ +LDADD = @LDADD@ +LIB = @LIB@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBPERL_A = @LIBPERL_A@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBXML_CFLAGS = @LIBXML_CFLAGS@ +LIBXML_LIBS = @LIBXML_LIBS@ +LN_S = @LN_S@ +LTLIB = @LTLIB@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +MAKEINFO = @MAKEINFO@ +MEANWHILE_CFLAGS = @MEANWHILE_CFLAGS@ +MEANWHILE_LIBS = @MEANWHILE_LIBS@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MONO_CFLAGS = @MONO_CFLAGS@ +MONO_LIBS = @MONO_LIBS@ +NSS_CFLAGS = @NSS_CFLAGS@ +NSS_LIBS = @NSS_LIBS@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PERL = @PERL@ +PERL_CFLAGS = @PERL_CFLAGS@ +PERL_LIBS = @PERL_LIBS@ +PERL_MM_PARAMS = @PERL_MM_PARAMS@ +PKG_CONFIG = @PKG_CONFIG@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYTHON = @PYTHON@ +RANLIB = @RANLIB@ +RC = @RC@ +SASL_LIBS = @SASL_LIBS@ +SILC_CFLAGS = @SILC_CFLAGS@ +SILC_LIBS = @SILC_LIBS@ +SM_LIBS = @SM_LIBS@ +STARTUP_NOTIFICATION_CFLAGS = @STARTUP_NOTIFICATION_CFLAGS@ +STARTUP_NOTIFICATION_LIBS = @STARTUP_NOTIFICATION_LIBS@ +STATIC_LINK_LIBS = @STATIC_LINK_LIBS@ +STATIC_PRPLS = @STATIC_PRPLS@ +STRIP = @STRIP@ +TCL_CFLAGS = @TCL_CFLAGS@ +TCL_LIBS = @TCL_LIBS@ +TK_LIBS = @TK_LIBS@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XSS_LIBS = @XSS_LIBS@ +ZEPHYR_CFLAGS = @ZEPHYR_CFLAGS@ +ZEPHYR_LDFLAGS = @ZEPHYR_LDFLAGS@ +ZEPHYR_LIBS = @ZEPHYR_LIBS@ +enable_dbus = @enable_dbus@ +enable_dot = @enable_dot@ +enable_doxygen = @enable_doxygen@ +gaimpath = @gaimpath@ +perlpath = @perlpath@ +sedpath = @sedpath@ + +EXTRA_DIST = Makefile.mingw + + +pkgdir = $(libdir)/gaim + +QQSOURCES = utils.c utils.h packet_parse.c packet_parse.h buddy_info.c buddy_info.h buddy_list.c buddy_list.h buddy_opt.c buddy_opt.h buddy_status.c buddy_status.h qq.c char_conv.c char_conv.h crypt.c crypt.h group_admindlg.c group_admindlg.h group.c group_conv.c group_conv.h group_find.c group_find.h group_free.c group_free.h group.h group_hash.c group_hash.h group_im.c group_im.h group_info.c group_info.h group_join.c group_join.h group_misc.c group_misc.h group_network.c group_network.h group_opt.c group_opt.h group_search.c group_search.h qq.h header_info.c header_info.h im.c im.h infodlg.c infodlg.h ip_location.c ip_location.h keep_alive.c keep_alive.h login_logout.c login_logout.h qq_proxy.c qq_proxy.h recv_core.c recv_core.h send_core.c send_core.h sendqueue.c sendqueue.h show.c show.h sys_msg.c sys_msg.h udp_proxy_s5.c udp_proxy_s5.h send_file.c send_file.h file_trans.c file_trans.h + + +AM_CFLAGS = $(st) + +libqq_la_LDFLAGS = -module -avoid-version + +@STATIC_QQ_TRUE@... = -DGAIM_STATIC_PRPL +@STATIC_QQ_FALSE@... = +@STATIC_QQ_TRUE@... = libqq.a +@STATIC_QQ_TRUE@... = $(QQSOURCES) +@STATIC_QQ_TRUE@... = $(AM_CFLAGS) +@STATIC_QQ_FALSE@... = libqq.la +@STATIC_QQ_FALSE@... = $(QQSOURCES) + +AM_CPPFLAGS = -I$(top_srcdir)/src -DDATADIR=\"${datadir}\" -DVERSION=\"$(VERSION)\" $(DEBUG_CFLAGS) $(GTK_CFLAGS) $(GLIB_CFLAGS) $(GAIM_CFLAGS) + +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = ../../../config.h +CONFIG_CLEAN_FILES = +LIBRARIES = $(noinst_LIBRARIES) + + +DEFS = @DEFS@ -I. -I$(srcdir) -I../../.. +CPPFLAGS = @CPPFLAGS@ +LDFLAGS = @LDFLAGS@ +X_CFLAGS = @X_CFLAGS@ +X_LIBS = @X_LIBS@ +X_EXTRA_LIBS = @X_EXTRA_LIBS@ +X_PRE_LIBS = @X_PRE_LIBS@ +libqq_a_LIBADD = +@STATIC_QQ_TRUE@... = utils.$(OBJEXT) \ +@STATIC_QQ_TRUE@...$(OBJEXT) buddy_info.$(OBJEXT) \ +@STATIC_QQ_TRUE@...$(OBJEXT) buddy_opt.$(OBJEXT) \ +@STATIC_QQ_TRUE@...$(OBJEXT) qq.$(OBJEXT) char_conv.$(OBJEXT) \ +@STATIC_QQ_TRUE@...$(OBJEXT) group_admindlg.$(OBJEXT) \ +@STATIC_QQ_TRUE@...$(OBJEXT) group_conv.$(OBJEXT) \ +@STATIC_QQ_TRUE@...$(OBJEXT) group_free.$(OBJEXT) \ +@STATIC_QQ_TRUE@...$(OBJEXT) group_im.$(OBJEXT) \ +@STATIC_QQ_TRUE@...$(OBJEXT) group_join.$(OBJEXT) \ +@STATIC_QQ_TRUE@...$(OBJEXT) group_network.$(OBJEXT) \ +@STATIC_QQ_TRUE@...$(OBJEXT) group_search.$(OBJEXT) \ +@STATIC_QQ_TRUE@...$(OBJEXT) im.$(OBJEXT) infodlg.$(OBJEXT) \ +@STATIC_QQ_TRUE@...$(OBJEXT) keep_alive.$(OBJEXT) \ +@STATIC_QQ_TRUE@...$(OBJEXT) qq_proxy.$(OBJEXT) \ +@STATIC_QQ_TRUE@...$(OBJEXT) send_core.$(OBJEXT) \ +@STATIC_QQ_TRUE@...$(OBJEXT) show.$(OBJEXT) sys_msg.$(OBJEXT) \ +@STATIC_QQ_TRUE@...$(OBJEXT) send_file.$(OBJEXT) \ +@STATIC_QQ_TRUE@...$(OBJEXT) +LTLIBRARIES = $(pkg_LTLIBRARIES) + +libqq_la_LIBADD = +@STATIC_QQ_FALSE@... = utils.lo packet_parse.lo \ +@STATIC_QQ_FALSE@... buddy_list.lo buddy_opt.lo \ +@STATIC_QQ_FALSE@... qq.lo char_conv.lo crypt.lo \ +@STATIC_QQ_FALSE@... group.lo group_conv.lo group_find.lo \ +@STATIC_QQ_FALSE@... group_hash.lo group_im.lo group_info.lo \ +@STATIC_QQ_FALSE@... group_misc.lo group_network.lo \ +@STATIC_QQ_FALSE@... group_search.lo header_info.lo im.lo \ +@STATIC_QQ_FALSE@... ip_location.lo keep_alive.lo \ +@STATIC_QQ_FALSE@... qq_proxy.lo recv_core.lo send_core.lo \ +@STATIC_QQ_FALSE@... show.lo sys_msg.lo udp_proxy_s5.lo \ +@STATIC_QQ_FALSE@... file_trans.lo +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ +DIST_COMMON = Makefile.am Makefile.in + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = tar +GZIP_ENV = --best +DEP_FILES = .deps/buddy_info.P .deps/buddy_list.P .deps/buddy_opt.P \ +.deps/buddy_status.P .deps/char_conv.P .deps/crypt.P .deps/file_trans.P \ +.deps/group.P .deps/group_admindlg.P .deps/group_conv.P \ +.deps/group_find.P .deps/group_free.P .deps/group_hash.P \ +.deps/group_im.P .deps/group_info.P .deps/group_join.P \ +.deps/group_misc.P .deps/group_network.P .deps/group_opt.P \ +.deps/group_search.P .deps/header_info.P .deps/im.P .deps/infodlg.P \ +.deps/ip_location.P .deps/keep_alive.P .deps/login_logout.P \ +.deps/packet_parse.P .deps/qq.P .deps/qq_proxy.P .deps/recv_core.P \ +.deps/send_core.P .deps/send_file.P .deps/sendqueue.P .deps/show.P \ +.deps/sys_msg.P .deps/udp_proxy_s5.P .deps/utils.P +SOURCES = $(libqq_a_SOURCES) $(libqq_la_SOURCES) +OBJECTS = $(libqq_a_OBJECTS) $(libqq_la_OBJECTS) + +all: all-redirect +.SUFFIXES: +.SUFFIXES: .S .c .lo .o .obj .s +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --gnu src/protocols/qq/Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + + +mostlyclean-noinstLIBRARIES: + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) + +distclean-noinstLIBRARIES: + +maintainer-clean-noinstLIBRARIES: + +# FIXME: We should only use cygpath when building on Windows, +# and only if it is available. +.c.obj: + $(COMPILE) -c `cygpath -w $<` + +.s.o: + $(COMPILE) -c $< + +.S.o: + $(COMPILE) -c $< + +mostlyclean-compile: + -rm -f *.o core *.core + -rm -f *.$(OBJEXT) + +clean-compile: + +distclean-compile: + -rm -f *.tab.c + +maintainer-clean-compile: + +.s.lo: + $(LIBTOOL) --mode=compile $(COMPILE) -c $< + +.S.lo: + $(LIBTOOL) --mode=compile $(COMPILE) -c $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + +maintainer-clean-libtool: + +libqq.a: $(libqq_a_OBJECTS) $(libqq_a_DEPENDENCIES) + -rm -f libqq.a + $(AR) cru libqq.a $(libqq_a_OBJECTS) $(libqq_a_LIBADD) + $(RANLIB) libqq.a + +mostlyclean-pkgLTLIBRARIES: + +clean-pkgLTLIBRARIES: + -test -z "$(pkg_LTLIBRARIES)" || rm -f $(pkg_LTLIBRARIES) + +distclean-pkgLTLIBRARIES: + +maintainer-clean-pkgLTLIBRARIES: + +install-pkgLTLIBRARIES: $(pkg_LTLIBRARIES) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(pkgdir) + @list='$(pkg_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + echo "$(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(pkgdir)/$$p"; \ + $(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(pkgdir)/$$p; \ + else :; fi; \ + done + +uninstall-pkgLTLIBRARIES: + @$(NORMAL_UNINSTALL) + list='$(pkg_LTLIBRARIES)'; for p in $$list; do \ + $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(pkgdir)/$$p; \ + done + +libqq.la: $(libqq_la_OBJECTS) $(libqq_la_DEPENDENCIES) + $(LINK) -rpath $(pkgdir) $(libqq_la_LDFLAGS) $(libqq_la_OBJECTS) $(libqq_la_LIBADD) $(LIBS) + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + here=`pwd` && cd $(srcdir) \ + && mkid -f$$here/ID $$unique $(LISP) + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ + || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags $$unique $(LISP)) + +mostlyclean-tags: + +clean-tags: + +distclean-tags: + -rm -f TAGS ID + +maintainer-clean-tags: + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) + +subdir = src/protocols/qq + +distdir: $(DISTFILES) + here=`cd $(top_builddir) && pwd`; \ + top_distdir=`cd $(top_distdir) && pwd`; \ + distdir=`cd $(distdir) && pwd`; \ + cd $(top_srcdir) \ + && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu src/protocols/qq/Makefile + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + if test -d $$d/$$file; then \ + cp -pr $$d/$$file $(distdir)/$$file; \ + else \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file || :; \ + fi; \ + done + +DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :) + +-include $(DEP_FILES) + +mostlyclean-depend: + +clean-depend: + +distclean-depend: + -rm -rf .deps + +maintainer-clean-depend: + +%.o: %.c + @echo '$(COMPILE) -c $<'; \ + $(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $< + @-cp .deps/$(*F).pp .deps/$(*F).P; \ + tr ' ' '\012' < .deps/$(*F).pp \ + | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ + >> .deps/$(*F).P; \ + rm .deps/$(*F).pp + +%.lo: %.c + @echo '$(LTCOMPILE) -c $<'; \ + $(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $< + @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \ + < .deps/$(*F).pp > .deps/$(*F).P; \ + tr ' ' '\012' < .deps/$(*F).pp \ + | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ + >> .deps/$(*F).P; \ + rm -f .deps/$(*F).pp +info-am: +info: info-am +dvi-am: +dvi: dvi-am +check-am: all-am +check: check-am +installcheck-am: +installcheck: installcheck-am +install-exec-am: +install-exec: install-exec-am + +install-data-am: install-pkgLTLIBRARIES +install-data: install-data-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +install: install-am +uninstall-am: uninstall-pkgLTLIBRARIES +uninstall: uninstall-am +all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) +all-redirect: all-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install +installdirs: + $(mkinstalldirs) $(DESTDIR)$(pkgdir) + + +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + -rm -f config.cache config.log stamp-h stamp-h[0-9]* + +maintainer-clean-generic: +mostlyclean-am: mostlyclean-noinstLIBRARIES mostlyclean-compile \ + mostlyclean-libtool mostlyclean-pkgLTLIBRARIES \ + mostlyclean-tags mostlyclean-depend mostlyclean-generic + +mostlyclean: mostlyclean-am + +clean-am: clean-noinstLIBRARIES clean-compile clean-libtool \ + clean-pkgLTLIBRARIES clean-tags clean-depend \ + clean-generic mostlyclean-am + +clean: clean-am + +distclean-am: distclean-noinstLIBRARIES distclean-compile \ + distclean-libtool distclean-pkgLTLIBRARIES \ + distclean-tags distclean-depend distclean-generic \ + clean-am + -rm -f libtool + +distclean: distclean-am + +maintainer-clean-am: maintainer-clean-noinstLIBRARIES \ + maintainer-clean-compile maintainer-clean-libtool \ + maintainer-clean-pkgLTLIBRARIES maintainer-clean-tags \ + maintainer-clean-depend maintainer-clean-generic \ + distclean-am + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +maintainer-clean: maintainer-clean-am + +.PHONY: mostlyclean-noinstLIBRARIES distclean-noinstLIBRARIES \ +clean-noinstLIBRARIES maintainer-clean-noinstLIBRARIES \ +mostlyclean-compile distclean-compile clean-compile \ +maintainer-clean-compile mostlyclean-libtool distclean-libtool \ +clean-libtool maintainer-clean-libtool mostlyclean-pkgLTLIBRARIES \ +distclean-pkgLTLIBRARIES clean-pkgLTLIBRARIES \ +maintainer-clean-pkgLTLIBRARIES uninstall-pkgLTLIBRARIES \ +install-pkgLTLIBRARIES tags mostlyclean-tags distclean-tags clean-tags \ +maintainer-clean-tags distdir mostlyclean-depend distclean-depend \ +clean-depend maintainer-clean-depend info-am info dvi-am dvi check \ +check-am installcheck-am installcheck install-exec-am install-exec \ +install-data-am install-data install-am install uninstall-am uninstall \ +all-redirect all-am all installdirs mostlyclean-generic \ +distclean-generic clean-generic maintainer-clean-generic clean \ +mostlyclean distclean maintainer-clean + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: Property changes on: trunk/src/protocols/qq/Makefile.in ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native Added: trunk/src/protocols/qq/Makefile.mingw =================================================================== --- trunk/src/protocols/qq/Makefile.mingw (rev 0) +++ trunk/src/protocols/qq/Makefile.mingw 2006-06-26 02:58:54 UTC (rev 16340) @@ -0,0 +1,176 @@ +# +# Makefile.mingw +# +# Description: Makefile for win32 (mingw) version of OpenQ src +# + +# +# PATHS +# + +INCLUDE_DIR := . +OPENQ_TOP := ../ +GTK_TOP := ../../../../win32-dev/gtk_2_0 +GAIM_TOP := ../../.. +OPENQ_ROOT := . +GAIM_INSTALL_DIR := $(GAIM_TOP)/win32-install-dir + +## +## VARIABLE DEFINITIONS +## + +TARGET = openq + +TYPE = PLUGIN + +OPENQ_VERSION := $(shell cat $(OPENQ_TOP)/VERSION) + +# Compiler Options + +CFLAGS = + +DEFINES = -DOPENQ_VERSION=\"$(OPENQ_VERSION)\" + +# Static or Plugin... +ifeq ($(TYPE),STATIC) + DEFINES += -DSTATIC + DLL_INSTALL_DIR = $(GAIM_INSTALL_DIR) +else +ifeq ($(TYPE),PLUGIN) + DLL_INSTALL_DIR = $(GAIM_INSTALL_DIR)/plugins +endif +endif + + +## +## INCLUDE MAKEFILES +## + +include $(GAIM_TOP)/src/win32/global.mak + +## +## INCLUDE PATHS +## + +INCLUDE_PATHS += \ + -I$(OPENQ_ROOT) \ + -I$(GTK_TOP)/include \ + -I$(GTK_TOP)/include/gtk-2.0 \ + -I$(GTK_TOP)/include/glib-2.0 \ + -I$(GTK_TOP)/include/pango-1.0 \ + -I$(GTK_TOP)/include/atk-1.0 \ + -I$(GTK_TOP)/lib/glib-2.0/include \ + -I$(GTK_TOP)/lib/gtk-2.0/include \ + -I$(GAIM_TOP)/src \ + -I$(GAIM_TOP)/src/win32 \ + -I$(GAIM_TOP) + +LIB_PATHS = \ + -L$(GTK_TOP)/lib \ + -L$(GAIM_TOP)/src + +## +## SOURCES, OBJECTS +## + +C_SRC = \ + buddy_info.c \ + buddy_list.c \ + buddy_opt.c \ + buddy_status.c \ + char_conv.c \ + crypt.c \ + file_trans.c \ + group.c \ + group_admindlg.c \ + group_conv.c \ + group_find.c \ + group_free.c \ + group_hash.c \ + group_im.c \ + group_info.c \ + group_join.c \ + group_misc.c \ + group_network.c \ + group_opt.c \ + group_search.c \ + header_info.c \ + im.c \ + infodlg.c \ + ip_location.c \ + keep_alive.c \ + login_logout.c \ + packet_parse.c \ + qq.c \ + qq_proxy.c \ + recv_core.c \ + send_core.c \ + send_file.c \ + sendqueue.c \ + show.c \ + sys_msg.c \ + udp_proxy_s5.c \ + utils.c + +OBJECTS = $(C_SRC:%.c=%.o) + +## +## LIBRARIES +## + +LIBS = \ + -lgtk-win32-2.0 \ + -lglib-2.0 \ + -lgdk-win32-2.0 \ + -lgdk_pixbuf-2.0 \ + -lgmodule-2.0 \ + -lgobject-2.0 \ + -lws2_32 \ + -lintl \ + -lgaim + +## +## RULES +## + +# How to make a C file + +%.o: %.c + $(CC) $(CFLAGS) $(DEFINES) $(INCLUDE_PATHS) -o $@ -c $< + +## +## TARGET DEFINITIONS +## + +.PHONY: all clean + +all: $(TARGET).dll + +install: + mkdir -p $(DLL_INSTALL_DIR) + cp $(OPENQ_ROOT)/$(TARGET).dll $(DLL_INSTALL_DIR) + + +## +## BUILD Dependencies +## + +$(GAIM_TOP)/src/gaim.lib: + $(MAKE) -C $(GAIM_TOP)/src -f Makefile.mingw gaim.lib + +## +## BUILD DLL +## + +$(TARGET).dll: $(OBJECTS) $(GAIM_TOP)/src/gaim.lib + $(CC) -shared $(OBJECTS) $(LIB_PATHS) $(LIBS) $(DLL_LD_FLAGS) -o $(TARGET).dll + +## +## CLEAN RULES +## + +clean: + rm -rf *.o + rm -rf $(TARGET).dll + rm -rf $(TARGET).lib + Property changes on: trunk/src/protocols/qq/Makefile.mingw ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native Added: trunk/src/protocols/qq/TODO =================================================================== --- trunk/src/protocols/qq/TODO (rev 0) +++ trunk/src/protocols/qq/TODO 2006-06-26 02:58:54 UTC (rev 16340) @@ -0,0 +1,18 @@ +* Decide how to handle QQ status icons, which are customizable and legion. +* Give "Online Offline" and "My Offline" statuses appropriate titles. +* Handle emoticon at beginning of message via passthrough_unknown_commands. +* Fix file transfer. +* QQ protocol currently breaks Chinese localization of Gaim. Fix this. +* Fix ability to insert images into a conversation via the menubar. +* Fix _qq_menu_block_buddy in qq.c +* Eliminate all references to QQWry.dat and the geolocation lookup feature previously present OpenQ. +* Give smileys verbal instead of numerical titles. +* Clean up signedness warnings. +* Clean up mixed declaration and code warnings. +* Better decomposition: +** some of these functions are _really_ long +** buddy_status.c has a helper function which seems to belong in buddy_status.c +** consider cleaning up qq_encrypt (nested function declarations) +** eliminate group_misc.c +** investigate whether all of these externs are appropriate +* Check for memory leaks. Property changes on: trunk/src/protocols/qq/TODO ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native Added: trunk/src/protocols/qq/buddy_info.c =================================================================== --- trunk/src/protocols/qq/buddy_info.c (rev 0) +++ trunk/src/protocols/qq/buddy_info.c 2006-06-26 02:58:54 UTC (rev 16340) @@ -0,0 +1,274 @@ +/** + * The QQ2003C protocol plugin + * + * for gaim + * + * Copyright (C) 2004 Puzzlebird + * + * 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 + */ + +// START OF FILE +/*****************************************************************************/ +#include "internal.h" // strlen, _("get_text) +#include "debug.h" // gaim_debug +#include "notify.h" // gaim_notify + +#include "utils.h" // uid_to_gaim_name +#include "packet_parse.h" // MAX_PACKET_SIZE +#include "buddy_info.h" // +#include "char_conv.h" // qq_to_utf8 +#include "crypt.h" // qq_crypt +#include "header_info.h" // cmd alias +#include "infodlg.h" // info_window +#include "keep_alive.h" // qq_update_buddy_contact +#include "send_core.h" // qq_send_cmd + +// amount of fiedls in user info +#define QQ_CONTACT_FIELDS 37 + +// There is no user id stored in the reply packet for information query +// we have to manually store the query, so that we know the query source +typedef struct _qq_info_query { + guint32 uid; + gboolean show_window; + contact_info *ret_info; +} qq_info_query; + +/*****************************************************************************/ +// send a packet to get detailed information of uid, +// if show_window, a info window will be display upon receiving a reply +void qq_send_packet_get_info(GaimConnection * gc, guint32 uid, gboolean show_window) +{ + qq_data *qd; + gchar *uid_str; + GList *list; + qq_info_query *query; + gboolean is_exist; + contact_info_window *info_window; + + g_return_if_fail(gc != NULL && gc->proto_data != NULL && uid != 0); + + qd = (qq_data *) gc->proto_data; + uid_str = g_strdup_printf("%d", uid); + qq_send_cmd(gc, QQ_CMD_GET_USER_INFO, TRUE, 0, TRUE, uid_str, strlen(uid_str)); + + if (show_window) { // prepare the window + is_exist = FALSE; // see if there is already a window for this uid + list = qd->contact_info_window; + while (list != NULL) { + info_window = (contact_info_window *) list->data; + if (uid == info_window->uid) { + is_exist = TRUE; + break; + } else + list = list->next; + } // while list + if (!is_exist) { // create a new one + info_window = g_new0(contact_info_window, 1); + info_window->uid = uid; + qd->contact_info_window = g_list_append(qd->contact_info_window, info_window); + } // if !is_exist + } // if show_window + + query = g_new0(qq_info_query, 1); + query->uid = uid; + query->show_window = show_window; + qd->info_query = g_list_append(qd->info_query, query); + + g_free(uid_str); +} // qq_send_packet_get_info + +/*****************************************************************************/ +// send packet to modify personal information, and/or change password +void qq_send_packet_modify_info(GaimConnection * gc, contact_info * info, gchar * new_passwd) +{ + GaimAccount *a; + gchar *old_passwd, *info_field[QQ_CONTACT_FIELDS]; + gint i; + guint8 *raw_data, *cursor, bar; + + g_return_if_fail(gc != NULL && info != NULL); + + a = gc->account; + old_passwd = a->password; + bar = 0x1f; + raw_data = g_newa(guint8, MAX_PACKET_SIZE - 128); + cursor = raw_data; + + g_memmove(info_field, info, sizeof(gchar *) * QQ_CONTACT_FIELDS); + + if (new_passwd == NULL || strlen(new_passwd) == 0) + create_packet_b(raw_data, &cursor, bar); + else { // we gonna change passwd + create_packet_data(raw_data, &cursor, old_passwd, strlen(old_passwd)); + create_packet_b(raw_data, &cursor, bar); + create_packet_data(raw_data, &cursor, new_passwd, strlen(new_passwd)); + } + + // important!, skip the first uid entry + for (i = 1; i < QQ_CONTACT_FIELDS; i++) { + create_packet_b(raw_data, &cursor, bar); + create_packet_data(raw_data, &cursor, info_field[i], strlen(info_field[i])); + } + create_packet_b(raw_data, &cursor, bar); + + qq_send_cmd(gc, QQ_CMD_UPDATE_INFO, TRUE, 0, TRUE, raw_data, cursor - raw_data); + +} // qq_send_packet_modify_info + +/*****************************************************************************/ +// process the reply of modidy_info packet +void qq_process_modify_info_reply(guint8 * buf, gint buf_len, GaimConnection * gc) +{ + qq_data *qd; + gint len; + guint8 *data; + + g_return_if_fail(gc != NULL && gc->proto_data != NULL); + g_return_if_fail(buf != NULL && buf_len != 0); + + qd = (qq_data *) gc->proto_data; + len = buf_len; + data = g_newa(guint8, len); + + if (qq_crypt(DECRYPT, buf, buf_len, qd->session_key, data, &len)) { + if (qd->uid == atoi(data)) { // return should be my uid + gaim_debug(GAIM_DEBUG_INFO, "QQ", "Update info ACK OK\n"); + gaim_notify_info(gc, NULL, _("You information have been updated"), NULL); + } + } else + gaim_debug(GAIM_DEBUG_ERROR, "QQ", "Error decrypt modify info reply\n"); + +} // qq_process_modify_info_reply + +/*****************************************************************************/ +// after getting info or modify myself, refresh the buddy list accordingly +void qq_refresh_buddy_and_myself(contact_info * info, GaimConnection * gc) +{ + GaimBuddy *b; + qq_data *qd; + qq_buddy *q_bud; + gchar *alias_utf8; + + g_return_if_fail(gc != NULL && gc->proto_data != NULL); + qd = (qq_data *) gc->proto_data; + + alias_utf8 = qq_to_utf8(info->nick, QQ_CHARSET_DEFAULT); + if (qd->uid == strtol(info->uid, NULL, 10)) { // it is me + qd->my_icon = strtol(info->face, NULL, 10); + if (alias_utf8 != NULL) + gaim_account_set_alias(gc->account, alias_utf8); + } + // update buddy list (including myself, if myself is the buddy) + b = gaim_find_buddy(gc->account, uid_to_gaim_name(strtol(info->uid, NULL, 10))); + q_bud = (b == NULL) ? NULL : (qq_buddy *) b->proto_data; + if (q_bud != NULL) { // I have this buddy + q_bud->age = strtol(info->age, NULL, 10); + q_bud->gender = strtol(info->gender, NULL, 10); + q_bud->icon = strtol(info->face, NULL, 10); + if (alias_utf8 != NULL) + q_bud->nickname = g_strdup(alias_utf8); + qq_update_buddy_contact(gc, q_bud); + } // if q_bud + g_free(alias_utf8); +} // qq_refresh_buddy_and_myself + +/*****************************************************************************/ +// process reply to get_info packet +void qq_process_get_info_reply(guint8 * buf, gint buf_len, GaimConnection * gc) +{ + gint len; + guint8 *data; + gchar **segments; + qq_info_query *query; + qq_data *qd; + contact_info *info; + contact_info_window *info_window; + gboolean show_window; + GList *list, *query_list; + + g_return_if_fail(gc != NULL && gc->proto_data != NULL); + g_return_if_fail(buf != NULL && buf_len != 0); + + qd = (qq_data *) gc->proto_data; + list = query_list = NULL; + len = buf_len; + data = g_newa(guint8, len); + info = NULL; + + if (qq_crypt(DECRYPT, buf, buf_len, qd->session_key, data, &len)) { + if (NULL == (segments = split_data(data, len, "\x1e", QQ_CONTACT_FIELDS))) + return; + + info = (contact_info *) segments; + qq_refresh_buddy_and_myself(info, gc); + + query_list = qd->info_query; + show_window = FALSE; + while (query_list != NULL) { + query = (qq_info_query *) query_list->data; + if (query->uid == atoi(info->uid)) { + show_window = query->show_window; + qd->info_query = g_list_remove(qd->info_query, qd->info_query->data); + g_free(query); + break; + } + query_list = query_list->next; + } // while query_list + + if (!show_window) { + g_strfreev(segments); + return; + } + // if not show_window, we can not find the window here either + list = qd->contact_info_window; + while (list != NULL) { + info_window = (contact_info_window *) (list->data); + if (info_window->uid == atoi(info->uid)) { + if (info_window->window) + qq_refresh_contact_info_dialog(info, gc, info_window); + else + qq_show_contact_info_dialog(info, gc, info_window); + break; + } else + list = list->next; + } // while list + g_strfreev(segments); + } else + gaim_debug(GAIM_DEBUG_ERROR, "QQ", "Error decrypt get info reply\n"); + +} // qq_process_get_info_reply + +/*****************************************************************************/ +void qq_info_query_free(qq_data * qd) +{ + gint i; + qq_info_query *p; + + g_return_if_fail(qd != NULL); + + i = 0; + while (qd->info_query != NULL) { + p = (qq_info_query *) (qd->info_query->data); + qd->info_query = g_list_remove(qd->info_query, p); + g_free(p); + i++; + } + gaim_debug(GAIM_DEBUG_INFO, "QQ", "%d info queries are freed!\n", i); +} // qq_add_buddy_request_free + +/*****************************************************************************/ +// END OF FILE Property changes on: trunk/src/protocols/qq/buddy_info.c ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native Added: trunk/src/protocols/qq/buddy_info.h =================================================================== --- trunk/src/protocols/qq/buddy_info.h (rev 0) +++ trunk/src/protocols/qq/buddy_info.h 2006-06-26 02:58:54 UTC (rev 16340) @@ -0,0 +1,94 @@ +/** + * The QQ2003C protocol plugin + * + * for gaim + * + * Copyright (C) 2004 Puzzlebird + * + * 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 + */ + +// START OF FILE +/*****************************************************************************/ +#ifndef _QQ_BUDDY_INFO_H_ +#define _QQ_BUDDY_INFO_H_ + +#include <glib.h> +#include "connection.h" // GaimConnection +#include "buddy_opt.h" // gc_and_uid +#include "qq.h" // qq_data + +#define QQ_COMM_FLAG_QQ_MEMBER 0x02 +#define QQ_COMM_FLAG_TCP_MODE 0x10 +#define QQ_COMM_FLAG_MOBILE 0x20 +#define QQ_COMM_FLAG_BIND_MOBILE 0x40 +#define QQ_COMM_FLAG_VIDEO 0x80 + +#define QQ_BUDDY_GENDER_GG 0x00 +#define QQ_BUDDY_GENDER_MM 0x01 +#define QQ_BUDDY_GENDER_UNKNOWN 0xff + +typedef struct _contact_info contact_info; + +struct _contact_info { + gchar *uid; //0 + gchar *nick; //1 + gchar *country; //2 + gchar *province; //3 + gchar *zipcode; //4 + gchar *address; //5 + gchar *tel; //6 + gchar *age; //7 + gchar *gender; //8 + gchar *name; //9 + gchar *email; //10 + gchar *pager_sn; //11 + gchar *pager_num; //12 + gchar *pager_sp; //13 + gchar *pager_base_num; //14 + gchar *pager_type; //15 + gchar *occupation; //16 + gchar *homepage; //17 + gchar *auth_type; //18 + gchar *unknown1; //19 + gchar *unknown2; //20 + gchar *face; //21 + gchar *hp_num; //22 + gchar *hp_type; //23 + gchar *intro; //24 + gchar *city; //25 + gchar *unknown3; //26 + gchar *unknown4; //27 + gchar *unknown5; //28 + gchar *is_open_hp; //29 + gchar *is_open_contact; //30 + gchar *college; //31 + gchar *horoscope; //32 + gchar *zodiac; //33 sheng xiao + gchar *blood; //34 + gchar *qq_show; //35 + gchar *unknown6; //36, always 0x2D +}; + +void qq_refresh_buddy_and_myself(contact_info * info, GaimConnection * gc); +void qq_send_packet_get_info(GaimConnection * gc, guint32 uid, gboolean show_window); +void qq_send_packet_modify_info(GaimConnection * gc, contact_info * info, gchar * new_passwd); +void qq_process_modify_info_reply(guint8 * buf, gint buf_len, GaimConnection * gc); +void qq_process_get_info_reply(guint8 * buf, gint buf_len, GaimConnection * gc); +void qq_info_query_free(qq_data * qd); + +#endif +/*****************************************************************************/ +// END OF FILE Property changes on: trunk/src/protocols/qq/buddy_info.h ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native Added: trunk/src/protocols/qq/buddy_list.c =================================================================== --- trunk/src/protocols/qq/buddy_list.c (rev 0) +++ trunk/src/protocols/qq/buddy_list.c 2006-06-26 02:58:54 UTC (rev 16340) @@ -0,0 +1,444 @@ +/** +* The QQ2003C protocol plugin + * + * for gaim + * + * Copyright (C) 2004 Puzzlebird + * + * 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 + */ + +// START OF FILE +/*****************************************************************************/ +#include <string.h> // g_memmove, memmove +#include "debug.h" // gaim_debug + +#include "notify.h" // gaim_notify +#include "utils.h" // get_ip_str +#include "packet_parse.h" // create_packet, read_packet +#include "buddy_list.h" +#include "buddy_status.h" // qq_buddy_status +#include "buddy_opt.h" // qq_add_buddy_by_recv_packet +#include "char_conv.h" // qq_to_utf8 +#include "crypt.h" // qq_crypt +#include "header_info.h" // cmd alias +#include "keep_alive.h" // qq_refresh_all_buddy_status +#include "send_core.h" // qq_send_cmd +#include "qq.h" // qq_data +#include "group.h" // qq_group, by gfhuang +#include "group_find.h" // qq_group_find +#include "group_hash.h" //qq_group_create_by_id +#include "group_info.h" //qq_send_cmd_group_get_group_info + +#define QQ_GET_ONLINE_BUDDY_02 0x02 +#define QQ_GET_ONLINE_BUDDY_03 0x03 // unknown function + +#define QQ_ONLINE_BUDDY_ENTRY_LEN 38 + +typedef struct _qq_friends_online_entry { + qq_buddy_status *s; + guint16 unknown1; + guint8 flag1; + guint8 comm_flag; + guint16 unknown2; + guint8 ending; //0x00 +} qq_friends_online_entry; + +//TODO: defined in qq_buddy_status.c, but only used here. Check decomposition. +extern void // defined in qq_buddy_status.c + _qq_buddy_status_dump_unclear(qq_buddy_status * s); + +extern gint // defined in qq_buddy_status.c + _qq_buddy_status_read(guint8 * data, guint8 ** cursor, gint len, qq_buddy_status * s); + +/*****************************************************************************/ +// get a list of online_buddies +void qq_send_packet_get_buddies_online(GaimConnection * gc, guint8 position) +{ + qq_data *qd; + guint8 *raw_data, *cursor; + + g_return_if_fail(gc != NULL && gc->proto_data != NULL); + + qd = (qq_data *) gc->proto_data; + raw_data = g_newa(guint8, 5); + cursor = raw_data; + + // 000-000 get online friends cmd + // only 0x02 and 0x03 returns info from server, other valuse all return 0xff + // I can also only send the first byte (0x02, or 0x03) + // and the result is the same + create_packet_b(raw_data, &cursor, QQ_GET_ONLINE_BUDDY_02); + // 001-001 seems it supports 255 online buddies at most + create_packet_b(raw_data, &cursor, position); + // 002-002 + create_packet_b(raw_data, &cursor, 0x00); + // 003-004 + create_packet_w(raw_data, &cursor, 0x0000); + + qq_send_cmd(gc, QQ_CMD_GET_FRIENDS_ONLINE, TRUE, 0, TRUE, raw_data, 5); + qd->last_get_online = time(NULL); + +} // qq_send_packet_get_buddies_online + +/*****************************************************************************/ +// position starts with 0x0000, +// server may return a position tag if list is too long for one packet +void qq_send_packet_get_buddies_list(GaimConnection * gc, guint16 position) +{ + guint8 *raw_data, *cursor; + gint data_len; + + g_return_if_fail(gc != NULL); + + data_len = 3; + raw_data = g_newa(guint8, data_len); + cursor = raw_data; + // 000-001 starting position, can manually specify + create_packet_w(raw_data, &cursor, position); + // before Mar 18, 2004, any value can work, and we sent 00 + // I do not know what data QQ server is expecting, as QQ2003iii 0304 itself + // even can sending packets 00 and get no response. + // Now I tested that 00,00,00,00,00,01 work perfectly + // March 22, fount the 00,00,00 starts to work as well + create_packet_b(raw_data, &cursor, 0x00); + + qq_send_cmd(gc, QQ_CMD_GET_FRIENDS_LIST, TRUE, 0, TRUE, raw_data, data_len); + +} // qq_send_packet_get_buddies_list + +// get all list, buddies & Quns with groupsid support, written by gfhuang +void qq_send_packet_get_all_list_with_group(GaimConnection *gc, guint32 position) +{ + guint8 *raw_data, *cursor; + gint data_len; + + g_return_if_fail(gc != NULL); + + data_len = 10; + raw_data = g_newa(guint8, data_len); + cursor = raw_data; + // 0x01 download, 0x02, upload + create_packet_b(raw_data, &cursor, 0x01); + //unknown 0x02 + create_packet_b(raw_data, &cursor, 0x02); + //unknown 00 00 00 00 + create_packet_dw(raw_data, &cursor, 0x00000000); + create_packet_dw(raw_data, &cursor, position); + + qq_send_cmd(gc, QQ_CMD_GET_ALL_LIST_WITH_GROUP, TRUE, 0, TRUE, raw_data, data_len); +} + +/*****************************************************************************/ +static void _qq_buddies_online_reply_dump_unclear(qq_friends_online_entry * fe) +{ + GString *dump; + + g_return_if_fail(fe != NULL); + + _qq_buddy_status_dump_unclear(fe->s); + + dump = g_string_new(""); + g_string_append_printf(dump, "unclear fields for [%d]:\n", fe->s->uid); + g_string_append_printf(dump, "031-032: %04x (unknown)\n", fe->unknown1); + g_string_append_printf(dump, "033: %02x (flag1)\n", fe->flag1); + g_string_append_printf(dump, "034: %02x (comm_flag)\n", fe->comm_flag); + g_string_append_printf(dump, "035-036: %04x (unknown)\n", fe->unknown2); + + gaim_debug(GAIM_DEBUG_INFO, "QQ", "Online buddy entry, %s", dump->str); + g_string_free(dump, TRUE); +} // _qq_buddies_online_reply_dump_unknown + +/*****************************************************************************/ +// process the reply packet for get_buddies_online packet +void qq_process_get_buddies_online_reply(guint8 * buf, gint buf_len, GaimConnection * gc) { + + qq_data *qd; + gint len, bytes; + guint8 *data, *cursor, position; + GaimBuddy *b; + qq_buddy *q_bud; + qq_friends_online_entry *fe; + + g_return_if_fail(gc != NULL && gc->proto_data != NULL); + g_return_if_fail(buf != NULL && buf_len != 0); + + qd = (qq_data *) gc->proto_data; + len = buf_len; + data = g_newa(guint8, len); + cursor = data; + + if (qq_crypt(DECRYPT, buf, buf_len, qd->session_key, data, &len)) { + + read_packet_b(data, &cursor, len, &position); + fe = g_newa(qq_friends_online_entry, 1); + fe->s = g_newa(qq_buddy_status, 1); + + while (cursor < (data + len)) { + // based on one online buddy entry + bytes = 0; + // 000-030 qq_buddy_status + bytes += _qq_buddy_status_read(data, &cursor, len, fe->s); + // 031-032: unknown4 + bytes += read_packet_w(data, &cursor, len, &fe->unknown1); + // 033-033: flag1 + bytes += read_packet_b(data, &cursor, len, &fe->flag1); + // 034-034: comm_flag + bytes += read_packet_b(data, &cursor, len, &fe->comm_flag); + // 035-036: + bytes += read_packet_w(data, &cursor, len, &fe->unknown2); + // 037-037: + bytes += read_packet_b(data, &cursor, len, &fe->ending); // 0x00 + + if (fe->s->uid == 0 || bytes != QQ_ONLINE_BUDDY_ENTRY_LEN) { + gaim_debug(GAIM_DEBUG_ERROR, "QQ", "uid=0 or entry complete len(%d) != %d", bytes, QQ_ONLINE_BUDDY_ENTRY_LEN); + g_free(fe->s->ip); + g_free(fe->s->unknown_key); + continue; + } // check if it is a valid entry + +// if (QQ_DEBUG) +// _qq_buddies_online_reply_dump_unclear(fe); + + // update buddy information + b = gaim_find_buddy(gaim_connection_get_account(gc), uid_to_gaim_name(fe->s->uid)); + q_bud = (b == NULL) ? NULL : (qq_buddy *) b->proto_data; + + if (q_bud != NULL) { // we find one and update qq_buddy + if(0 != fe->s->client_version) + q_bud->client_version = fe->s->client_version; //by gfhuang + if(0 != *((guint32 *)fe->s->ip)) { // by gfhuang + g_memmove(q_bud->ip, fe->s->ip, 4); + q_bud->port = fe->s->port; + } + q_bud->status = fe->s->status; + q_bud->flag1 = fe->flag1; + q_bud->comm_flag = fe->comm_flag; + qq_update_buddy_contact(gc, q_bud); + } // if q_bud + else { + gaim_debug(GAIM_DEBUG_ERROR, "QQ", "Got an online buddy %d, but not in my buddy list", fe->s->uid); + } + + g_free(fe->s->ip); + g_free(fe->s->unknown_key); + } // while cursor + + if(cursor > (data + len)) { + gaim_debug(GAIM_DEBUG_ERROR, "QQ", "qq_process_get_buddies_online_reply: Dangerous error! maybe protocal changed, notify me!"); + } + + if (position != QQ_FRIENDS_ONLINE_POSITION_END) { + gaim_debug(GAIM_DEBUG_INFO, "QQ", "Has more online buddies, position from %d", position); + + qq_send_packet_get_buddies_online(gc, position); + } + else + qq_refresh_all_buddy_status(gc); + + } else + gaim_debug(GAIM_DEBUG_ERROR, "QQ", "Error decrypt buddies online"); + +} // qq_process_get_buddies_online_reply + +/*****************************************************************************/ +// process reply for get_buddies_list +void qq_process_get_buddies_list_reply(guint8 * buf, gint buf_len, GaimConnection * gc) { + qq_data *qd; + qq_buddy *q_bud; + gint len, bytes, bytes_expected, i; + guint16 position, unknown; + guint8 *data, *cursor, bar, pascal_len; + gchar *name; + GaimBuddy *b; + + g_return_if_fail(gc != NULL && gc->proto_data != NULL); + g_return_if_fail(buf != NULL && buf_len != 0); + + qd = (qq_data *) gc->proto_data; + len = buf_len; + data = g_newa(guint8, len); + cursor = data; + + if (qq_crypt(DECRYPT, buf, buf_len, qd->session_key, data, &len)) { + read_packet_w(data, &cursor, len, &position); + // the following data is buddy list in this packet + i = 0; + while (cursor < (data + len)) { + q_bud = g_new0(qq_buddy, 1); + bytes = 0; + // 000-003: uid + bytes += read_packet_dw(data, &cursor, len, &q_bud->uid); + // 004-004: 0xff if buddy is self, 0x00 otherwise + bytes += read_packet_b(data, &cursor, len, &bar); + // 005-005: icon index (1-255) + bytes += read_packet_b(data, &cursor, len, &q_bud->icon); + // 006-006: age + bytes += read_packet_b(data, &cursor, len, &q_bud->age); + // 007-007: gender + bytes += read_packet_b(data, &cursor, len, &q_bud->gender); + pascal_len = convert_as_pascal_string(cursor, &q_bud->nickname, QQ_CHARSET_DEFAULT); + cursor += pascal_len; + bytes += pascal_len; + bytes += read_packet_w(data, &cursor, len, &unknown); + /* flag1: (0-7) + * bit1 => qq show + * comm_flag: (0-7) + * bit1 => member + * bit4 => TCP mode + * bit5 => open mobile QQ + * bit6 => bind to mobile + * bit7 => whether having a video + */ + bytes += read_packet_b(data, &cursor, len, &q_bud->flag1); + bytes += read_packet_b(data, &cursor, len, &q_bud->comm_flag); + + bytes_expected = 12 + pascal_len; + + if (q_bud->uid == 0 || bytes != bytes_expected) { + gaim_debug(GAIM_DEBUG_INFO, "QQ", + "Buddy entry, expect %d bytes, read %d bytes\n", bytes_expected, bytes); + g_free(q_bud->nickname); + g_free(q_bud); + continue; + } else + i++; + + if (QQ_DEBUG) + gaim_debug(GAIM_DEBUG_INFO, "QQ", + "buddy [%09d]: flag1=0x%02x, comm_flag=0x%02x\n", + q_bud->uid, q_bud->flag1, q_bud->comm_flag); + + name = uid_to_gaim_name(q_bud->uid); + b = gaim_find_buddy(gc->account, name); + g_free(name); + + if (b == NULL) + b = qq_add_buddy_by_recv_packet(gc, q_bud->uid, TRUE, FALSE); + + b->proto_data = q_bud; + qd->buddies = g_list_append(qd->buddies, q_bud); + qq_update_buddy_contact(gc, q_bud); + } // while cursor + + if(cursor > (data + len)) { + gaim_debug(GAIM_DEBUG_ERROR, "QQ", "qq_process_get_buddies_list_reply: Dangerous error! maybe protocal changed, notify me!"); + } + if (position == QQ_FRIENDS_LIST_POSITION_END) { + gaim_debug(GAIM_DEBUG_INFO, "QQ", "Get friends list done, %d buddies\n", i); + qq_send_packet_get_buddies_online(gc, QQ_FRIENDS_ONLINE_POSITION_START); + } else + qq_send_packet_get_buddies_list(gc, position); + + } else + gaim_debug(GAIM_DEBUG_ERROR, "QQ", "Error decrypt buddies list"); + +} // qq_process_get_buddies_list_reply + + +// written by gfhuang +void qq_process_get_all_list_with_group_reply(guint8 * buf, gint buf_len, GaimConnection * gc) +{ + qq_data *qd; + gint len, i, j; + guint8 *data, *cursor; + guint8 sub_cmd, reply_code; + guint32 unknown, position; + guint32 uid; + guint8 type, groupid; + + qq_buddy *q_bud; + gchar *name; + GaimBuddy *b; + qq_group *group; + + g_return_if_fail(gc != NULL && gc->proto_data != NULL); + g_return_if_fail(buf != NULL && buf_len != 0); + + qd = (qq_data *) gc->proto_data; + len = buf_len; + data = g_newa(guint8, len); + cursor = data; + + if (qq_crypt(DECRYPT, buf, buf_len, qd->session_key, data, &len)) { + read_packet_b(data, &cursor, len, &sub_cmd); + g_return_if_fail(sub_cmd == 0x01); + read_packet_b(data, &cursor, len, &reply_code); + if(0 != reply_code) { + gaim_debug(GAIM_DEBUG_WARNING, "QQ", "Get all list with group reply, reply_code(%d) is not zero", reply_code); + } + read_packet_dw(data, &cursor, len, &unknown); + read_packet_dw(data, &cursor, len, &position); + // the following data is all list in this packet + i = 0; + j = 0; + while (cursor < (data + len)) { + // 00-03: uid + read_packet_dw(data, &cursor, len, &uid); + // 04: type 0x1:buddy 0x4:Qun + read_packet_b(data, &cursor, len, &type); + // 05: groupid*4 + read_packet_b(data, &cursor, len, &groupid); + groupid >>= 2; // these 2 bits might not be 0, faint! + if (uid == 0 || (type != 0x1 && type != 0x4)) { + gaim_debug(GAIM_DEBUG_WARNING, "QQ", + "Buddy entry, uid=%d, type=%d", uid, type); + continue; + } + if(0x1 == type) { // a buddy + name = uid_to_gaim_name(uid); + b = gaim_find_buddy(gc->account, name); + g_free(name); + + if (b == NULL) { + b = qq_add_buddy_by_recv_packet(gc, uid, TRUE, TRUE); + q_bud = b->proto_data; + } + else { + q_bud = NULL; + b->proto_data = q_bud; //wrong !!!! + } + qd->buddies = g_list_append(qd->buddies, q_bud); + qq_update_buddy_contact(gc, q_bud); + ++i; + } + else { //a group + group = qq_group_find_by_internal_group_id(gc, uid); + if(group == NULL) { + /* not working, gfhuang + group = qq_group_create_by_id(gc, uid, 0); + qq_send_cmd_group_get_group_info(gc, group); + */ + gaim_debug(GAIM_DEBUG_ERROR, "QQ", "Get a Qun with internel group %d\n", uid); + gaim_notify_info(gc, _("QQ Qun Operation"), _("Find one Qun in the server list, but i don't know its external id, please re-rejoin it manually"), NULL); + } + else { + group->my_status = QQ_GROUP_MEMBER_STATUS_IS_MEMBER; + qq_group_refresh(gc, group); + qq_send_cmd_group_get_group_info(gc, group); + } + ++j; + } + } + if(cursor > (data + len)) { + gaim_debug(GAIM_DEBUG_ERROR, "QQ", "qq_process_get_all_list_with_group_reply: Dangerous error! maybe protocal changed, notify me!"); + } + gaim_debug(GAIM_DEBUG_INFO, "QQ", "Get all list done, %d buddies and %d Quns\n", i, j); + } else + gaim_debug(GAIM_DEBUG_ERROR, "QQ", "Error decrypt all list with group"); + +} +/*****************************************************************************/ +// END OF FILE Property changes on: trunk/src/protocols/qq/buddy_list.c ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native Added: trunk/src/protocols/qq/buddy_list.h =================================================================== --- trunk/src/protocols/qq/buddy_list.h (rev 0) +++ trunk/src/protocols/qq/buddy_list.h 2006-06-26 02:58:54 UTC (rev 16340) @@ -0,0 +1,47 @@ +/** +* The QQ2003C protocol plugin + * + * for gaim + * + * Copyright (C) 2004 Puzzlebird + * + * 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 + */ + +// START OF FILE +/*****************************************************************************/ +#ifndef _QQ_BUDDY_LIST_H_ +#define _QQ_BUDDY_LIST_H_ + +#include <glib.h> +#include "connection.h" // GaimConnection + +#define QQ_FRIENDS_LIST_POSITION_START 0x0000 +#define QQ_FRIENDS_LIST_POSITION_END 0xffff +#define QQ_FRIENDS_ONLINE_POSITION_START 0x00 +#define QQ_FRIENDS_ONLINE_POSITION_END 0xff + +void qq_send_packet_get_buddies_online(GaimConnection * gc, guint8 position); +void qq_process_get_buddies_online_reply(guint8 * buf, gint buf_len, GaimConnection * gc); +void qq_send_packet_get_buddies_list(GaimConnection * gc, guint16 position); +void qq_process_get_buddies_list_reply(guint8 * buf, gint buf_len, GaimConnection * gc); + +//added by gfhuang +void qq_send_packet_get_all_list_with_group(GaimConnection * gc, guint32 position); +void qq_process_get_all_list_with_group_reply(guint8 * buf, gint buf_len, GaimConnection * gc); + +#endif +/*****************************************************************************/ +// END OF FILE Property changes on: trunk/src/protocols/qq/buddy_list.h ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native Added: trunk/src/protocols/qq/buddy_opt.c =================================================================== --- trunk/src/protocols/qq/buddy_opt.c (rev 0) +++ trunk/src/protocols/qq/buddy_opt.c 2006-06-26 02:58:54 UTC (rev 16340) @@ -0,0 +1,617 @@ +/** +* The QQ2003C protocol plugin + * + * for gaim + * + * Copyright (C) 2004 Puzzlebird + * + * 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 + */ + +// START OF FILE +/*****************************************************************************/ +#include "debug.h" // gaim_debug +#include "internal.h" // strlen, _("get_text") +#include "notify.h" // gaim_notify +#include "request.h" // gaim_request_input + +#include "utils.h" // uid_to_gaim_name, gaim_name_to_uid +#include "packet_parse.h" // create_packet, read_packet +#include "buddy_info.h" // qq_send_packet_get_info +#include "buddy_list.h" // qq_send_packet_get_buddies_online +#include "buddy_opt.h" +#include "char_conv.h" // qq_to_utf8 +#include "crypt.h" // qq_crypt +#include "header_info.h" // cmd alias +#include "keep_alive.h" // qq_update_buddy_contact +#include "im.h" // QQ_MSG_IM_MAX +#include "send_core.h" // qq_send_cmd + +#define GAIM_GROUP_QQ_FORMAT "QQ (%s)" +#define GAIM_GROUP_QQ_UNKNOWN "QQ Unknown" +#define GAIM_GROUP_QQ_BLOCKED "QQ Blocked" + +#define QQ_REMOVE_BUDDY_REPLY_OK 0x00 +#define QQ_REMOVE_SELF_REPLY_OK 0x00 +#define QQ_ADD_BUDDY_AUTH_REPLY_OK 0x30 // ASCii value of "0" + +enum { + QQ_MY_AUTH_APPROVE = 0x30, // ASCii value of "0" + QQ_MY_AUTH_REJECT = 0x31, // ASCii value of "1" + QQ_MY_AUTH_REQUEST = 0x32, // ASCii value of "2" +}; + +typedef struct _qq_add_buddy_request { + guint32 uid; + guint16 seq; +} qq_add_buddy_request; + +/*****************************************************************************/ +// send packet to remove a buddy from my buddy list +static void _qq_send_packet_remove_buddy(GaimConnection * gc, guint32 uid) +{ + gchar *uid_str; + + g_return_if_fail(gc != NULL && uid > 0); + + uid_str = g_strdup_printf("%d", uid); + qq_send_cmd(gc, QQ_CMD_DEL_FRIEND, TRUE, 0, TRUE, uid_str, strlen(uid_str)); + + g_free(uid_str); +} // _qq_send_packet_remove_buddy + +/*****************************************************************************/ +// try to remove myself from someone's buddy list +static void _qq_send_packet_remove_self_from(GaimConnection * gc, guint32 uid) +{ + guint8 *raw_data, *cursor; + @@ Diff output truncated at 100000 characters. @@ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <roast@us...> - 2006-06-26 00:12:47
|
Revision: 16339 Author: roast Date: 2006-06-25 17:12:31 -0700 (Sun, 25 Jun 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16339&view=rev Log Message: ----------- merged with svn trunk. 16329:16338. Modified Paths: -------------- branches/soc-2006-file-loggers/console/Makefile branches/soc-2006-file-loggers/console/gntblist.c branches/soc-2006-file-loggers/console/gntgaim.c branches/soc-2006-file-loggers/console/libgnt/Makefile branches/soc-2006-file-loggers/console/libgnt/gnt.h branches/soc-2006-file-loggers/console/libgnt/gntbox.c branches/soc-2006-file-loggers/console/libgnt/gntmain.c branches/soc-2006-file-loggers/console/libgnt/gnttree.c branches/soc-2006-file-loggers/console/libgnt/gntwidget.c branches/soc-2006-file-loggers/plugins/ChangeLog.API branches/soc-2006-file-loggers/src/blist.c branches/soc-2006-file-loggers/src/blist.h branches/soc-2006-file-loggers/src/log.c branches/soc-2006-file-loggers/src/status.c Modified: branches/soc-2006-file-loggers/console/Makefile =================================================================== --- branches/soc-2006-file-loggers/console/Makefile 2006-06-25 23:15:25 UTC (rev 16338) +++ branches/soc-2006-file-loggers/console/Makefile 2006-06-26 00:12:31 UTC (rev 16339) @@ -1,5 +1,5 @@ CFLAGS=`pkg-config --cflags gaim gobject-2.0` -g -I./libgnt/ -LDFLAGS=`pkg-config --libs gaim gobject-2.0 libxml-2.0` -lncursesw -L./libgnt/ -lgnt +LDFLAGS=`pkg-config --libs gaim gobject-2.0 libxml-2.0` -lncursesw -L./libgnt/ -lgnt -pg GG_SOURCES = \ gntblist.c \ @@ -13,7 +13,9 @@ gntblist.o \ gntui.o -all: gntgaim +all: + cd libgnt && make + make gntgaim gntgaim: gntgaim.o $(GG_OBJECTS) $(CC) -o gntgaim gntgaim.o $(GG_OBJECTS) $(LDFLAGS) @@ -22,6 +24,7 @@ gntui.o: gntui.c $(GG_HEADERS) clean: + cd libgnt && make clean rm *.o rm gntgaim Modified: branches/soc-2006-file-loggers/console/gntblist.c =================================================================== --- branches/soc-2006-file-loggers/console/gntblist.c 2006-06-25 23:15:25 UTC (rev 16338) +++ branches/soc-2006-file-loggers/console/gntblist.c 2006-06-26 00:12:31 UTC (rev 16339) @@ -24,6 +24,7 @@ static void add_buddy(GaimBuddy *buddy, GGBlist *ggblist); static void add_group(GaimGroup *group, GGBlist *ggblist); +static void add_node(GaimBlistNode *node, GGBlist *ggblist); static void draw_tooltip(GGBlist *ggblist); static void @@ -31,6 +32,15 @@ { } +static void add_node(GaimBlistNode *node, GGBlist *ggblist) +{ + if (GAIM_BLIST_NODE_IS_BUDDY(node)) + add_buddy((GaimBuddy*)node, ggblist); + else if (GAIM_BLIST_NODE_IS_GROUP(node)) + add_group((GaimGroup*)node, ggblist); + draw_tooltip(ggblist); +} + static void remove_tooltip(GGBlist *ggblist) { @@ -56,14 +66,8 @@ GaimGroup *group = gaim_buddy_get_group((GaimBuddy*)node); if (gaim_blist_get_group_online_count(group) == 0) node_remove(list, (GaimBlistNode*)group); - else if (ggblist->tnode == (GaimBlistNode *)group) /* Need to update the counts */ - draw_tooltip(ggblist); } - - if (ggblist->tnode == node) - { - remove_tooltip(ggblist); - } + draw_tooltip(ggblist); } static void @@ -73,7 +77,7 @@ { GaimBuddy *buddy = (GaimBuddy*)node; if (gaim_presence_is_online(gaim_buddy_get_presence(buddy))) - add_buddy(buddy, list->ui_data); + add_node((GaimBlistNode*)buddy, list->ui_data); else node_remove(gaim_get_blist(), node); } @@ -171,19 +175,16 @@ return; group = gaim_buddy_get_group(buddy); - add_group(group, ggblist); + add_node((GaimBlistNode*)group, ggblist); node->ui_data = gnt_tree_add_row_after(GNT_TREE(ggblist->tree), buddy, get_buddy_display_name(buddy), group, NULL); - - if (ggblist->tnode == (GaimBlistNode*)group) - draw_tooltip(ggblist); } static void buddy_signed_on(GaimBuddy *buddy, GGBlist *ggblist) { - add_buddy(buddy, ggblist); + add_node((GaimBlistNode*)buddy, ggblist); } static void @@ -221,6 +222,8 @@ if (ggblist->tooltip) { + /* XXX: Once we can properly redraw on expose events, this can be removed at the end + * to avoid the blinking*/ remove_tooltip(ggblist); } @@ -292,6 +295,8 @@ g_string_free(str, TRUE); ggblist->tooltip = box; ggblist->tnode = node; + + gnt_widget_set_name(ggblist->tooltip, "tooltip"); } static void @@ -332,6 +337,7 @@ gaim_get_blist()->ui_data = ggblist; ggblist->window = gnt_box_new(FALSE, FALSE); + gnt_widget_set_name(ggblist->window, "buddylist"); gnt_box_set_toplevel(GNT_BOX(ggblist->window), TRUE); gnt_box_set_title(GNT_BOX(ggblist->window), _("Buddy List")); gnt_box_set_pad(GNT_BOX(ggblist->window), 0); Modified: branches/soc-2006-file-loggers/console/gntgaim.c =================================================================== --- branches/soc-2006-file-loggers/console/gntgaim.c 2006-06-25 23:15:25 UTC (rev 16338) +++ branches/soc-2006-file-loggers/console/gntgaim.c 2006-06-26 00:12:31 UTC (rev 16339) @@ -169,7 +169,7 @@ int main(int argc, char **argv) { /* XXX: Don't puke */ - freopen("/dev/null", "w", stderr); + freopen(".error", "w", stderr); /* Initialize the libgaim stuff */ init_libgaim(); Modified: branches/soc-2006-file-loggers/console/libgnt/Makefile =================================================================== --- branches/soc-2006-file-loggers/console/libgnt/Makefile 2006-06-25 23:15:25 UTC (rev 16338) +++ branches/soc-2006-file-loggers/console/libgnt/Makefile 2006-06-26 00:12:31 UTC (rev 16339) @@ -1,5 +1,5 @@ CFLAGS=`pkg-config --cflags gobject-2.0` -g -LDFLAGS=`pkg-config --libs gobject-2.0` -lncursesw +LDFLAGS=`pkg-config --libs gobject-2.0` -lncursesw -pg HEADERS = \ gntwidget.h \ Modified: branches/soc-2006-file-loggers/console/libgnt/gnt.h =================================================================== --- branches/soc-2006-file-loggers/console/libgnt/gnt.h 2006-06-25 23:15:25 UTC (rev 16338) +++ branches/soc-2006-file-loggers/console/libgnt/gnt.h 2006-06-26 00:12:31 UTC (rev 16339) @@ -3,15 +3,11 @@ #include "gntcolors.h" #include "gntkeys.h" -/* XXX: Find a better place for this */ -#define SCROLL_HEIGHT 4096 -#define SCROLL_WIDTH 512 - void gnt_init(); void gnt_main(); -void gnt_screen_take_focus(GntWidget *widget); +void gnt_screen_occupy(GntWidget *widget); -void gnt_screen_remove_widget(GntWidget *widget); +void gnt_screen_release(GntWidget *widget); Modified: branches/soc-2006-file-loggers/console/libgnt/gntbox.c =================================================================== --- branches/soc-2006-file-loggers/console/libgnt/gntbox.c 2006-06-25 23:15:25 UTC (rev 16338) +++ branches/soc-2006-file-loggers/console/libgnt/gntbox.c 2006-06-26 00:12:31 UTC (rev 16339) @@ -16,7 +16,9 @@ for (iter = box->list; iter; iter = iter->next) { - gnt_widget_draw(GNT_WIDGET(iter->data)); + GntWidget *w = GNT_WIDGET(iter->data); + gnt_widget_draw(w); + overwrite(w->window, widget->window); } if (box->title) @@ -39,6 +41,8 @@ g_free(title); } wrefresh(widget->window); + + gnt_screen_occupy(widget); DEBUG; } @@ -202,7 +206,7 @@ now = box->list; } - if (now) + if (now && now != box->active) { gnt_widget_set_focus(box->active->data, FALSE); box->active = now; @@ -263,10 +267,21 @@ gnt_widget_destroy(iter->data); } + gnt_screen_release(w); + g_list_free(box->list); } static void +gnt_box_expose(GntWidget *widget, int x, int y, int width, int height) +{ + WINDOW *win = newwin(height, width, widget->priv.y + y, widget->priv.x + x); + copywin(widget->window, win, y, x, 0, 0, height - 1, width - 1, FALSE); + wrefresh(win); + delwin(win); +} + +static void gnt_box_class_init(GntBoxClass *klass) { GObjectClass *obj_class = G_OBJECT_CLASS(klass); @@ -274,6 +289,7 @@ parent_class = GNT_WIDGET_CLASS(klass); parent_class->destroy = gnt_box_destroy; parent_class->draw = gnt_box_draw; + parent_class->expose = gnt_box_expose; parent_class->map = gnt_box_map; parent_class->size_request = gnt_box_size_request; parent_class->set_position = gnt_box_set_position; Modified: branches/soc-2006-file-loggers/console/libgnt/gntmain.c =================================================================== --- branches/soc-2006-file-loggers/console/libgnt/gntmain.c 2006-06-25 23:15:25 UTC (rev 16338) +++ branches/soc-2006-file-loggers/console/libgnt/gntmain.c 2006-06-26 00:12:31 UTC (rev 16339) @@ -9,6 +9,10 @@ static int max_x; static int max_y; +static GHashTable *nodes; + +static void free_node(gpointer data); + void gnt_screen_take_focus(GntWidget *widget) { focus_list = g_list_prepend(focus_list, widget); @@ -95,6 +99,8 @@ max_x = getmaxx(stdscr); max_y = getmaxy(stdscr); + nodes = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, free_node); + wbkgdset(stdscr, '\0' | COLOR_PAIR(GNT_COLOR_NORMAL)); noecho(); refresh(); @@ -108,3 +114,83 @@ g_main_run(loop); } +/********************************* + * Stuff for 'window management' * + *********************************/ + +typedef struct +{ + GntWidget *me; + GList *below; /* List of widgets below me */ + GList *above; /* List of widgets above me */ +} GntNode; + +static void +free_node(gpointer data) +{ + GntNode *node = data; + g_list_free(node->below); + g_list_free(node->above); + g_free(node); +} + +static void +check_intersection(gpointer key, gpointer value, gpointer data) +{ + GntNode *n = value; + GntNode *nu = data; + + if (value == NULL) + return; + + if (n->me->priv.x + n->me->priv.width < nu->me->priv.x) + return; + if (nu->me->priv.x + nu->me->priv.width < n->me->priv.x) + return; + + if (n->me->priv.y + n->me->priv.height < nu->me->priv.y) + return; + if (nu->me->priv.y + nu->me->priv.height < n->me->priv.y) + return; + + n->above = g_list_prepend(n->above, nu->me); + nu->below = g_list_prepend(nu->below, n->me); +} + +void gnt_screen_occupy(GntWidget *widget) +{ + /* XXX: what happens if this is called more than once for the same widget? + * perhaps _release first? */ + GntNode *node = g_new0(GntNode, 1); + node->me = widget; + + g_hash_table_foreach(nodes, check_intersection, node); + g_hash_table_replace(nodes, widget, node); +} + +void gnt_screen_release(GntWidget *widget) +{ + GList *iter; + GntNode *node = g_hash_table_lookup(nodes, widget); + if (node == NULL || node->below == NULL) /* Yay! Nothing to do. */ + return; + + /* XXX: This is not going to work. + * It will be necessary to build a topology and go from there. */ + for (iter = node->below; iter; iter = iter->next) + { + GntWidget *w = iter->data; + int left, right, top, bottom; + + left = MAX(widget->priv.x, w->priv.x) - w->priv.x; + right = MIN(widget->priv.x + widget->priv.width, w->priv.x + w->priv.width) - w->priv.x; + + top = MAX(widget->priv.y, w->priv.y) - w->priv.y; + bottom = MIN(widget->priv.y + widget->priv.height, w->priv.y + w->priv.height) - w->priv.y; + + gnt_widget_expose(w, left, top, right - left, bottom - top); + } + + g_hash_table_remove(nodes, widget); +} + Modified: branches/soc-2006-file-loggers/console/libgnt/gnttree.c =================================================================== --- branches/soc-2006-file-loggers/console/libgnt/gnttree.c 2006-06-25 23:15:25 UTC (rev 16338) +++ branches/soc-2006-file-loggers/console/libgnt/gnttree.c 2006-06-26 00:12:31 UTC (rev 16339) @@ -6,6 +6,7 @@ enum { SIG_SELECTION_CHANGED, + SIG_SCROLLED, SIGS, }; @@ -345,6 +346,14 @@ NULL, NULL, gnt_closure_marshal_VOID__POINTER_POINTER, G_TYPE_NONE, 2, G_TYPE_POINTER, G_TYPE_POINTER); + signals[SIG_SCROLLED] = + g_signal_new("scrolled", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, + g_cclosure_marshal_VOID__INT, + G_TYPE_NONE, 1, G_TYPE_INT); DEBUG; } @@ -445,6 +454,7 @@ } redraw_tree(tree); + g_signal_emit(tree, signals[SIG_SCROLLED], 0, count); } static int Modified: branches/soc-2006-file-loggers/console/libgnt/gntwidget.c =================================================================== --- branches/soc-2006-file-loggers/console/libgnt/gntwidget.c 2006-06-25 23:15:25 UTC (rev 16338) +++ branches/soc-2006-file-loggers/console/libgnt/gntwidget.c 2006-06-26 00:12:31 UTC (rev 16339) @@ -225,8 +225,6 @@ delwin(obj->window); if(!(GNT_WIDGET_FLAGS(obj) & GNT_WIDGET_DESTROYING)) g_object_run_dispose(G_OBJECT(obj)); - /* XXX: This may be the wrong place */ - /*gnt_screen_remove_widget(obj);*/ DEBUG; } @@ -264,11 +262,10 @@ else werase(widget->window); +#if 0 + /* XXX: No shadow for now :( */ if (!(GNT_WIDGET_FLAGS(widget) & GNT_WIDGET_NO_SHADOW)) { - /* XXX: Find out the actual windows beneath this window, and - * draw the shadow on them */ - /* XXX: Or perhaps do all these from a psedo-WM! */ widget->back = newwin(widget->priv.height, widget->priv.width, widget->priv.y + 1, widget->priv.x + 1); wbkgd(widget->back, COLOR_PAIR(GNT_COLOR_SHADOW)); @@ -279,6 +276,7 @@ touchline(widget->back, 0, widget->priv.height); wrefresh(widget->back); } +#endif wrefresh(widget->window); g_signal_emit(widget, signals[SIG_DRAW], 0); Modified: branches/soc-2006-file-loggers/plugins/ChangeLog.API =================================================================== --- branches/soc-2006-file-loggers/plugins/ChangeLog.API 2006-06-25 23:15:25 UTC (rev 16338) +++ branches/soc-2006-file-loggers/plugins/ChangeLog.API 2006-06-26 00:12:31 UTC (rev 16339) @@ -176,6 +176,7 @@ notify_searchresults in GaimNotifyUiOps. * gaim_conversation_get_send_history(), and send_history from GaimConversation + * Removed ui_ops from GaimBuddyList. Use gaim_blist_get_ui_ops() instead Added: * gaim_prefs_disconnect_by_handle() Modified: branches/soc-2006-file-loggers/src/blist.c =================================================================== --- branches/soc-2006-file-loggers/src/blist.c 2006-06-25 23:15:25 UTC (rev 16338) +++ branches/soc-2006-file-loggers/src/blist.c 2006-06-26 00:12:31 UTC (rev 16339) @@ -655,17 +655,18 @@ GaimBuddyList *gaim_blist_new() { + GaimBlistUiOps *ui_ops; GaimBuddyList *gbl = g_new0(GaimBuddyList, 1); GAIM_DBUS_REGISTER_POINTER(gbl, GaimBuddyList); - gbl->ui_ops = gaim_blist_get_ui_ops(); + ui_ops = gaim_blist_get_ui_ops(); gbl->buddies = g_hash_table_new_full((GHashFunc)_gaim_blist_hbuddy_hash, (GEqualFunc)_gaim_blist_hbuddy_equal, (GDestroyNotify)_gaim_blist_hbuddy_free_key, NULL); - if (gbl->ui_ops != NULL && gbl->ui_ops->new_list != NULL) - gbl->ui_ops->new_list(gbl); + if (ui_ops != NULL && ui_ops->new_list != NULL) + ui_ops->new_list(gbl); return gbl; } @@ -690,7 +691,7 @@ void gaim_blist_show() { - GaimBlistUiOps *ops = gaimbuddylist->ui_ops; + GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); if (ops && ops->show) ops->show(gaimbuddylist); @@ -698,7 +699,7 @@ void gaim_blist_destroy() { - GaimBlistUiOps *ops = gaimbuddylist->ui_ops; + GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); gaim_debug(GAIM_DEBUG_INFO, "blist", "Destroying\n"); @@ -708,7 +709,7 @@ void gaim_blist_set_visible(gboolean show) { - GaimBlistUiOps *ops = gaimbuddylist->ui_ops; + GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); if (ops && ops->set_visible) ops->set_visible(gaimbuddylist, show); @@ -744,7 +745,7 @@ void gaim_blist_update_buddy_status(GaimBuddy *buddy, GaimStatus *old_status) { - GaimBlistUiOps *ops = gaimbuddylist->ui_ops; + GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); GaimPresence *presence; GaimStatus *status; @@ -794,7 +795,7 @@ void gaim_blist_update_buddy_icon(GaimBuddy *buddy) { - GaimBlistUiOps *ops = gaimbuddylist->ui_ops; + GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); g_return_if_fail(buddy != NULL); @@ -808,7 +809,7 @@ */ void gaim_blist_rename_buddy(GaimBuddy *buddy, const char *name) { - GaimBlistUiOps *ops = gaimbuddylist->ui_ops; + GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); struct _gaim_hbuddy *hb; g_return_if_fail(buddy != NULL); @@ -834,7 +835,7 @@ void gaim_blist_alias_contact(GaimContact *contact, const char *alias) { - GaimBlistUiOps *ops = gaimbuddylist->ui_ops; + GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); GaimConversation *conv; char *old_alias = contact->alias; GaimBlistNode *bnode; @@ -868,7 +869,7 @@ void gaim_blist_alias_chat(GaimChat *chat, const char *alias) { - GaimBlistUiOps *ops = gaimbuddylist->ui_ops; + GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); char *old_alias = chat->alias; g_return_if_fail(chat != NULL); @@ -890,7 +891,7 @@ void gaim_blist_alias_buddy(GaimBuddy *buddy, const char *alias) { - GaimBlistUiOps *ops = gaimbuddylist->ui_ops; + GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); GaimConversation *conv; char *old_alias = buddy->alias; @@ -918,7 +919,7 @@ void gaim_blist_server_alias_buddy(GaimBuddy *buddy, const char *alias) { - GaimBlistUiOps *ops = gaimbuddylist->ui_ops; + GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); GaimConversation *conv; char *old_alias = buddy->server_alias; @@ -949,7 +950,7 @@ */ void gaim_blist_rename_group(GaimGroup *source, const char *new_name) { - GaimBlistUiOps *ops = gaimbuddylist->ui_ops; + GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); GaimGroup *dest; gchar *old_name; GList *moved_buddies = NULL; @@ -1071,7 +1072,7 @@ GaimChat *gaim_chat_new(GaimAccount *account, const char *alias, GHashTable *components) { - GaimBlistUiOps *ops = gaimbuddylist->ui_ops; + GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); GaimChat *chat; g_return_val_if_fail(account != NULL, FALSE); @@ -1094,7 +1095,7 @@ GaimBuddy *gaim_buddy_new(GaimAccount *account, const char *screenname, const char *alias) { - GaimBlistUiOps *ops = gaimbuddylist->ui_ops; + GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); GaimBuddy *buddy; g_return_val_if_fail(account != NULL, FALSE); @@ -1169,7 +1170,7 @@ void gaim_blist_add_chat(GaimChat *chat, GaimGroup *group, GaimBlistNode *node) { GaimBlistNode *cnode = (GaimBlistNode*)chat; - GaimBlistUiOps *ops = gaimbuddylist->ui_ops; + GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); g_return_if_fail(chat != NULL); g_return_if_fail(GAIM_BLIST_NODE_IS_CHAT((GaimBlistNode *)chat)); @@ -1251,7 +1252,7 @@ GaimBlistNode *cnode, *bnode; GaimGroup *g; GaimContact *c; - GaimBlistUiOps *ops = gaimbuddylist->ui_ops; + GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); struct _gaim_hbuddy *hb; g_return_if_fail(buddy != NULL); @@ -1400,7 +1401,7 @@ void gaim_contact_set_alias(GaimContact *contact, const char *alias) { - GaimBlistUiOps *ops = gaimbuddylist->ui_ops; + GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); char *old_alias = contact->alias; g_return_if_fail(contact != NULL); @@ -1486,7 +1487,7 @@ void gaim_blist_add_contact(GaimContact *contact, GaimGroup *group, GaimBlistNode *node) { - GaimBlistUiOps *ops = gaimbuddylist->ui_ops; + GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); GaimGroup *g; GaimBlistNode *gnode, *cnode, *bnode; @@ -1652,7 +1653,7 @@ g_return_if_fail(group != NULL); g_return_if_fail(GAIM_BLIST_NODE_IS_GROUP((GaimBlistNode *)group)); - ops = gaimbuddylist->ui_ops; + ops = gaim_blist_get_ui_ops(); if (!gaimbuddylist->root) { gaimbuddylist->root = gnode; @@ -1702,7 +1703,7 @@ void gaim_blist_remove_contact(GaimContact *contact) { - GaimBlistUiOps *ops = gaimbuddylist->ui_ops; + GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); GaimBlistNode *node, *gnode; g_return_if_fail(contact != NULL); @@ -1749,7 +1750,7 @@ void gaim_blist_remove_buddy(GaimBuddy *buddy) { - GaimBlistUiOps *ops = gaimbuddylist->ui_ops; + GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); GaimBlistNode *node, *cnode, *gnode; GaimContact *contact; GaimGroup *group; @@ -1837,7 +1838,7 @@ void gaim_blist_remove_chat(GaimChat *chat) { - GaimBlistUiOps *ops = gaimbuddylist->ui_ops; + GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); GaimBlistNode *node, *gnode; GaimGroup *group; @@ -1881,7 +1882,7 @@ void gaim_blist_remove_group(GaimGroup *group) { - GaimBlistUiOps *ops = gaimbuddylist->ui_ops; + GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); GaimBlistNode *node; GList *l; @@ -2244,7 +2245,7 @@ void gaim_blist_add_account(GaimAccount *account) { - GaimBlistUiOps *ops = gaimbuddylist->ui_ops; + GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); GaimBlistNode *gnode, *cnode, *bnode; g_return_if_fail(gaimbuddylist != NULL); @@ -2286,7 +2287,7 @@ void gaim_blist_remove_account(GaimAccount *account) { - GaimBlistUiOps *ops = gaimbuddylist->ui_ops; + GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); GaimBlistNode *gnode, *cnode, *bnode; GaimBuddy *buddy; GaimChat *chat; Modified: branches/soc-2006-file-loggers/src/blist.h =================================================================== --- branches/soc-2006-file-loggers/src/blist.h 2006-06-25 23:15:25 UTC (rev 16338) +++ branches/soc-2006-file-loggers/src/blist.h 2006-06-26 00:12:31 UTC (rev 16339) @@ -152,8 +152,6 @@ struct _GaimBuddyList { GaimBlistNode *root; /**< The first node in the buddy list */ GHashTable *buddies; /**< Every buddy in this list */ - GaimBlistUiOps *ui_ops; /**< The UI operations for the buddy list */ - void *ui_data; /**< UI-specific data. */ }; Modified: branches/soc-2006-file-loggers/src/log.c =================================================================== --- branches/soc-2006-file-loggers/src/log.c 2006-06-25 23:15:25 UTC (rev 16338) +++ branches/soc-2006-file-loggers/src/log.c 2006-06-26 00:12:31 UTC (rev 16339) @@ -23,6 +23,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include "internal.h" #include "account.h" #include "dbus-maybe.h" #include "debug.h" Modified: branches/soc-2006-file-loggers/src/status.c =================================================================== --- branches/soc-2006-file-loggers/src/status.c 2006-06-25 23:15:25 UTC (rev 16338) +++ branches/soc-2006-file-loggers/src/status.c 2006-06-26 00:12:31 UTC (rev 16339) @@ -1298,7 +1298,7 @@ update_buddy_idle(GaimBuddy *buddy, GaimPresence *presence, time_t current_time, gboolean old_idle, gboolean idle) { - GaimBlistUiOps *ops = gaim_get_blist()->ui_ops; + GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); if (!old_idle && idle) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |