diff src/protocols/oscar/oscar.c @ 2742:6f527cbd899d

[gaim-migrate @ 2755] i'll commit it later. committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Sun, 18 Nov 2001 00:21:49 +0000
parents 9fc65bb80596
children 642413968b03
line wrap: on
line diff
--- a/src/protocols/oscar/oscar.c	Sat Nov 17 22:50:08 2001 +0000
+++ b/src/protocols/oscar/oscar.c	Sun Nov 18 00:21:49 2001 +0000
@@ -229,23 +229,24 @@
 static int gaim_parse_searcherror(aim_session_t *, aim_frame_t *, ...);
 static int gaim_parse_searchreply(aim_session_t *, aim_frame_t *, ...);
 static int gaim_bosrights        (aim_session_t *, aim_frame_t *, ...);
-static int conninitdone_bos      (aim_session_t *sess, aim_frame_t *fr, ...);
-static int conninitdone_admin    (aim_session_t *sess, aim_frame_t *fr, ...);
-static int conninitdone_chat     (aim_session_t *sess, aim_frame_t *fr, ...);
-static int conninitdone_chatnav  (aim_session_t *sess, aim_frame_t *fr, ...);
+static int conninitdone_bos      (aim_session_t *, aim_frame_t *, ...);
+static int conninitdone_admin    (aim_session_t *, aim_frame_t *, ...);
+static int conninitdone_chat     (aim_session_t *, aim_frame_t *, ...);
+static int conninitdone_chatnav  (aim_session_t *, aim_frame_t *, ...);
 static int gaim_parse_msgerr     (aim_session_t *, aim_frame_t *, ...);
 static int gaim_parse_buddyrights(aim_session_t *, aim_frame_t *, ...);
 static int gaim_parse_locerr     (aim_session_t *, aim_frame_t *, ...);
 static int gaim_icbm_param_info  (aim_session_t *, aim_frame_t *, ...);
 static int gaim_parse_genericerr (aim_session_t *, aim_frame_t *, ...);
-static int gaim_memrequest       (aim_session_t *,  aim_frame_t*, ...);
-static int gaim_selfinfo         (aim_session_t *,  aim_frame_t*, ...);
-static int gaim_offlinemsg       (aim_session_t *,  aim_frame_t*, ...);
-static int gaim_offlinemsgdone   (aim_session_t *,  aim_frame_t*, ...);
-
-static int gaim_directim_initiate  (aim_session_t *, aim_frame_t *, ...);
-static int gaim_directim_incoming  (aim_session_t *, aim_frame_t *, ...);
-static int gaim_directim_typing    (aim_session_t *, aim_frame_t *, ...);
+static int gaim_memrequest       (aim_session_t *, aim_frame_t *, ...);
+static int gaim_selfinfo         (aim_session_t *, aim_frame_t *, ...);
+static int gaim_offlinemsg       (aim_session_t *, aim_frame_t *, ...);
+static int gaim_offlinemsgdone   (aim_session_t *, aim_frame_t *, ...);
+static int gaim_simpleinfo       (aim_session_t *, aim_frame_t *, ...);
+
+static int gaim_directim_initiate(aim_session_t *, aim_frame_t *, ...);
+static int gaim_directim_incoming(aim_session_t *, aim_frame_t *, ...);
+static int gaim_directim_typing  (aim_session_t *, aim_frame_t *, ...);
 
 static char *msgerrreason[] = {
 	"Invalid error",
@@ -652,6 +653,7 @@
 	aim_conn_addhandler(sess, bosconn, 0x0001, 0x000f, gaim_selfinfo, 0);
 	aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_ICQ, AIM_CB_ICQ_OFFLINEMSG, gaim_offlinemsg, 0);
 	aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_ICQ, AIM_CB_ICQ_OFFLINEMSGCOMPLETE, gaim_offlinemsgdone, 0);
+	aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_ICQ, AIM_CB_ICQ_SIMPLEINFO, gaim_simpleinfo, 0);
 
 	((struct oscar_data *)gc->proto_data)->conn = bosconn;
 	for (i = 0; i < (int)strlen(info->bosip); i++) {
@@ -2025,6 +2027,31 @@
 	return 1;
 }
 
+static int gaim_simpleinfo(aim_session_t *sess, aim_frame_t *fr, ...)
+{
+	va_list ap;
+	struct aim_icq_simpleinfo *info;
+	char buf[16 * 1024];
+
+	va_start(ap, fr);
+	info = va_arg(ap, struct aim_icq_simpleinfo *);
+	va_end(ap);
+
+	g_snprintf(buf, sizeof buf,
+		   "<B>UIN:</B> %lu<BR>"
+		   "<B>Nick:</B> %s<BR>"
+		   "<B>Name:</B> %s %s<BR>"
+		   "<B>Email:</B> %s\n",
+		   info->uin,
+		   info->nick,
+		   info->first, info->last,
+		   info->email);
+
+	g_show_info_text(buf, NULL);
+
+	return 1;
+}
+
 static int gaim_parse_searchreply(aim_session_t *sess, aim_frame_t *fr, ...) {
 	va_list ap;
 	char *address, *SNs;
@@ -2189,7 +2216,10 @@
 
 static void oscar_get_info(struct gaim_connection *g, char *name) {
 	struct oscar_data *odata = (struct oscar_data *)g->proto_data;
-	aim_getinfo(odata->sess, odata->conn, name, AIM_GETINFO_GENERALINFO);
+	if (odata->icq)
+		aim_icq_getsimpleinfo(odata->sess, name);
+	else
+		aim_getinfo(odata->sess, odata->conn, name, AIM_GETINFO_GENERALINFO);
 }
 
 static void oscar_get_away_msg(struct gaim_connection *g, char *name) {