about summary refs log tree commit diff stats
path: root/src/xmpp
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2014-01-02 01:57:05 +0000
committerJames Booth <boothj5@gmail.com>2014-01-02 01:57:05 +0000
commit170af88c0dc736087d40d3591c1880d8af17b5e6 (patch)
tree29c912e2fe3261e758691254dbddbe43c6d139c7 /src/xmpp
parentbc700fbfeac560946991063313f293a9861d4d1d (diff)
parent3fbd45bd0603d51255c9e6df2a56d5cd5de4dd2b (diff)
downloadprofani-tty-170af88c0dc736087d40d3591c1880d8af17b5e6.tar.gz
Merge branch 'master' into otr
Conflicts:
	Makefile.am
Diffstat (limited to 'src/xmpp')
-rw-r--r--src/xmpp/bookmark.c30
-rw-r--r--src/xmpp/capabilities.c15
-rw-r--r--src/xmpp/connection.c69
-rw-r--r--src/xmpp/iq.c25
-rw-r--r--src/xmpp/message.c45
-rw-r--r--src/xmpp/presence.c59
-rw-r--r--src/xmpp/roster.c33
-rw-r--r--src/xmpp/xmpp.h106
8 files changed, 236 insertions, 146 deletions
diff --git a/src/xmpp/bookmark.c b/src/xmpp/bookmark.c
index 0818f9ee..4516454f 100644
--- a/src/xmpp/bookmark.c
+++ b/src/xmpp/bookmark.c
@@ -61,8 +61,8 @@ bookmark_request(void)
     xmpp_stanza_release(iq);
 }
 
-void
-bookmark_add(const char *jid, const char *nick, gboolean autojoin)
+static void
+_bookmark_add(const char *jid, const char *nick, gboolean autojoin)
 {
     /* TODO: send request */
     /* TODO: manage bookmark_list */
@@ -72,8 +72,8 @@ bookmark_add(const char *jid, const char *nick, gboolean autojoin)
     autocomplete_add(bookmark_ac, jid);
 }
 
-void
-bookmark_remove(const char *jid, gboolean autojoin)
+static void
+_bookmark_remove(const char *jid, gboolean autojoin)
 {
     /* TODO: manage bookmark_list */
     if (autojoin) {
@@ -84,20 +84,20 @@ bookmark_remove(const char *jid, gboolean autojoin)
     }
 }
 
-const GList *
-bookmark_get_list(void)
+static const GList *
+_bookmark_get_list(void)
 {
     return bookmark_list;
 }
 
-char *
-bookmark_find(char *search_str)
+static char *
+_bookmark_find(char *search_str)
 {
     return autocomplete_complete(bookmark_ac, search_str);
 }
 
-void
-bookmark_autocomplete_reset(void)
+static void
+_bookmark_autocomplete_reset(void)
 {
     if (bookmark_ac != NULL) {
         autocomplete_reset(bookmark_ac);
@@ -243,3 +243,13 @@ _bookmark_item_destroy(gpointer item)
     free(p->nick);
     free(p);
 }
+
+void
+bookmark_init_module(void)
+{
+    bookmark_add = _bookmark_add;
+    bookmark_remove = _bookmark_remove;
+    bookmark_get_list = _bookmark_get_list;
+    bookmark_find = _bookmark_find;
+    bookmark_autocomplete_reset = _bookmark_autocomplete_reset;
+}
diff --git a/src/xmpp/capabilities.c b/src/xmpp/capabilities.c
index 658be124..fc71ae54 100644
--- a/src/xmpp/capabilities.c
+++ b/src/xmpp/capabilities.c
@@ -107,8 +107,8 @@ caps_contains(const char * const caps_str)
     return (g_hash_table_lookup(capabilities, caps_str) != NULL);
 }
 
-Capabilities *
-caps_get(const char * const caps_str)
+static Capabilities *
+_caps_get(const char * const caps_str)
 {
     return g_hash_table_lookup(capabilities, caps_str);
 }
@@ -303,8 +303,8 @@ caps_create_query_response_stanza(xmpp_ctx_t * const ctx)
     return query;
 }
 
-void
-caps_close(void)
+static void
+_caps_close(void)
 {
     g_hash_table_destroy(capabilities);
 }
