static void sig_presence_changed(XMPP_SERVER_REC *server, const char *full_jid, int show, const char *status) { XMPP_QUERY_REC *rec; XMPP_ROSTER_USER_REC *user; const char *msg; char *name; g_return_if_fail(server != NULL); g_return_if_fail(full_jid != NULL); g_return_if_fail(0 <= show && show < XMPP_PRESENCE_SHOW_LEN); if ((rec = xmpp_query_find(server, full_jid)) == NULL) return; msg = fe_xmpp_presence_show[show]; user = rosters_find_user(server->roster, full_jid, NULL, NULL); name = user != NULL && user->name != NULL ? format_get_text(MODULE_NAME, NULL, server, NULL, XMPPTXT_FORMAT_NAME, user->name, full_jid) : format_get_text(MODULE_NAME, NULL, server, NULL, XMPPTXT_FORMAT_JID, full_jid); if (status != NULL) printformat_module(MODULE_NAME, server, full_jid, MSGLEVEL_CRAP, XMPPTXT_PRESENCE_CHANGE_REASON, name, msg, status); else printformat_module(MODULE_NAME, server, full_jid, MSGLEVEL_CRAP, XMPPTXT_PRESENCE_CHANGE, name, msg); }
static void sig_composing_hide(XMPP_SERVER_REC *server, const char *dest) { XMPP_QUERY_REC *query; if ((query = xmpp_query_find(server, dest)) != NULL) query->composing_visible = FALSE; }