diff src/protocols/oscar/oscar.c @ 2773:a0fd8f91e294

[gaim-migrate @ 2786] SPAM!!! All recipients of the email generated by this commit each owe me $125 per email sent, plus a $75 handling fee for all messages combined. Or was that supposed to be the other way around. committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Tue, 20 Nov 2001 01:01:22 +0000
parents 8a918df1a5ed
children e8a2f3b92348
line wrap: on
line diff
--- a/src/protocols/oscar/oscar.c	Mon Nov 19 23:32:04 2001 +0000
+++ b/src/protocols/oscar/oscar.c	Tue Nov 20 01:01:22 2001 +0000
@@ -1558,6 +1558,7 @@
 	char buf[BUF_LONG];
 	char legend[BUF_LONG];
 	struct gaim_connection *gc = sess->aux_data;
+	gboolean away;
 	va_list ap;
 	char *asc;
 
@@ -1568,12 +1569,24 @@
 	infotype = (fu16_t)va_arg(ap, unsigned int);
 	va_end(ap);
 
+	g_snprintf(legend, sizeof legend,
+			_("<br><BODY BGCOLOR=WHITE><hr><I>Legend:</I><br><br>"
+			"<IMG SRC=\"free_icon.gif\"> : Normal AIM User<br>"
+			"<IMG SRC=\"aol_icon.gif\"> : AOL User <br>"
+			"<IMG SRC=\"dt_icon.gif\"> : Trial AIM User <br>"
+			"<IMG SRC=\"admin_icon.gif\"> : Administrator"));
+
+	away = infotype != AIM_GETINFO_GENERALINFO;
+	if (away && (!prof || !*prof)) {
+		g_show_info_text(gc, info->sn, away, legend, NULL);
+		return 1;
+	}
+
 	if (info->membersince)
 		asc = g_strdup_printf("Member Since : <B>%s</B><BR>\n",
 				asctime(localtime(&info->membersince)));
 	else
 		asc = g_strdup("");
-
 	g_snprintf(buf, sizeof buf,
 			_("Username : <B>%s</B>  %s <BR>\n"
 			"%s"
@@ -1585,24 +1598,18 @@
 			info->warnlevel/10,
 			asctime(localtime(&info->onlinesince)),
 			info->idletime);
-	g_snprintf(legend, sizeof legend,
-			_("<br><BODY BGCOLOR=WHITE><hr><I>Legend:</I><br><br>"
-			"<IMG SRC=\"free_icon.gif\"> : Normal AIM User<br>"
-			"<IMG SRC=\"aol_icon.gif\"> : AOL User <br>"
-			"<IMG SRC=\"dt_icon.gif\"> : Trial AIM User <br>"
-			"<IMG SRC=\"admin_icon.gif\"> : Administrator"));
-	g_show_info_text(buf,
+	g_free(asc);
+
+	g_show_info_text(gc, info->sn, away, away ? "<br><hr>" : buf,
 			 (prof && strlen(prof)) ?
 				away_subs(prof, gc->username)
 				:
-				(infotype == AIM_GETINFO_GENERALINFO ?
-					_("<i>No Information Provided</i>") :
-					_("<i>User has no away message</i>")),
-			 legend,
+			 away ?
+				_("<i>User has no away message</i>") :
+				_("<i>No Information Provided</i>"),
+			 away ? legend : NULL,
 			 NULL);
 
-	g_free(asc);
-
 	return 1;
 }
 
@@ -2047,14 +2054,17 @@
 
 static int gaim_simpleinfo(aim_session_t *sess, aim_frame_t *fr, ...)
 {
+	struct gaim_connection *gc = sess->aux_data;
 	va_list ap;
 	struct aim_icq_simpleinfo *info;
 	char buf[16 * 1024];
+	char who[16];
 
 	va_start(ap, fr);
 	info = va_arg(ap, struct aim_icq_simpleinfo *);
 	va_end(ap);
 
+	g_snprintf(who, sizeof who, "%lu", info->uin);
 	g_snprintf(buf, sizeof buf,
 		   "<B>UIN:</B> %lu<BR>"
 		   "<B>Nick:</B> %s<BR>"
@@ -2065,7 +2075,7 @@
 		   info->first, info->last,
 		   info->email);
 
-	g_show_info_text(buf, NULL);
+	g_show_info_text(gc, who, FALSE, buf, NULL);
 
 	return 1;
 }
@@ -2107,7 +2117,7 @@
 	at += g_snprintf(buf + at, len - at, "<B>%s has the following screen names:</B><BR>", address);
 	for (i = 0; i < num; i++)
 		at += g_snprintf(buf + at, len - at, "%s<BR>", &SNs[i * (MAXSNLEN + 1)]);
-	g_show_info_text(buf, NULL);
+	g_show_info_text(NULL, NULL, FALSE, buf, NULL);
 	g_free(buf);
 
 	return 1;
@@ -2261,7 +2271,8 @@
 
 static void oscar_get_away_msg(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_AWAYMESSAGE);
+	if (!odata->icq)
+		aim_getinfo(odata->sess, odata->conn, name, AIM_GETINFO_AWAYMESSAGE);
 }
 
 static void oscar_set_dir(struct gaim_connection *g, char *first, char *middle, char *last,
@@ -2690,12 +2701,6 @@
 	pbm->gc = gc;
 	m = g_list_append(m, pbm);
 
-	pbm = g_new0(struct proto_buddy_menu, 1);
-	pbm->label = _("Get Away Msg");
-	pbm->callback = oscar_get_away_msg;
-	pbm->gc = gc;
-	m = g_list_append(m, pbm);
-
 	if (strcmp(n, normalize(who))) {
 		pbm = g_new0(struct proto_buddy_menu, 1);
 		pbm->label = _("Direct IM");
@@ -2908,6 +2913,7 @@
 	ret->set_info = oscar_set_info;
 	ret->get_info = oscar_get_info;
 	ret->set_away = oscar_set_away;
+	ret->get_away = oscar_get_away_msg;
 	ret->set_dir = oscar_set_dir;
 	ret->get_dir = NULL; /* Oscar really doesn't have this */
 	ret->dir_search = oscar_dir_search;