mcabber/src/commands.c
changeset 480 882e1acae422
parent 475 fa49ac0bb8f3
child 484 00e2d3821a5b
equal deleted inserted replaced
479:b82428ac107d 480:882e1acae422
    38 static void do_add(char *arg);
    38 static void do_add(char *arg);
    39 static void do_del(char *arg);
    39 static void do_del(char *arg);
    40 static void do_group(char *arg);
    40 static void do_group(char *arg);
    41 static void do_say(char *arg);
    41 static void do_say(char *arg);
    42 static void do_msay(char *arg);
    42 static void do_msay(char *arg);
       
    43 static void do_say_to(char *arg);
    43 static void do_buffer(char *arg);
    44 static void do_buffer(char *arg);
    44 static void do_clear(char *arg);
    45 static void do_clear(char *arg);
    45 static void do_info(char *arg);
    46 static void do_info(char *arg);
    46 static void do_rename(char *arg);
    47 static void do_rename(char *arg);
    47 static void do_move(char *arg);
    48 static void do_move(char *arg);
    99   cmd_add("rename", "Rename the current buddy", 0, 0, &do_rename);
   100   cmd_add("rename", "Rename the current buddy", 0, 0, &do_rename);
   100   //cmd_add("request_auth");
   101   //cmd_add("request_auth");
   101   cmd_add("roster", "Manipulate the roster/buddylist", COMPL_ROSTER, 0,
   102   cmd_add("roster", "Manipulate the roster/buddylist", COMPL_ROSTER, 0,
   102           &do_roster);
   103           &do_roster);
   103   cmd_add("say", "Say something to the selected buddy", 0, 0, &do_say);
   104   cmd_add("say", "Say something to the selected buddy", 0, 0, &do_say);
       
   105   cmd_add("say_to", "Say something to a specific buddy", 0, 0, &do_say_to);
   104   //cmd_add("search");
   106   //cmd_add("search");
   105   //cmd_add("send_auth");
   107   //cmd_add("send_auth");
   106   cmd_add("set", "Set/query an option value", 0, 0, &do_set);
   108   cmd_add("set", "Set/query an option value", 0, 0, &do_set);
   107   cmd_add("status", "Show or set your status", COMPL_STATUS, 0, &do_status);
   109   cmd_add("status", "Show or set your status", COMPL_STATUS, 0, &do_status);
   108   cmd_add("status_to", "Show or set your status for one recipient",
   110   cmd_add("status_to", "Show or set your status for one recipient",
   650   buddy_setflags(bud, ROSTER_FLAG_LOCK, TRUE);
   652   buddy_setflags(bud, ROSTER_FLAG_LOCK, TRUE);
   651   send_message(scr_get_multiline());
   653   send_message(scr_get_multiline());
   652   scr_set_multimode(FALSE);
   654   scr_set_multimode(FALSE);
   653 }
   655 }
   654 
   656 
       
   657 static void do_say_to(char *arg)
       
   658 {
       
   659   char *jid, *msg;
       
   660   char *bare_jid, *p;
       
   661 
       
   662   if (!jb_getonline()) {
       
   663     scr_LogPrint(LPRINT_NORMAL, "You are not connected");
       
   664     return;
       
   665   }
       
   666 
       
   667   msg = strchr(arg, ' ');
       
   668   if (!msg) {
       
   669     scr_LogPrint(LPRINT_NORMAL, "Missing parameter");
       
   670     return;
       
   671   }
       
   672 
       
   673   jid = g_strndup(arg, msg - arg);
       
   674 
       
   675   if (check_jid_syntax(jid)) {
       
   676     scr_LogPrint(LPRINT_NORMAL, "<%s> is not a valid Jabber id", jid);
       
   677     g_free(jid);
       
   678     return;
       
   679   }
       
   680 
       
   681   while (*msg == ' ') msg++;
       
   682   if (!*msg) {
       
   683     scr_LogPrint(LPRINT_NORMAL, "Wrong or missing parameter");
       
   684     g_free(jid);
       
   685     return;
       
   686   }
       
   687 
       
   688   // We must use the bare jid in hk_message_out()
       
   689   p = strchr(jid, '/');
       
   690   if (p) bare_jid = g_strndup(jid, p - jid);
       
   691   else   bare_jid = jid;
       
   692 
       
   693   // Jump to window, create one if needed
       
   694   scr_RosterJumpJid(bare_jid);
       
   695 
       
   696   // local part (UI, logging, etc.)
       
   697   hk_message_out(bare_jid, 0, msg);
       
   698 
       
   699   // Network part
       
   700   jb_send_msg(jid, msg, ROSTER_TYPE_USER, NULL);
       
   701   g_free(jid);
       
   702   if (p) g_free(bare_jid);
       
   703 }
       
   704 
   655 static void do_buffer(char *arg)
   705 static void do_buffer(char *arg)
   656 {
   706 {
   657   int search_dir = 0;
   707   int search_dir = 0;
   658 
   708 
   659   if (!current_buddy) return;
   709   if (!current_buddy) return;