diff options
| author | Wilmer van der Gaast <wilmer@gaast.net> | 2007-04-21 19:15:36 -0700 | 
|---|---|---|
| committer | Wilmer van der Gaast <wilmer@gaast.net> | 2007-04-21 19:15:36 -0700 | 
| commit | c737ba70c7b3510ffb6bed8f9373e63b1a150c1b (patch) | |
| tree | b2120d3b436973ad4d6e57b5699738565c829c39 | |
| parent | df1fb67d1dbf52d138f63e0d917dda2412d4fc0b (diff) | |
join_chat root command works for AIM chats now. (Was trivial to add and
useful for testing.)
| -rw-r--r-- | protocols/nogaim.h | 2 | ||||
| -rw-r--r-- | protocols/oscar/oscar.c | 24 | 
2 files changed, 15 insertions, 11 deletions
| diff --git a/protocols/nogaim.h b/protocols/nogaim.h index 6be7b489..59f9e870 100644 --- a/protocols/nogaim.h +++ b/protocols/nogaim.h @@ -163,7 +163,7 @@ struct prpl {  	struct groupchat *  	     (* chat_with)	(struct im_connection *, char *who);  	struct groupchat * -	     (* chat_join)	(struct im_connection *, char *chat, char *nick, char *password); +	     (* chat_join)	(struct im_connection *, char *room, char *nick, char *password);  	GList *(* away_states)(struct im_connection *ic); diff --git a/protocols/oscar/oscar.c b/protocols/oscar/oscar.c index 1ca932f3..0c175df6 100644 --- a/protocols/oscar/oscar.c +++ b/protocols/oscar/oscar.c @@ -2529,36 +2529,39 @@ void oscar_chat_leave(struct groupchat *c)  	oscar_chat_kill(c->ic, c->data);  } -int oscar_chat_join(struct im_connection * ic, char * name) +struct groupchat *oscar_chat_join(struct im_connection * ic, char * room, char * nick, char * password )  {  	struct oscar_data * od = (struct oscar_data *)ic->proto_data; -	  	aim_conn_t * cur;  	if((cur = aim_getconn_type(od->sess, AIM_CONN_TYPE_CHATNAV))) { -	 -		return (aim_chatnav_createroom(od->sess, cur, name, 4) == 0); -	 +		int st; +		 +		st = aim_chatnav_createroom(od->sess, cur, room, 4); +		 +		return NULL;  	} else {  		struct create_room * cr = g_new0(struct create_room, 1); +		  		cr->exchange = 4; -		cr->name = g_strdup(name); +		cr->name = g_strdup(room);  		od->create_rooms = g_slist_append(od->create_rooms, cr);  		aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_CHATNAV); -		return 1; +		 +		return NULL;  	}  }  struct groupchat *oscar_chat_with(struct im_connection * ic, char *who)  {  	struct oscar_data * od = (struct oscar_data *)ic->proto_data; -	int ret; +	struct groupchat *ret;  	static int chat_id = 0;  	char * chatname;  	chatname = g_strdup_printf("%s%d", ic->acc->user, chat_id++); -	ret = oscar_chat_join(ic, chatname); +	ret = oscar_chat_join(ic, chatname, NULL, NULL);  	aim_chat_invite(od->sess, od->conn, who, "", 4, chatname, 0x0); @@ -2569,7 +2572,7 @@ struct groupchat *oscar_chat_with(struct im_connection * ic, char *who)  void oscar_accept_chat(gpointer w, struct aim_chat_invitation * inv)  { -	oscar_chat_join(inv->ic, inv->name); +	oscar_chat_join(inv->ic, inv->name, NULL, NULL);  	g_free(inv->name);  	g_free(inv);  } @@ -2599,6 +2602,7 @@ void oscar_initmodule()  	ret->chat_invite = oscar_chat_invite;  	ret->chat_leave = oscar_chat_leave;  	ret->chat_with = oscar_chat_with; +	ret->chat_join = oscar_chat_join;  	ret->add_permit = oscar_add_permit;  	ret->add_deny = oscar_add_deny;  	ret->rem_permit = oscar_rem_permit; | 