@@ -326,3 +326,10 @@ _caps_destroy(Capabilities *caps)
         free(caps);
     }
 }
+
+void
+capabilities_init_module(void)
+{
+    caps_get = _caps_get;
+    caps_close = _caps_close;
+}
diff --git a/src/xmpp/connection.c b/src/xmpp/connection.c
index a1cb31c4..f38da800 100644
--- a/src/xmpp/connection.c
+++ b/src/xmpp/connection.c
@@ -91,8 +91,8 @@ void _connection_free_saved_account(void);
 void _connection_free_saved_details(void);
 void _connection_free_session_data(void);
 
-void
-jabber_init(const int disable_tls)
+static void
+_jabber_init(const int disable_tls)
 {
     log_info("Initialising XMPP");
     jabber_conn.conn_status = JABBER_STARTED;
@@ -108,8 +108,8 @@ jabber_init(const int disable_tls)
     xmpp_initialize();
 }
 
-jabber_conn_status_t
-jabber_connect_with_account(const ProfAccount * const account)
+static jabber_conn_status_t
+_jabber_connect_with_account(const ProfAccount * const account)
 {
     assert(account != NULL);
 
@@ -128,8 +128,8 @@ jabber_connect_with_account(const ProfAccount * const account)
     return result;
 }
 
