comparison mcabber/src/commands.c @ 480:882e1acae422

Add /say_to command
author Mikael Berthe <mikael@lilotux.net>
date Tue, 04 Oct 2005 19:47:50 +0200
parents fa49ac0bb8f3
children 00e2d3821a5b
comparison
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;