void inbound_quit (server *serv, char *nick, char *ip, char *reason) { GSList *list = sess_list; session *sess; struct User *user; int was_on_front_session = FALSE; while (list) { sess = (session *) list->data; if (sess->server == serv) { if (sess == current_sess) was_on_front_session = TRUE; if ((user = userlist_find (sess, nick))) { EMIT_SIGNAL (XP_TE_QUIT, sess, nick, reason, ip, NULL, 0); userlist_remove_user (sess, user); } else if (sess->type == SESS_DIALOG && !serv->p_cmp (sess->channel, nick)) { EMIT_SIGNAL (XP_TE_QUIT, sess, nick, reason, ip, NULL, 0); } } list = list->next; } notify_set_offline (serv, nick, was_on_front_session); }
bool userlist_remove (struct session *sess, const char name[]) { auto user = userlist_find (sess, name); if (!user) return false; userlist_remove_user (sess, user); return true; }
int userlist_remove (struct session *sess, char *name) { struct User *user; user = userlist_find (sess, name); if (!user) return FALSE; userlist_remove_user (sess, user); return TRUE; }
int fe_userlist_remove (struct session *sess, struct User *user) { return userlist_remove_user (u, sess, user); }