-jabber_conn_status_t
-jabber_connect_with_details(const char * const jid,
+static jabber_conn_status_t
+_jabber_connect_with_details(const char * const jid,
     const char * const passwd, const char * const altdomain)
 {
     assert(jid != NULL);
@@ -160,8 +160,8 @@ jabber_connect_with_details(const char * const jid,
     return _jabber_connect(saved_details.jid, passwd, saved_details.altdomain);
 }
 
-void
-jabber_disconnect(void)
+static void
+_jabber_disconnect(void)
 {
     // if connected, send end stream and wait for response
     if (jabber_conn.conn_status == JABBER_CONNECTED) {
@@ -190,14 +190,14 @@ jabber_disconnect(void)
     FREE_SET_NULL(jabber_conn.domain);
 }
 
-void
-jabber_shutdown(void)
+static void
+_jabber_shutdown(void)
 {
     xmpp_shutdown();
 }
 
-void
-jabber_process_events(void)
+static void
+_jabber_process_events(void)
 {
     // run xmpp event loop if connected, connecting or disconnecting
     if (jabber_conn.conn_status == JABBER_CONNECTED
@@ -217,8 +217,8 @@ jabber_process_events(void)
 
 }
 
-void
-jabber_set_autoping(const int seconds)
+static void
+_jabber_set_autoping(const int seconds)
 {
     if (jabber_conn.conn_status == JABBER_CONNECTED) {
         xmpp_timed_handler_delete(jabber_conn.conn, _ping_timed_handler);
@@ -231,14 +231,14 @@ jabber_set_autoping(const int seconds)
     }
 }
 
-GList *
-jabber_get_available_resources(void)
+static GList *
+_jabber_get_available_resources(void)
 {
     return g_hash_table_get_values(available_resources);
 }
 
-jabber_conn_status_t
-jabber_get_connection_status(void)
+static jabber_conn_status_t
+_jabber_get_connection_status(void)
 {
     return (jabber_conn.conn_status);
 }
@@ -255,26 +255,26 @@ connection_get_ctx(void)
     return jabber_conn.ctx;
 }
 
-const char *
-jabber_get_fulljid(void)
+static const char *
+_jabber_get_fulljid(void)
 {
     return xmpp_conn_get_jid(jabber_conn.conn);
 }
 
-const char *
-jabber_get_domain(void)
+static const char *
+_jabber_get_domain(void)
 {
     return jabber_conn.domain;
 }
 
-char *
-jabber_get_presence_message(void)
+static char *
+_jabber_get_presence_message(void)
 {
     return jabber_conn.presence_message;
 }
 
-char *
-jabber_get_account_name(void)
+static char *
+_jabber_get_account_name(void)
 {
     return saved_account.name;
 }
@@ -615,3 +615,20 @@ _xmpp_get_file_logger()
     return file_log;
 }
 
+void
+jabber_init_module(void)
+{
+    jabber_init = _jabber_init;
+    jabber_connect_with_account = _jabber_connect_with_account;
+    jabber_connect_with_details = _jabber_connect_with_details;
+    jabber_disconnect = _jabber_disconnect;
+    jabber_shutdown = _jabber_shutdown;
+    jabber_process_events = _jabber_process_events;
+    jabber_set_autoping = _jabber_set_autoping;
+    jabber_get_available_resources = _jabber_get_available_resources;
+    jabber_get_connection_status = _jabber_get_connection_status;
+    jabber_get_fulljid = _jabber_get_fulljid;
+    jabber_get_domain = _jabber_get_domain;
+    jabber_get_presence_message = _jabber_get_presence_message;
+    jabber_get_account_name = _jabber_get_account_name;
+}
diff --git a/src/xmpp/iq.c b/src/xmpp/iq.c
index fdabe771..369d7f7e 100644
--- a/src/xmpp/iq.c
+++ b/src/xmpp/iq.c
@@ -75,8 +75,8 @@ iq_add_handlers(void)
     HANDLE(STANZA_NS_PING,      STANZA_TYPE_GET,    _iq_handle_ping_get);
 }
 
-void
-iq_room_list_request(gchar *conferencejid)
+static void
+_iq_room_list_request(gchar *conferencejid)
 {
     xmpp_conn_t * const conn = connection_get_conn();
     xmpp_ctx_t * const ctx = connection_get_ctx();
@@ -85,8 +85,8 @@ iq_room_list_request(gchar *conferencejid)
     xmpp_stanza_release(iq);
 }
 
-void
-iq_disco_info_request(gchar *jid)
+static void
+_iq_disco_info_request(gchar *jid)
 {
     xmpp_conn_t * const conn = connection_get_conn();
     xmpp_ctx_t * const ctx = connection_get_ctx();
@@ -95,8 +95,8 @@ iq_disco_info_request(gchar *jid)
     xmpp_stanza_release(iq);
 }
 
-void
-iq_disco_items_request(gchar *jid)
+static void
+_iq_disco_items_request(gchar *jid)
 {
     xmpp_conn_t * const conn = connection_get_conn();
     xmpp_ctx_t * const ctx = connection_get_ctx();
@@ -105,8 +105,8 @@ iq_disco_items_request(gchar *jid)
     xmpp_stanza_release(iq);
 }
 
-void
-iq_send_software_version(const char * const fulljid)
+static void
+_iq_send_software_version(const char * const fulljid)
 {
     xmpp_conn_t * const conn = connection_get_conn();
     xmpp_ctx_t * const ctx = connection_get_ctx();
@@ -567,3 +567,12 @@ _iq_handle_discoitems_result(xmpp_conn_t * const conn, xmpp_stanza_t * const sta
 
     return 1;
 }
+
+void
+iq_init_module(void)
+{
+    iq_room_list_request = _iq_room_list_request;
+    iq_disco_info_request = _iq_disco_info_request;
+    iq_disco_items_request = _iq_disco_items_request;
+    iq_send_software_version = _iq_send_software_version;
+}
diff --git a/src/xmpp/message.c b/src/xmpp/message.c
index a1644587..482a3965 100644
--- a/src/xmpp/message.c
+++ b/src/xmpp/message.c
@@ -57,8 +57,8 @@ message_add_handlers(void)
     HANDLE(NULL, NULL,                   _conference_message_handler);
 }
 
-void
-message_send(const char * const msg, const char * const recipient)
+static void
+_message_send(const char * const msg, const char * const recipient)
 {
     const char * jid = NULL;
 
@@ -90,8 +90,8 @@ message_send(const char * const msg, const char * const recipient)
     xmpp_stanza_release(message);
 }
 
-void
-message_send_groupchat(const char * const msg, const char * const recipient)
+static void
+_message_send_groupchat(const char * const msg, const char * const recipient)
 {
     xmpp_conn_t * const conn = connection_get_conn();
     xmpp_ctx_t * const ctx = connection_get_ctx();
@@ -102,8 +102,8 @@ message_send_groupchat(const char * const msg, const char * const recipient)
     xmpp_stanza_release(message);
 }
 
-void
-message_send_duck(const char * const query)
+static void
+_message_send_duck(const char * const query)
 {
     xmpp_conn_t * const conn = connection_get_conn();
     xmpp_ctx_t * const ctx = connection_get_ctx();
@@ -114,8 +114,8 @@ message_send_duck(const char * const query)
     xmpp_stanza_release(message);
 }
 
-void
-message_send_invite(const char * const room, const char * const contact,
+static void
+_message_send_invite(const char * const room, const char * const contact,
     const char * const reason)
 {
     xmpp_conn_t * const conn = connection_get_conn();
@@ -126,8 +126,8 @@ message_send_invite(const char * const room, const char * const contact,
     xmpp_stanza_release(stanza);
 }
 
-void
-message_send_composing(const char * const recipient)
+static void
+_message_send_composing(const char * const recipient)
 {
     xmpp_conn_t * const conn = connection_get_conn();
     xmpp_ctx_t * const ctx = connection_get_ctx();
@@ -139,8 +139,8 @@ message_send_composing(const char * const recipient)
     chat_session_set_sent(recipient);
 }
 
-void
-message_send_paused(const char * const recipient)
+static void
+_message_send_paused(const char * const recipient)
 {
     xmpp_conn_t * const conn = connection_get_conn();
     xmpp_ctx_t * const ctx = connection_get_ctx();
@@ -152,8 +152,8 @@ message_send_paused(const char * const recipient)
     chat_session_set_sent(recipient);
 }
 
-void
-message_send_inactive(const char * const recipient)
+static void
+_message_send_inactive(const char * const recipient)
 {
     xmpp_conn_t * const conn = connection_get_conn();
     xmpp_ctx_t * const ctx = connection_get_ctx();
@@ -165,8 +165,8 @@ message_send_inactive(const char * const recipient)
     chat_session_set_sent(recipient);
 }
 
-void
-message_send_gone(const char * const recipient)
+static void
+_message_send_gone(const char * const recipient)
 {
     xmpp_conn_t * const conn = connection_get_conn();
     xmpp_ctx_t * const ctx = connection_get_ctx();
@@ -439,3 +439,16 @@ _chat_message_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza,
     }
 }
 
+void
+message_init_module(void)
+{
+    message_send = _message_send;
+    message_send_groupchat = _message_send_groupchat;
+    message_send_duck = _message_send_duck;
+    message_send_invite = _message_send_invite;
+    message_send_composing = _message_send_composing;
+    message_send_paused = _message_send_paused;
+    message_send_inactive = _message_send_inactive;
+    message_send_gone = _message_send_gone;
+}
+
diff --git a/src/xmpp/presence.c b/src/xmpp/presence.c
index ba9c6c02..3ca2f63e 100644
--- a/src/xmpp/presence.c
+++ b/src/xmpp/presence.c
@@ -80,8 +80,8 @@ presence_add_handlers(void)
     HANDLE(NULL,               NULL,                     _available_handler);
 }
 
-void
-presence_subscription(const char * const jid, const jabber_subscr_t action)
+static void
+_presence_subscription(const char * const jid, const jabber_subscr_t action)
 {
     assert(jid != NULL);
 
@@ -122,14 +122,14 @@ presence_subscription(const char * const jid, const jabber_subscr_t action)
     jid_destroy(jidp);
 }
 
-GSList *
-presence_get_subscription_requests(void)
+static GSList *
+_presence_get_subscription_requests(void)
 {
     return autocomplete_get_list(sub_requests_ac);
 }
 
-gint
-presence_sub_request_count(void)
+static gint
+_presence_sub_request_count(void)
 {
     return autocomplete_length(sub_requests_ac);
 }
@@ -146,14 +146,14 @@ presence_clear_sub_requests(void)
     autocomplete_clear(sub_requests_ac);
 }
 
