diff src/protocols/jabber/jabber.c @ 2205:cff4fbe01c7b

[gaim-migrate @ 2215] eric@blue:~/gaim/app/src/protocols $ cat gtk for i in icq irc jabber msn napster oscar toc yahoo zephyr do echo -n $i: grep -i g\[td\]k $i/*.c | wc -l done eric@blue:~/gaim/app/src/protocols $ ./gtk icq: 13 irc: 0 jabber: 59 msn: 0 napster: 106 oscar: 13 toc: 25 yahoo: 15 zephyr: 2 committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Fri, 31 Aug 2001 20:36:11 +0000
parents c24595d3c364
children 8c4ff1a368bd
line wrap: on
line diff
--- a/src/protocols/jabber/jabber.c	Fri Aug 31 18:09:27 2001 +0000
+++ b/src/protocols/jabber/jabber.c	Fri Aug 31 20:36:11 2001 +0000
@@ -573,10 +573,17 @@
 
 		if (type && !strcasecmp(type, "jabber:x:conference")) {
 			char *room;
+			GList *m = NULL;
+			char **data;
 
 			room = xmlnode_get_attrib(xmlns, "jid");
+			data = g_strsplit(room, "@", 2);
+			m = g_list_append(m, g_strdup(data[0]));
+			m = g_list_append(m, g_strdup(data[1]));
+			m = g_list_append(m, g_strdup(j->user->user));
+			g_strfreev(data);
 
-			serv_got_chat_invite(GJ_GC(j), room, 0, from, msg);
+			serv_got_chat_invite(GJ_GC(j), room, from, msg, m);
 		} else if (msg) { /* whisper */
 			struct jabber_chat *jc;
 			g_snprintf(m, sizeof(m), "%s", msg);
@@ -1326,7 +1333,31 @@
 	}
 }
 
-static void jabber_join_chat(struct gaim_connection *gc, int exch, char *name)
+static GList *jabber_chat_info(struct gaim_connection *gc)
+{
+	gjconn j = ((struct jabber_data *)gc->proto_data)->jc;
+
+	GList *m = NULL;
+	struct proto_chat_entry *pce;
+
+	pce = g_new0(struct proto_chat_entry, 1);
+	pce->label = _("Room:");
+	m = g_list_append(m, pce);
+
+	pce = g_new0(struct proto_chat_entry, 1);
+	pce->label = _("Server:");
+	pce->def = DEFAULT_GROUPCHAT;
+	m = g_list_append(m, pce);
+
+	pce = g_new0(struct proto_chat_entry, 1);
+	pce->label = _("Handle:");
+	pce->def = j->user->user;
+	m = g_list_append(m, pce);
+
+	return m;
+}
+
+static void jabber_join_chat(struct gaim_connection *gc, GList *data)
 {
 	xmlnode x;
 	char *realwho;
@@ -1334,11 +1365,12 @@
 	GSList *pc = ((struct jabber_data *)gc->proto_data)->pending_chats;
 	struct jabber_chat *jc;
 
-	if (!name)
+	if (!data || !data->next || !data->next->next)
 		return;
 
 	jc = g_new0(struct jabber_chat, 1);
-	realwho = create_valid_jid(name, DEFAULT_GROUPCHAT, j->user->user);
+	realwho = create_valid_jid(data->data, data->next->data,
+			data->next->next->data);
 	jc->Jid = jid_new(j->p, realwho);
 	jc->gc = gc;
 	debug_printf("%s\n", realwho);
@@ -1355,10 +1387,10 @@
 {
 	xmlnode x, y;
 	GSList *bcs = gc->buddy_chats;
-	struct conversation *b;
+	struct conversation *b = NULL;
 	struct jabber_data *jd = gc->proto_data;
 	gjconn j = jd->jc;
-	struct jabber_chat *jc;
+	struct jabber_chat *jc = NULL;
 	char *realwho, *subject;
 
 	if (!name)
@@ -1412,10 +1444,10 @@
 static void jabber_chat_leave(struct gaim_connection *gc, int id)
 {
 	GSList *bcs = gc->buddy_chats;
-	struct conversation *b;
+	struct conversation *b = NULL;
 	struct jabber_data *jd = gc->proto_data;
 	gjconn j = jd->jc;
-	struct jabber_chat *jc;
+	struct jabber_chat *jc = NULL;
 	char *realwho;
 	xmlnode x;
 
@@ -1450,10 +1482,10 @@
 static int jabber_chat_send(struct gaim_connection *gc, int id, char *message)
 {
 	GSList *bcs = gc->buddy_chats;
-	struct conversation *b;
+	struct conversation *b = NULL;
 	struct jabber_data *jd = gc->proto_data;
 	xmlnode x, y;
-	struct jabber_chat *jc;
+	struct jabber_chat *jc = NULL;
 	char *chatname;
 
 	while (bcs) {
@@ -1497,10 +1529,10 @@
 static void jabber_chat_set_topic(struct gaim_connection *gc, int id, char *topic)
 {
 	GSList *bcs = gc->buddy_chats;
-	struct conversation *b;
+	struct conversation *b = NULL;
 	struct jabber_data *jd = gc->proto_data;
 	xmlnode x, y;
-	struct jabber_chat *jc;
+	struct jabber_chat *jc = NULL;
 	char *chatname;
 	char buf[8192];
 
@@ -1547,10 +1579,10 @@
 static void jabber_chat_whisper(struct gaim_connection *gc, int id, char *who, char *message)
 {
 	GSList *bcs = gc->buddy_chats;
-	struct conversation *b;
+	struct conversation *b = NULL;
 	struct jabber_data *jd = gc->proto_data;
 	xmlnode x, y;
-	struct jabber_chat *jc;
+	struct jabber_chat *jc = NULL;
 	char *chatname;
 
 	while (bcs) {
@@ -2005,7 +2037,7 @@
 	ret->rem_deny = NULL;
 	ret->set_permit_deny = NULL;
 	ret->warn = NULL;
-	ret->accept_chat = NULL;
+	ret->chat_info = jabber_chat_info;
 	ret->join_chat = jabber_join_chat;
 	ret->chat_invite = jabber_chat_invite;
 	ret->chat_leave = jabber_chat_leave;