# HG changeset patch # User Jeffrey Connelly # Date 1185087610 0 # Node ID a2298513db8bd21ee98e9fdc923c6a1d16b23450 # Parent c9acdf96e74ea91a9fa7760a7bc4369c691a8458 Move msim_escape() and msim_unescape() to message.c. diff -r c9acdf96e74e -r a2298513db8b libpurple/protocols/myspace/message.c --- a/libpurple/protocols/myspace/message.c Sun Jul 22 06:53:48 2007 +0000 +++ b/libpurple/protocols/myspace/message.c Sun Jul 22 07:00:10 2007 +0000 @@ -22,6 +22,7 @@ #include "myspace.h" #include "message.h" +static gchar *msim_unescape_or_escape(gchar *msg, gboolean escape); static void msim_msg_free_element(gpointer data, gpointer user_data); static void msim_msg_debug_string_element(gpointer data, gpointer user_data); static gchar *msim_msg_pack_using(MsimMessage *msg, GFunc gf, const gchar *sep, const gchar *begin, const gchar *end); @@ -29,6 +30,62 @@ static GList *msim_msg_get_node(MsimMessage *msg, const gchar *name); static MsimMessage *msim_msg_new_v(va_list argp); +/* Replacement codes to be replaced with associated replacement text, + * used for protocol message escaping / unescaping. */ +static gchar* msim_replacement_code[] = { "/1", "/2", /* "/3", */ NULL }; +static gchar* msim_replacement_text[] = { "/", "\\", /* "|", */ NULL }; + +/** + * Unescape or escape a protocol message. + * + * @param msg The message to be unescaped or escaped. WILL BE FREED. + * @param escape TRUE to escape, FALSE to unescape. + * + * @return The unescaped or escaped message. Caller must g_free(). + */ +static gchar * +msim_unescape_or_escape(gchar *msg, gboolean escape) +{ + gchar *tmp, *code, *text; + guint i; + + /* Replace each code in msim_replacement_code with + * corresponding entry in msim_replacement_text. */ + for (i = 0; (code = msim_replacement_code[i]) + && (text = msim_replacement_text[i]); ++i) + { + if (escape) + { + tmp = str_replace(msg, text, code); + } + else + { + tmp = str_replace(msg, code, text); + } + g_free(msg); + msg = tmp; + } + + return msg; +} + +/** + * Escape a protocol message. + * + * @return The escaped message. Caller must g_free(). + */ +gchar * +msim_escape(const gchar *msg) +{ + return msim_unescape_or_escape(g_strdup(msg), TRUE); +} + +gchar * +msim_unescape(const gchar *msg) +{ + return msim_unescape_or_escape(g_strdup(msg), FALSE); +} + /** Create a new MsimMessage. * * @param not_empty FALSE if message is empty, TRUE if variadic arguments follow. diff -r c9acdf96e74e -r a2298513db8b libpurple/protocols/myspace/message.h --- a/libpurple/protocols/myspace/message.h Sun Jul 22 06:53:48 2007 +0000 +++ b/libpurple/protocols/myspace/message.h Sun Jul 22 07:00:10 2007 +0000 @@ -44,6 +44,9 @@ #define MSIM_TYPE_DICTIONARY 'd' #define MSIM_TYPE_LIST 'l' +gchar *msim_escape(const gchar *msg); +gchar *msim_unescape(const gchar *msg); + MsimMessage *msim_msg_new(gboolean not_empty, ...); /* No sentinel attribute, because can leave off varargs if not_empty is FALSE. */ diff -r c9acdf96e74e -r a2298513db8b libpurple/protocols/myspace/myspace.c --- a/libpurple/protocols/myspace/myspace.c Sun Jul 22 06:53:48 2007 +0000 +++ b/libpurple/protocols/myspace/myspace.c Sun Jul 22 07:00:10 2007 +0000 @@ -249,61 +249,7 @@ return "myspace"; } -/* Replacement codes to be replaced with associated replacement text, - * used for protocol message escaping / unescaping. */ -static gchar* msim_replacement_code[] = { "/1", "/2", /* "/3", */ NULL }; -static gchar* msim_replacement_text[] = { "/", "\\", /* "|", */ NULL }; - -/** - * Unescape or escape a protocol message. - * - * @param msg The message to be unescaped or escaped. WILL BE FREED. - * @param escape TRUE to escape, FALSE to unescape. - * - * @return The unescaped or escaped message. Caller must g_free(). - */ -gchar * -msim_unescape_or_escape(gchar *msg, gboolean escape) -{ - gchar *tmp, *code, *text; - guint i; - - /* Replace each code in msim_replacement_code with - * corresponding entry in msim_replacement_text. */ - for (i = 0; (code = msim_replacement_code[i]) - && (text = msim_replacement_text[i]); ++i) - { - if (escape) - { - tmp = str_replace(msg, text, code); - } - else - { - tmp = str_replace(msg, code, text); - } - g_free(msg); - msg = tmp; - } - - return msg; -} - -/** - * Escape a protocol message. - * - * @return The escaped message. Caller must g_free(). - */ -gchar * -msim_escape(const gchar *msg) -{ - return msim_unescape_or_escape(g_strdup(msg), TRUE); -} - -gchar * -msim_unescape(const gchar *msg) -{ - return msim_unescape_or_escape(g_strdup(msg), FALSE); -} + /** * Replace 'old' with 'new' in 'str'. diff -r c9acdf96e74e -r a2298513db8b libpurple/protocols/myspace/myspace.h --- a/libpurple/protocols/myspace/myspace.h Sun Jul 22 06:53:48 2007 +0000 +++ b/libpurple/protocols/myspace/myspace.h Sun Jul 22 07:00:10 2007 +0000 @@ -214,10 +214,6 @@ const gchar *msim_list_icon(PurpleAccount *acct, PurpleBuddy *buddy); -/* TODO: move these three functions to message.c/h */ -gchar *msim_unescape_or_escape(gchar *msg, gboolean escape); -gchar *msim_unescape(const gchar *msg); -gchar *msim_escape(const gchar *msg); gchar *str_replace(const gchar *str, const gchar *old, const gchar *new); void print_hash_item(gpointer key, gpointer value, gpointer user_data);