Mercurial > ~mikael > mcabber > hg
diff mcabber/mcabber/commands.c @ 2122:b41719d57dac
reimplement 'unescape_topic' option as '/room topic -u' switch
author | sh!zeeg <shizeeque@gmail.com> |
---|---|
date | Wed, 14 May 2014 10:47:56 +0400 |
parents | 9c791e2a437a |
children | 300e7bf4416a |
line wrap: on
line diff
--- a/mcabber/mcabber/commands.c Tue May 13 21:18:22 2014 +0400 +++ b/mcabber/mcabber/commands.c Wed May 14 10:47:56 2014 +0400 @@ -2935,16 +2935,30 @@ } // If arg is "-", let's clear the topic - if (!strcmp(arg, "-")) + if (!g_strcmp0(arg, "-")) arg = NULL; arg = to_utf8(arg); // if arg is not NULL & option is set, unescape it - if (arg && settings_opt_get_int("unescape_topic")) { - gchar *tmp; - tmp = g_strcompress(arg); - g_free(arg); - arg = tmp; + if (arg) { + char *unescaped_topic = NULL; + + if (!strncmp(arg, "-u ", 3)) { + char *tmp; + tmp = g_strdup(arg + 3); + g_free(arg); + arg = tmp; + unescaped_topic = ut_unescape_tabs_cr(arg); + } + + // We must not free() if the original string was returned + if (unescaped_topic == arg) + unescaped_topic = NULL; + + if (unescaped_topic != NULL) { + free(arg); + arg = unescaped_topic; + } } // Set the topic