[ekg2-devel] Ludzie IRCa. (people.c)

Wiesław Ochmiński wiechu w wiechu.com
Wto, 5 Lut 2008, 23:04:53 CET


On Tue, Feb 05, 2008 at 07:17:17PM +0100, Wiesław Ochmiński wrote:
> Kłaniam!
> 
> Pojawianie się i znikanie użytkownika z kanału odnotowuje się teraz
> prawidłowo na liście użytkowników wyświetlanej w trybie "wszystkie listy".

Wszystko jak powyżej (z dodatkiem rozłączania się z jabbera), ale nie
tamta łata (kto to pisał?!) tylko ta dołaczona teraz.

-- 
 Wiesław Ochmiński, Polska Północna, Malbork.
-------------- następna część ---------
Index: plugins/jabber/commands.c
===================================================================
--- plugins/jabber/commands.c	(wersja 3739)
+++ plugins/jabber/commands.c	(kopia robocza)
@@ -170,6 +170,8 @@
 
 /* w libtlenie jest <show>unavailable</show> + eskejpiete tlen_encode() */
 
+	char *__session = xstrdup(session_uid_get(session));
+
 	if (session->connected) {
 #if 0
 		char *lt = session_get(session, "__last_typing");
@@ -182,11 +184,9 @@
 #endif
 
 		{
-			char *__session = xstrdup(session_uid_get(session));
 
 			query_emit_id(NULL, PROTOCOL_DISCONNECTING, &__session);
 
-			xfree(__session);
 		}
 
 		if (descr) {
@@ -201,6 +201,11 @@
 	else		watch_write(j->send_watch, "</s>");
 
 	userlist_free(session);
+
+	query_emit_id(NULL, USERLIST_CHANGED, &__session, &(session->userlist));
+
+	xfree(__session);
+
 	if (j->connecting)
 		jabber_handle_disconnect(session, descr, EKG_DISCONNECT_STOPPED);
 	else
Index: plugins/irc/people.c
===================================================================
--- plugins/irc/people.c	(wersja 3739)
+++ plugins/irc/people.c	(kopia robocza)
@@ -24,6 +24,7 @@
 #include <ekg/debug.h>
 #include <ekg/dynstuff.h>
 #include <ekg/sessions.h>
+#include <ekg/queries.h>
 #include <ekg/userlist.h>
 #include <ekg/xmalloc.h>
 
@@ -165,6 +166,9 @@
 	/*	debug("+userlisty %d, ", mode); */
 		ulist = userlist_add_u(&(w->userlist), ircnick, nick);
 		irccol = irc_color_in_contacts(modes, mode, ulist);
+		char *__session = xstrdup(session_uid_get(s));
+		query_emit_id(NULL, USERLIST_CHANGED, &__session, &(ulist->uid));
+		xfree(__session);
 	}
 
 	/* add entry in private->people if nick's not yet there */
@@ -212,7 +216,7 @@
 		 * and he's not on that channel... */
 		return NULL;
 
-	//query_emit(NULL, "userlist-changed", __session, __uid);
+	//query_emit(NULL, "userlist-changed", __session, __uid); /* wiechu: done! */
 	return irc_add_person_int(s, j, nick, chan);
 }
 
@@ -266,6 +270,9 @@
 	/* delete from userlist 
 		debug("-userlisty, "); */
 		userlist_remove_u(&(w->userlist), ulist);
+		char *__session = xstrdup(session_uid_get(s));
+		query_emit_id(NULL, USERLIST_CHANGED, &__session, &(ulist->uid));
+		xfree(__session);
 	}
 	
 	if ((tmp = irc_find_person_chan(nick->channels, chan->name))) {


Więcej informacji o liście dyskusyjnej ekg2-devel