-char *
-presence_sub_request_find(char * search_str)
+static char *
+_presence_sub_request_find(char * search_str)
 {
     return autocomplete_complete(sub_requests_ac, search_str);
 }
 
-gboolean
-presence_sub_request_exists(const char * const bare_jid)
+static gboolean
+_presence_sub_request_exists(const char * const bare_jid)
 {
     gboolean result = FALSE;
     GSList *requests_p = autocomplete_get_list(sub_requests_ac);
@@ -174,14 +174,14 @@ presence_sub_request_exists(const char * const bare_jid)
     return result;
 }
 
-void
-presence_reset_sub_request_search(void)
+static void
+_presence_reset_sub_request_search(void)
 {
     autocomplete_reset(sub_requests_ac);
 }
 
-void
-presence_update(const resource_presence_t presence_type, const char * const msg,
+static void
+_presence_update(const resource_presence_t presence_type, const char * const msg,
     const int idle)
 {
     if (jabber_get_connection_status() != JABBER_CONNECTED) {
@@ -252,8 +252,8 @@ _send_room_presence(xmpp_conn_t *conn, xmpp_stanza_t *presence)
     }
 }
 
-void
-presence_join_room(Jid *jid)
+static void
+_presence_join_room(Jid *jid)
 {
     assert(jid != NULL);
     assert(jid->fulljid != NULL);
@@ -261,7 +261,7 @@ presence_join_room(Jid *jid)
     log_debug("Sending room join presence to: %s", jid->fulljid);
     xmpp_ctx_t *ctx = connection_get_ctx();
     xmpp_conn_t *conn = connection_get_conn();
-    contact_presence_t presence_type =
+    resource_presence_t presence_type =
         accounts_get_last_presence(jabber_get_account_name());
     const char *show = stanza_get_presence_string_from_type(presence_type);
     char *status = jabber_get_presence_message();
@@ -280,8 +280,8 @@ presence_join_room(Jid *jid)
     muc_join_room(jid->barejid, jid->resourcepart);
 }
 
-void
-presence_change_room_nick(const char * const room, const char * const nick)
+static void
+_presence_change_room_nick(const char * const room, const char * const nick)
 {
     assert(room != NULL);
     assert(nick != NULL);
@@ -289,7 +289,7 @@ presence_change_room_nick(const char * const room, const char * const nick)
     log_debug("Sending room nickname change to: %s, nick: %s", room, nick);
     xmpp_ctx_t *ctx = connection_get_ctx();
     xmpp_conn_t *conn = connection_get_conn();
-    contact_presence_t presence_type =
+    resource_presence_t presence_type =
         accounts_get_last_presence(jabber_get_account_name());
     const char *show = stanza_get_presence_string_from_type(presence_type);
     char *status = jabber_get_presence_message();
@@ -310,8 +310,8 @@ presence_change_room_nick(const char * const room, const char * const nick)
     free(full_room_jid);
 }
 
-void
-presence_leave_chat_room(const char * const room_jid)
+static void
+_presence_leave_chat_room(const char * const room_jid)
 {
     assert(room_jid != NULL);
 
@@ -686,3 +686,18 @@ _room_presence_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza,
 
     return 1;
 }
+
+void
+presence_init_module(void)
+{
+    presence_subscription = _presence_subscription;
+    presence_get_subscription_requests = _presence_get_subscription_requests;
+    presence_sub_request_count = _presence_sub_request_count;
+    presence_sub_request_find = _presence_sub_request_find;
+    presence_sub_request_exists = _presence_sub_request_exists;
+    presence_reset_sub_request_search = _presence_reset_sub_request_search;
+    presence_update = _presence_update;
+    presence_join_room = _presence_join_room;
+    presence_change_room_nick = _presence_change_room_nick;
+    presence_leave_chat_room = _presence_leave_chat_room;
+}
diff --git a/src/xmpp/roster.c b/src/xmpp/roster.c
index 51c34ea1..e84de155 100644
--- a/src/xmpp/roster.c
+++ b/src/xmpp/roster.c
@@ -81,8 +81,8 @@ roster_request(void)
     xmpp_stanza_release(iq);
 }
 
