From 4d641963e40e2873cd66003246f3839595cfd763 Mon Sep 17 00:00:00 2001 From: James Booth Date: Sat, 6 Jun 2015 22:44:53 +0100 Subject: [PATCH] Moved stanza_to_string --- src/server/stanza.c | 52 ++++++++++++++++++++++++++++++++++++++++++++ src/server/stanza.h | 1 + src/server/stanzas.c | 52 -------------------------------------------- src/server/stanzas.h | 2 -- 4 files changed, 53 insertions(+), 54 deletions(-) diff --git a/src/server/stanza.c b/src/server/stanza.c index dd26c89..c53558e 100644 --- a/src/server/stanza.c +++ b/src/server/stanza.c @@ -53,6 +53,58 @@ stanza_new(const char *name, const char **attributes) return stanza; } +char * +stanza_to_string(XMPPStanza *stanza) +{ + GString *stanza_str = g_string_new("<"); + + g_string_append(stanza_str, stanza->name); + + if (stanza->attrs) { + GList *curr = stanza->attrs; + while (curr) { + XMPPAttr *attr = curr->data; + g_string_append(stanza_str, " "); + g_string_append(stanza_str, attr->name); + g_string_append(stanza_str, "=\""); + g_string_append(stanza_str, attr->value); + g_string_append(stanza_str, "\""); + + curr = g_list_next(curr); + } + } + + if (stanza->content) { + g_string_append(stanza_str, ">"); + g_string_append(stanza_str, stanza->content->str); + g_string_append(stanza_str, "name); + g_string_append(stanza_str, ">"); + } else if (stanza->children) { + g_string_append(stanza_str, ">"); + + GList *curr = stanza->children; + while (curr) { + XMPPStanza *child = curr->data; + char *child_str = stanza_to_string(child); + g_string_append(stanza_str, child_str); + free(child_str); + curr = g_list_next(curr); + } + + g_string_append(stanza_str, "name); + g_string_append(stanza_str, ">"); + } else { + g_string_append(stanza_str, "/>"); + } + + char *result = stanza_str->str; + g_string_free(stanza_str, FALSE); + + return result; +} + static void start_element(void *data, const char *element, const char **attributes) { diff --git a/src/server/stanza.h b/src/server/stanza.h index e76860b..d86af1d 100644 --- a/src/server/stanza.h +++ b/src/server/stanza.h @@ -40,5 +40,6 @@ typedef struct xmpp_stanza_t { XMPPStanza* stanza_new(const char *name, const char **attributes); XMPPStanza* parse_stanza(char *stanza_text); +char* stanza_to_string(XMPPStanza *stanza); #endif diff --git a/src/server/stanzas.c b/src/server/stanzas.c index 0cd6ee5..4c9f7a0 100644 --- a/src/server/stanzas.c +++ b/src/server/stanzas.c @@ -31,58 +31,6 @@ pthread_mutex_t stanzas_lock; static GList *stanzas; -char * -stanza_to_string(XMPPStanza *stanza) -{ - GString *stanza_str = g_string_new("<"); - - g_string_append(stanza_str, stanza->name); - - if (stanza->attrs) { - GList *curr = stanza->attrs; - while (curr) { - XMPPAttr *attr = curr->data; - g_string_append(stanza_str, " "); - g_string_append(stanza_str, attr->name); - g_string_append(stanza_str, "=\""); - g_string_append(stanza_str, attr->value); - g_string_append(stanza_str, "\""); - - curr = g_list_next(curr); - } - } - - if (stanza->content) { - g_string_append(stanza_str, ">"); - g_string_append(stanza_str, stanza->content->str); - g_string_append(stanza_str, "name); - g_string_append(stanza_str, ">"); - } else if (stanza->children) { - g_string_append(stanza_str, ">"); - - GList *curr = stanza->children; - while (curr) { - XMPPStanza *child = curr->data; - char *child_str = stanza_to_string(child); - g_string_append(stanza_str, child_str); - free(child_str); - curr = g_list_next(curr); - } - - g_string_append(stanza_str, "name); - g_string_append(stanza_str, ">"); - } else { - g_string_append(stanza_str, "/>"); - } - - char *result = stanza_str->str; - g_string_free(stanza_str, FALSE); - - return result; -} - int stanzas_contains_id(char *id) { diff --git a/src/server/stanzas.h b/src/server/stanzas.h index bfb17a4..7c8ba86 100644 --- a/src/server/stanzas.h +++ b/src/server/stanzas.h @@ -44,6 +44,4 @@ int stanzas_contains_id(char *id); void stanza_free(XMPPStanza *stanza); void stanza_free_all(void); -char* stanza_to_string(XMPPStanza *stanza); - #endif