mcabber/mcabber/commands.c
changeset 2051 71d84213f850
parent 2030 0771e130f79d
child 2074 e04b6dfbb054
equal deleted inserted replaced
2050:998feaa54ef0 2051:71d84213f850
  1631 }
  1631 }
  1632 
  1632 
  1633 static void do_say_to(char *arg)
  1633 static void do_say_to(char *arg)
  1634 {
  1634 {
  1635   char **paramlst;
  1635   char **paramlst;
  1636   char *fjid, *msg;
  1636   char *fjid, *msg_utf8;
       
  1637   char *msg;
       
  1638   char *unescaped_msg = NULL;
  1637   char *uncompletedfjid = NULL;
  1639   char *uncompletedfjid = NULL;
  1638   char *file = NULL;
  1640   char *file = NULL;
  1639   LmMessageSubType msg_type = LM_MESSAGE_SUB_TYPE_NOT_SET;
  1641   LmMessageSubType msg_type = LM_MESSAGE_SUB_TYPE_NOT_SET;
  1640   bool quiet = FALSE;
  1642   bool quiet = FALSE;
       
  1643   bool eval = FALSE;
  1641 
  1644 
  1642   if (!xmpp_is_online()) {
  1645   if (!xmpp_is_online()) {
  1643     scr_LogPrint(LPRINT_NORMAL, "You are not connected.");
  1646     scr_LogPrint(LPRINT_NORMAL, "You are not connected.");
  1644     return;
  1647     return;
  1645   }
  1648   }
  1658     if (!strcmp(*paramlst, "-q")) {
  1661     if (!strcmp(*paramlst, "-q")) {
  1659       char **oldparamlst = paramlst;
  1662       char **oldparamlst = paramlst;
  1660       paramlst = split_arg(*(oldparamlst+1), 2, 1); // jid, message
  1663       paramlst = split_arg(*(oldparamlst+1), 2, 1); // jid, message
  1661       free_arg_lst(oldparamlst);
  1664       free_arg_lst(oldparamlst);
  1662       quiet = TRUE;
  1665       quiet = TRUE;
       
  1666     } else if (!strcmp(*paramlst, "-e")) {
       
  1667       char **oldparamlst = paramlst;
       
  1668       paramlst = split_arg(*(oldparamlst+1), 2, 1); // jid, message
       
  1669       free_arg_lst(oldparamlst);
       
  1670       eval = TRUE;
  1663     } else if (!strcmp(*paramlst, "-f")) {
  1671     } else if (!strcmp(*paramlst, "-f")) {
  1664       char **oldparamlst = paramlst;
  1672       char **oldparamlst = paramlst;
  1665       paramlst = split_arg(*(oldparamlst+1), 2, 1); // filename, jid
  1673       paramlst = split_arg(*(oldparamlst+1), 2, 1); // filename, jid
  1666       free_arg_lst(oldparamlst);
  1674       free_arg_lst(oldparamlst);
  1667       if (!*paramlst) {
  1675       if (!*paramlst) {
  1721     g_free(fjid);
  1729     g_free(fjid);
  1722     return;
  1730     return;
  1723   }
  1731   }
  1724 
  1732 
  1725   if (!file) {
  1733   if (!file) {
  1726     msg = to_utf8(msg);
  1734     msg_utf8 = to_utf8(msg);
       
  1735     if (eval) {
       
  1736       unescaped_msg = ut_unescape_tabs_cr(msg_utf8);
       
  1737       // We must not free() if the original string was returned
       
  1738       if (unescaped_msg == msg_utf8)
       
  1739         unescaped_msg = NULL;
       
  1740     }
       
  1741     msg = (unescaped_msg ? unescaped_msg : msg_utf8);
  1727   } else {
  1742   } else {
  1728     char *filename_xp;
  1743     char *filename_xp;
  1729     if (msg)
  1744     if (msg)
  1730       scr_LogPrint(LPRINT_NORMAL, "say_to: extra parameter ignored.");
  1745       scr_LogPrint(LPRINT_NORMAL, "say_to: extra parameter ignored.");
  1731     filename_xp = expand_filename(file);
  1746     filename_xp = expand_filename(file);
  1732     msg = load_message_from_file(filename_xp);
  1747     msg = msg_utf8 = load_message_from_file(filename_xp);
  1733     g_free(filename_xp);
  1748     g_free(filename_xp);
  1734     g_free(file);
  1749     g_free(file);
  1735   }
  1750   }
  1736 
  1751 
  1737   send_message_to(fjid, msg, NULL, msg_type, quiet);
  1752   send_message_to(fjid, msg, NULL, msg_type, quiet);
  1738 
  1753 
  1739   g_free(uncompletedfjid);
  1754   g_free(uncompletedfjid);
  1740   g_free(fjid);
  1755   g_free(fjid);
  1741   g_free(msg);
  1756   g_free(msg_utf8);
       
  1757   g_free(unescaped_msg);
  1742   free_arg_lst(paramlst);
  1758   free_arg_lst(paramlst);
  1743 }
  1759 }
  1744 
  1760 
  1745 //  buffer_updown(updown, nblines)
  1761 //  buffer_updown(updown, nblines)
  1746 // updown: -1=up, +1=down
  1762 // updown: -1=up, +1=down