diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/command/commands.c | 77 |
1 files changed, 44 insertions, 33 deletions
diff --git a/src/command/commands.c b/src/command/commands.c index e4717bff..1a55765e 100644 --- a/src/command/commands.c +++ b/src/command/commands.c @@ -3125,46 +3125,57 @@ gboolean cmd_tiny(gchar **args, struct cmd_help_t help) { char *url = args[0]; - win_type_t win_type = ui_current_win_type(); + ProfWin *current = wins_get_current(); + + if (current->type != WIN_CHAT && current->type != WIN_MUC && current->type != WIN_PRIVATE) { + cons_show("/tiny can only be used in chat windows"); + return TRUE; + } if (!tinyurl_valid(url)) { - GString *error = g_string_new("/tiny, badly formed URL: "); - g_string_append(error, url); - cons_show_error(error->str); - if (win_type != WIN_CONSOLE) { - ui_current_error_line(error->str); - } - g_string_free(error, TRUE); - } else if (win_type != WIN_CONSOLE) { - char *tiny = tinyurl_get(url); + win_vprint(current, '-', NULL, 0, THEME_ERROR, "", "/tiny, badly formed URL: %s", url); + return TRUE; + } - if (tiny != NULL) { - if (win_type == WIN_CHAT) { - ProfChatWin *chatwin = wins_get_current_chat(); + char *tiny = tinyurl_get(url); + if (!tiny) { + win_print(current, '-', NULL, 0, THEME_ERROR, "", "Couldn't create tinyurl."); + return TRUE; + } + + switch (current->type){ + case WIN_CHAT: + { + ProfChatWin *chatwin = wins_get_current_chat(); #ifdef HAVE_LIBOTR - if (otr_is_secure(chatwin->barejid)) { - _send_otr_chat_message(chatwin->barejid, tiny); - } else { - _send_chat_message(chatwin->barejid, tiny); - } -#else - _send_chat_message(chatwin->barejid, tiny); -#endif - } else if (win_type == WIN_PRIVATE) { - ProfPrivateWin *privatewin = wins_get_current_private(); - message_send_private(privatewin->fulljid, tiny); - ui_outgoing_private_msg(privatewin->fulljid, tiny); - } else if (win_type == WIN_MUC) { - ProfMucWin *mucwin = wins_get_current_muc(); - message_send_groupchat(mucwin->roomjid, tiny); - } - free(tiny); + if (otr_is_secure(chatwin->barejid)) { + _send_otr_chat_message(chatwin->barejid, tiny); } else { - cons_show_error("Couldn't get tinyurl."); + _send_chat_message(chatwin->barejid, tiny); } - } else { - cons_show("/tiny can only be used in chat windows"); +#else + _send_chat_message(chatwin->barejid, tiny); +#endif + break; } + case WIN_PRIVATE: + { + ProfPrivateWin *privatewin = wins_get_current_private(); + message_send_private(privatewin->fulljid, tiny); + ui_outgoing_private_msg(privatewin->fulljid, tiny); + break; + } + case WIN_MUC: + { + ProfMucWin *mucwin = wins_get_current_muc(); + message_send_groupchat(mucwin->roomjid, tiny); + break; + } + default: + break; + } + + free(tiny); return TRUE; } |