about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/common.c100
-rw-r--r--src/common.h8
-rw-r--r--src/jabber.c14
-rw-r--r--src/muc.c99
-rw-r--r--src/muc.h8
-rw-r--r--src/windows.c3
6 files changed, 117 insertions, 115 deletions
diff --git a/src/common.c b/src/common.c
index d79bff64..4bb4cc4d 100644
--- a/src/common.c
+++ b/src/common.c
@@ -167,3 +167,103 @@ prof_getline(FILE *stream)
     free(buf);
     return s;
 }
+
+/*
+ * Given a full room JID of the form
+ * room@server/nick
+ * Will create two new strings and point room and nick to them e.g.
+ * *room = "room@server", *nick = "nick"
+ * The strings must be freed by the caller
+ * Returns TRUE if the JID was parsed successfully, FALSE otherwise
+ */
+gboolean
+parse_room_jid(const char * const full_room_jid, char **room, char **nick)
+{
+    char **tokens = g_strsplit(full_room_jid, "/", 0);
+
+    if (tokens == NULL || tokens[0] == NULL || tokens[1] == NULL) {
+        return FALSE;
+    } else {
+        *room = strdup(tokens[0]);
+        *nick = strdup(tokens[1]);
+
+        g_strfreev(tokens);
+
+        return TRUE;
+    }
+}
+
+/*
+ * Given a room name, and a nick name create and return a full JID of the form
+ * room@server/nick
+ * Will return a newly created string that must be freed by the caller
+ */
+char *
+create_full_room_jid(const char * const room, const char * const nick)
+{
+    GString *full_jid = g_string_new(room);
+    g_string_append(full_jid, "/");
+    g_string_append(full_jid, nick);
+
+    char *result = strdup(full_jid->str);
+
+    g_string_free(full_jid, TRUE);
+
+    return result;
+}
+
+/*
+ * Returns TRUE if the JID is a room JID
+ * The test is that the passed JID does not contain a "/"
+ */
+gboolean
+jid_is_room(const char * const room_jid)
+{
+    gchar *result = g_strrstr(room_jid, "/");
+    return (result == NULL);
+}
+
+/*
+ * Get the room name part of the full JID, e.g.
+ * Full JID = "test@conference.server/person"
+ * returns "test@conference.server"
+ */
+char *
+get_room_from_full_jid(const char * const full_room_jid)
+{
+    char **tokens = g_strsplit(full_room_jid, "/", 0);
+    char *room_part;
+
+    if (tokens == NULL || tokens[0] == NULL) {
+        return NULL;
+    } else {
+        room_part = strdup(tokens[0]);
+
+        g_strfreev(tokens);
+
+        return room_part;
+    }
+}
+
+/*
+ * Get the nickname part of the full JID, e.g.
+ * Full JID = "test@conference.server/person"
+ * returns "person"
+ */
+char *
+get_nick_from_full_jid(const char * const full_room_jid)
+{
+    char **tokens = g_strsplit(full_room_jid, "/", 0);
+    char *nick_part;
+
+    if (tokens == NULL || tokens[1] == NULL) {
+        return NULL;
+    } else {
+        nick_part = strdup(tokens[1]);
+
+        g_strfreev(tokens);
+
+        return nick_part;
+    }
+}
+
diff --git a/src/common.h b/src/common.h
index 72623f0c..5974b517 100644
--- a/src/common.h
+++ b/src/common.h
@@ -44,4 +44,12 @@ int str_contains(char str[], int size, char ch);
 char* encode_xml(const char * const xml);
 char * prof_getline(FILE *stream);
 
+gboolean jid_is_room(const char * const room_jid);
+char * create_full_room_jid(const char * const room,
+    const char * const nick);
+char * get_room_from_full_jid(const char * const full_room_jid);
+char * get_nick_from_full_jid(const char * const full_room_jid);
+gboolean parse_room_jid(const char * const full_room_jid, char **room,
+    char **nick);
+
 #endif