-void
-roster_add_new(const char * const barejid, const char * const name)
+static void
+_roster_add_new(const char * const barejid, const char * const name)
 {
     xmpp_conn_t * const conn = connection_get_conn();
     xmpp_ctx_t * const ctx = connection_get_ctx();
@@ -91,8 +91,8 @@ roster_add_new(const char * const barejid, const char * const name)
     xmpp_stanza_release(iq);
 }
 
-void
-roster_send_remove(const char * const barejid)
+static void
+_roster_send_remove(const char * const barejid)
 {
     xmpp_conn_t * const conn = connection_get_conn();
     xmpp_ctx_t * const ctx = connection_get_ctx();
@@ -101,8 +101,8 @@ roster_send_remove(const char * const barejid)
     xmpp_stanza_release(iq);
 }
 
-void
-roster_send_name_change(const char * const barejid, const char * const new_name, GSList *groups)
+static void
+_roster_send_name_change(const char * const barejid, const char * const new_name, GSList *groups)
 {
     xmpp_conn_t * const conn = connection_get_conn();
     xmpp_ctx_t * const ctx = connection_get_ctx();
@@ -112,8 +112,8 @@ roster_send_name_change(const char * const barejid, const char * const new_name,
     xmpp_stanza_release(iq);
 }
 
-void
-roster_send_add_to_group(const char * const group, PContact contact)
+static void
+_roster_send_add_to_group(const char * const group, PContact contact)
 {
     GSList *groups = p_contact_groups(contact);
     GSList *new_groups = NULL;
@@ -157,8 +157,8 @@ _group_add_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza,
     return 0;
 }
 
-void
-roster_send_remove_from_group(const char * const group, PContact contact)
+static void
+_roster_send_remove_from_group(const char * const group, PContact contact)
 {
     GSList *groups = p_contact_groups(contact);
     GSList *new_groups = NULL;
@@ -297,7 +297,7 @@ _roster_handle_result(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza,
             item = xmpp_stanza_get_next(item);
         }
 
-        contact_presence_t conn_presence =
+        resource_presence_t conn_presence =
             accounts_get_login_presence(jabber_get_account_name());
         presence_update(conn_presence, NULL, 0);
     }
@@ -323,3 +323,14 @@ _get_groups_from_item(xmpp_stanza_t *item)
 
     return groups;
 }
