[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