Mercurial > hg
changeset 2051:71d84213f850
Add option -e (eval) to say_to
author | Mikael Berthe <mikael@lilotux.net> |
---|---|
date | Wed, 28 Nov 2012 18:13:26 +0100 |
parents | 998feaa54ef0 |
children | 053fd04e5a4d |
files | mcabber/mcabber/commands.c |
diffstat | 1 files changed, 20 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/mcabber/mcabber/commands.c Wed Nov 28 17:55:03 2012 +0100 +++ b/mcabber/mcabber/commands.c Wed Nov 28 18:13:26 2012 +0100 @@ -1633,11 +1633,14 @@ static void do_say_to(char *arg) { char **paramlst; - char *fjid, *msg; + char *fjid, *msg_utf8; + char *msg; + char *unescaped_msg = NULL; char *uncompletedfjid = NULL; char *file = NULL; LmMessageSubType msg_type = LM_MESSAGE_SUB_TYPE_NOT_SET; bool quiet = FALSE; + bool eval = FALSE; if (!xmpp_is_online()) { scr_LogPrint(LPRINT_NORMAL, "You are not connected."); @@ -1660,6 +1663,11 @@ paramlst = split_arg(*(oldparamlst+1), 2, 1); // jid, message free_arg_lst(oldparamlst); quiet = TRUE; + } else if (!strcmp(*paramlst, "-e")) { + char **oldparamlst = paramlst; + paramlst = split_arg(*(oldparamlst+1), 2, 1); // jid, message + free_arg_lst(oldparamlst); + eval = TRUE; } else if (!strcmp(*paramlst, "-f")) { char **oldparamlst = paramlst; paramlst = split_arg(*(oldparamlst+1), 2, 1); // filename, jid @@ -1723,13 +1731,20 @@ } if (!file) { - msg = to_utf8(msg); + msg_utf8 = to_utf8(msg); + if (eval) { + unescaped_msg = ut_unescape_tabs_cr(msg_utf8); + // We must not free() if the original string was returned + if (unescaped_msg == msg_utf8) + unescaped_msg = NULL; + } + msg = (unescaped_msg ? unescaped_msg : msg_utf8); } else { char *filename_xp; if (msg) scr_LogPrint(LPRINT_NORMAL, "say_to: extra parameter ignored."); filename_xp = expand_filename(file); - msg = load_message_from_file(filename_xp); + msg = msg_utf8 = load_message_from_file(filename_xp); g_free(filename_xp); g_free(file); } @@ -1738,7 +1753,8 @@ g_free(uncompletedfjid); g_free(fjid); - g_free(msg); + g_free(msg_utf8); + g_free(unescaped_msg); free_arg_lst(paramlst); }