Mercurial > ~mikael > mcabber > hg
diff mcabber/mcabber/xmpp.c @ 1685:1342df44c814
Improved events interface
* User can pass additional arguments to event handler
* MUC invitation reject now can be supplied a reason
author | Myhailo Danylenko <isbear@ukrpost.net> |
---|---|
date | Tue, 02 Feb 2010 22:44:18 +0100 |
parents | 95df4ea512c8 |
children | 51481414ca65 |
line wrap: on
line diff
--- a/mcabber/mcabber/xmpp.c Tue Jan 19 19:16:38 2010 +0200 +++ b/mcabber/mcabber/xmpp.c Tue Feb 02 22:44:18 2010 +0100 @@ -1473,7 +1473,6 @@ if (mstype == LM_MESSAGE_SUB_TYPE_SUBSCRIBE) { /* The sender wishes to subscribe to our presence */ const char *msg; - eviqs *evn; msg = lm_message_node_get_child_value(m->node, "status"); @@ -1492,15 +1491,18 @@ } // Create a new event item - evn = evs_new(EVS_TYPE_SUBSCRIPTION, EVS_MAX_TIMEOUT); - if (evn) { - evn->callback = &evscallback_subscription; - evn->data = g_strdup(r); - evn->desc = g_strdup_printf("<%s> wants to subscribe to your " - "presence updates", r); - buf = g_strdup_printf("Please use /event %s accept|reject", evn->id); - } else { - buf = g_strdup_printf("Unable to create a new event!"); + { + const char *id; + char *desc = g_strdup_printf("<%s> wants to subscribe to your " + "presence updates", r); + + id = evs_new(desc, NULL, 0, evscallback_subscription, g_strdup(r), + (GDestroyNotify)g_free); + g_free(desc); + if (id) + buf = g_strdup_printf("Please use /event %s accept|reject", id); + else + buf = g_strdup_printf("Unable to create a new event!"); } scr_WriteIncomingMessage(r, buf, 0, HBB_PREFIX_INFO, 0); scr_LogPrint(LPRINT_LOGNORM, "%s", buf);