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