diff --git a/src/jabber.c b/src/jabber.c
index 790037f6..8b60a837 100644
--- a/src/jabber.c
+++ b/src/jabber.c
@@ -349,7 +349,7 @@ jabber_get_subscription_requests(void)
 void
 jabber_join(const char * const room, const char * const nick)
 {
-    char *full_room_jid = room_create_full_room_jid(room, nick);
+    char *full_room_jid = create_full_room_jid(room, nick);
     xmpp_stanza_t *presence = stanza_create_room_join_presence(jabber_conn.ctx,
         full_room_jid);
     xmpp_send(jabber_conn.conn, presence);
@@ -363,7 +363,7 @@ jabber_join(const char * const room, const char * const nick)
 void
 jabber_change_room_nick(const char * const room, const char * const nick)
 {
-    char *full_room_jid = room_create_full_room_jid(room, nick);
+    char *full_room_jid = create_full_room_jid(room, nick);
     xmpp_stanza_t *presence = stanza_create_room_newnick_presence(jabber_conn.ctx,
         full_room_jid);
     xmpp_send(jabber_conn.conn, presence);
@@ -458,7 +458,7 @@ jabber_update_presence(jabber_presence_t status, const char * const msg,
     while (rooms != NULL) {
         char *room = rooms->data;
         char *nick = muc_get_room_nick(room);
-        char *full_room_jid = room_create_full_room_jid(room, nick);
+        char *full_room_jid = create_full_room_jid(room, nick);
 
         xmpp_stanza_set_attribute(presence, STANZA_ATTR_TO, full_room_jid);
         xmpp_send(jabber_conn.conn, presence);
@@ -572,14 +572,14 @@ _groupchat_message_handler(xmpp_stanza_t * const stanza)
     gchar *room_jid = xmpp_stanza_get_attribute(stanza, STANZA_ATTR_FROM);
 
     // handle room broadcasts
-    if (room_from_jid_is_room(room_jid)) {
+    if (jid_is_room(room_jid)) {
         xmpp_stanza_t *subject = xmpp_stanza_get_child_by_name(stanza, STANZA_NAME_SUBJECT);
 
         // handle subject
         if (subject != NULL) {
             message = xmpp_stanza_get_text(subject);
             if (message != NULL) {
-                room = room_get_room_from_full_jid(room_jid);
+                room = get_room_from_full_jid(room_jid);
                 prof_handle_room_subject(room, message);
             }
 
@@ -600,7 +600,7 @@ _groupchat_message_handler(xmpp_stanza_t * const stanza)
     }
 
     // room jid not of form room/nick
-    if (!room_parse_room_jid(room_jid, &room, &nick)) {
+    if (!parse_room_jid(room_jid, &room, &nick)) {
         log_error("Could not parse room jid: %s", room_jid);
         g_free(room);
         g_free(nick);
@@ -977,7 +977,7 @@ _room_presence_handler(const char * const jid, xmpp_stanza_t * const stanza)
     char *room = NULL;
     char *nick = NULL;
 
-    if (!room_parse_room_jid(jid, &room, &nick)) {
+    if (!parse_room_jid(jid, &room, &nick)) {
         log_error("Could not parse room jid: %s", room);
         g_free(room);
         g_free(nick);
diff --git a/src/muc.c b/src/muc.c
index 171f4085..c98c223b 100644
--- a/src/muc.c
+++ b/src/muc.c
@@ -344,105 +344,6 @@ muc_complete_roster_nick_change(const char * const room,
     return NULL;
 }
 
-/*
- * Get the room name part of the full JID, e.g.
- * Full JID = "test@conference.server/person"
- * returns "test@conference.server"
- */
-char *
-room_get_room_from_full_jid(const char * const full_room_jid)
-{
-    char **tokens = g_strsplit(full_room_jid, "/", 0);
-    char *room_part;
-
-    if (tokens == NULL || tokens[0] == NULL) {
-        return NULL;
-    } else {
-        room_part = strdup(tokens[0]);
-
-        g_strfreev(tokens);
-
-        return room_part;
-    }
-}
-
-/*
- * Returns TRUE if the JID is a room JID
- * The test is that the passed JID does not contain a "/"
- */
-gboolean
-room_from_jid_is_room(const char * const room_jid)
-{
-    gchar *result = g_strrstr(room_jid, "/");
-    return (result == NULL);
-}
-
-/*
- * Get the nickname part of the full JID, e.g.
- * Full JID = "test@conference.server/person"
- * returns "person"
- */
-char *
-room_get_nick_from_full_jid(const char * const full_room_jid)
-{
-    char **tokens = g_strsplit(full_room_jid, "/", 0);
-    char *nick_part;
-
-    if (tokens == NULL || tokens[1] == NULL) {
-        return NULL;
-    } else {
-        nick_part = strdup(tokens[1]);
-
-        g_strfreev(tokens);
-
-        return nick_part;
-    }
-}
-
-/*
- * Given a room name, and a nick name create and return a full JID of the form
- * room@server/nick
- * Will return a newly created string that must be freed by the caller
- */
-char *
-room_create_full_room_jid(const char * const room, const char * const nick)
-{
-    GString *full_jid = g_string_new(room);
-    g_string_append(full_jid, "/");
-    g_string_append(full_jid, nick);
-
-    char *result = strdup(full_jid->str);
-
-    g_string_free(full_jid, TRUE);
-
-    return result;
-}
-
-/*
- * Given a full room JID of the form
- * room@server/nick
- * Will create two new strings and point room and nick to them e.g.
- * *room = "room@server", *nick = "nick"
- * The strings must be freed by the caller
- * Returns TRUE if the JID was parsed successfully, FALSE otherwise
- */
-gboolean
-room_parse_room_jid(const char * const full_room_jid, char **room, char **nick)
-{
-    char **tokens = g_strsplit(full_room_jid, "/", 0);
-
-    if (tokens == NULL || tokens[0] == NULL || tokens[1] == NULL) {
-        return FALSE;
-    } else {
-        *room = strdup(tokens[0]);
-        *nick = strdup(tokens[1]);
-
-        g_strfreev(tokens);
-
-        return TRUE;
-    }
-}
-
 static void
 _free_room(muc_room *room)
 {
diff --git a/src/muc.h b/src/muc.h
index f4a15c9a..a27b8432 100644
--- a/src/muc.h
+++ b/src/muc.h
@@ -52,12 +52,4 @@ void muc_set_roster_pending_nick_change(const char * const room,
 char* muc_complete_roster_nick_change(const char * const room,
     const char * const nick);
 
-gboolean room_from_jid_is_room(const char * const room_jid);
-char * room_create_full_room_jid(const char * const room,
-    const char * const nick);
-char * room_get_room_from_full_jid(const char * const full_room_jid);
-char * room_get_nick_from_full_jid(const char * const full_room_jid);
-gboolean room_parse_room_jid(const char * const full_room_jid, char **room,
-    char **nick);
-
 #endif
diff --git a/src/windows.c b/src/windows.c
index aeba6cd4..7015017d 100644
--- a/src/windows.c
+++ b/src/windows.c
@@ -47,6 +47,7 @@
 #include "chat_log.h"
 #include "chat_session.h"
 #include "command.h"
+#include "common.h"
 #include "contact.h"
 #include "contact_list.h"
 #include "log.h"
@@ -330,7 +331,7 @@ ui_show_incoming_msg(const char * const from, const char * const message,
     win_type_t win_type;
     if (priv) {
         win_type = WIN_PRIVATE;
-        display_from = room_get_nick_from_full_jid(from);
+        display_from = get_nick_from_full_jid(from);
     } else {
         win_type = WIN_CHAT;
         display_from = strdup(from);