Mercurial > hg
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; |