+
+void
+roster_init_module(void)
+{
+    roster_add_new = _roster_add_new;
+    roster_send_remove = _roster_send_remove;
+    roster_send_name_change = _roster_send_name_change;
+    roster_send_add_to_group = _roster_send_add_to_group;
+    roster_send_remove_from_group = _roster_send_remove_from_group;
+
+}
diff --git a/src/xmpp/xmpp.h b/src/xmpp/xmpp.h
index 21c25aa4..90b17e59 100644
--- a/src/xmpp/xmpp.h
+++ b/src/xmpp/xmpp.h
@@ -74,66 +74,74 @@ typedef struct disco_identity_t {
     char *category;
 } DiscoIdentity;
 
+void jabber_init_module(void);
+void bookmark_init_module(void);
+void capabilities_init_module(void);
+void iq_init_module(void);
+void message_init_module(void);
+void presence_init_module(void);
+void roster_init_module(void);
+
 // connection functions
-void jabber_init(const int disable_tls);
-jabber_conn_status_t jabber_connect_with_details(const char * const jid,
+void (*jabber_init)(const int disable_tls);
+jabber_conn_status_t (*jabber_connect_with_details)(const char * const jid,
     const char * const passwd, const char * const altdomain);
-jabber_conn_status_t jabber_connect_with_account(const ProfAccount * const account);
-void jabber_disconnect(void);
-void jabber_shutdown(void);
-void jabber_process_events(void);
-const char * jabber_get_fulljid(void);
-const char * jabber_get_domain(void);
-jabber_conn_status_t jabber_get_connection_status(void);
-char * jabber_get_presence_message(void);
-void jabber_set_autoping(int seconds);
-char* jabber_get_account_name(void);
-GList * jabber_get_available_resources(void);
+jabber_conn_status_t (*jabber_connect_with_account)(const ProfAccount * const account);
+void (*jabber_disconnect)(void);
+void (*jabber_shutdown)(void);
+void (*jabber_process_events)(void);
+const char * (*jabber_get_fulljid)(void);
+const char * (*jabber_get_domain)(void);
+jabber_conn_status_t (*jabber_get_connection_status)(void);
+char * (*jabber_get_presence_message)(void);
+void (*jabber_set_autoping)(int seconds);
+char* (*jabber_get_account_name)(void);
+GList * (*jabber_get_available_resources)(void);
 
 // message functions
-void message_send(const char * const msg, const char * const recipient);
-void message_send_groupchat(const char * const msg, const char * const recipient);
-void message_send_inactive(const char * const recipient);
-void message_send_composing(const char * const recipient);
-void message_send_paused(const char * const recipient);
-void message_send_gone(const char * const recipient);
-void message_send_invite(const char * const room, const char * const contact,
+void (*message_send)(const char * const msg, const char * const recipient);
+void (*message_send_groupchat)(const char * const msg, const char * const recipient);
+void (*message_send_inactive)(const char * const recipient);
+void (*message_send_composing)(const char * const recipient);
+void (*message_send_paused)(const char * const recipient);
+void (*message_send_gone)(const char * const recipient);
+void (*message_send_invite)(const char * const room, const char * const contact,
     const char * const reason);
-void message_send_duck(const char * const query);
+void (*message_send_duck)(const char * const query);
 
 // presence functions
-void presence_subscription(const char * const jid, const jabber_subscr_t action);
-GSList* presence_get_subscription_requests(void);
-gint presence_sub_request_count(void);
-void presence_reset_sub_request_search(void);
-char * presence_sub_request_find(char * search_str);
-void presence_join_room(Jid *jid);
-void presence_change_room_nick(const char * const room, const char * const nick);
-void presence_leave_chat_room(const char * const room_jid);
-void presence_update(resource_presence_t status, const char * const msg,
+void (*presence_subscription)(const char * const jid, const jabber_subscr_t action);
+GSList* (*presence_get_subscription_requests)(void);
+gint (*presence_sub_request_count)(void);
+void (*presence_reset_sub_request_search)(void);
+char * (*presence_sub_request_find)(char * search_str);
+void (*presence_join_room)(Jid *jid);
+void (*presence_change_room_nick)(const char * const room, const char * const nick);
+void (*presence_leave_chat_room)(const char * const room_jid);
+void (*presence_update)(resource_presence_t status, const char * const msg,
     int idle);
-gboolean presence_sub_request_exists(const char * const bare_jid);
+gboolean (*presence_sub_request_exists)(const char * const bare_jid);
 
 // iq functions
-void iq_send_software_version(const char * const fulljid);
-void iq_room_list_request(gchar *conferencejid);
-void iq_disco_info_request(gchar *jid);
-void iq_disco_items_request(gchar *jid);
+void (*iq_send_software_version)(const char * const fulljid);
+void (*iq_room_list_request)(gchar *conferencejid);
+void (*iq_disco_info_request)(gchar *jid);
+void (*iq_disco_items_request)(gchar *jid);
 
 // caps functions
-Capabilities* caps_get(const char * const caps_str);
-void caps_close(void);
-
-void bookmark_add(const char *jid, const char *nick, gboolean autojoin);
-void bookmark_remove(const char *jid, gboolean autojoin);
-const GList *bookmark_get_list(void);
-char *bookmark_find(char *search_str);
-void bookmark_autocomplete_reset(void);
-
-void roster_send_name_change(const char * const barejid, const char * const new_name, GSList *groups);
-void roster_send_add_to_group(const char * const group, PContact contact);
-void roster_send_remove_from_group(const char * const group, PContact contact);
-void roster_add_new(const char * const barejid, const char * const name);
-void roster_send_remove(const char * const barejid);
+Capabilities* (*caps_get)(const char * const caps_str);
+void (*caps_close)(void);
+
+void (*bookmark_add)(const char *jid, const char *nick, gboolean autojoin);
+void (*bookmark_remove)(const char *jid, gboolean autojoin);
+const GList * (*bookmark_get_list)(void);
+char * (*bookmark_find)(char *search_str);
+void (*bookmark_autocomplete_reset)(void);
+
+void (*roster_send_name_change)(const char * const barejid, const char * const new_name, GSList *groups);
+void (*roster_send_add_to_group)(const char * const group, PContact contact);
+void (*roster_send_remove_from_group)(const char * const group, PContact contact);
+void (*roster_add_new)(const char * const barejid, const char * const name);
+void (*roster_send_remove)(const char * const barejid);
 
 #endif