aboutsummaryrefslogtreecommitdiff
path: root/src/cmd.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd.c')
-rw-r--r--src/cmd.c24
1 files changed, 23 insertions, 1 deletions
diff --git a/src/cmd.c b/src/cmd.c
index f4e94b6..bad5a28 100644
--- a/src/cmd.c
+++ b/src/cmd.c
@@ -19,6 +19,7 @@ static void do_j1(void);
static void do_list(void);
static void do_me(void);
static void do_msg(void);
+static void do_names(void);
static void do_part(void);
static void do_ping(void);
static void do_query(void);
@@ -34,7 +35,7 @@ typedef struct {
} cmd_t;
/* future commands:
- OP DEOP VOICE DEVOICE KICK BAN KB IGNORE UNIGNORE MODE
+ AWAY OP DEOP VOICE DEVOICE KICK BAN KB IGNORE UNIGNORE MODE
*/
cmd_t command_defs[] = {
{ "COLOR", do_color, 1 },
@@ -47,6 +48,7 @@ cmd_t command_defs[] = {
{ "M", do_msg, 1 },
{ "ME", do_me, 1 },
{ "MSG", do_msg, 1 },
+ { "NAMES", do_names, 0 },
{ "PART", do_part, 0 },
{ "PING", do_ping, 0 },
{ "Q", do_query, 1 },
@@ -191,6 +193,22 @@ static void do_topic(void) {
txbuf_send();
}
+static void do_names(void) {
+ if(arg1[0] == '#') {
+ target = arg1;
+ arg2 = nextarg(arg1);
+ } else {
+ arg2 = arg1;
+ }
+
+ if(!target) {
+ err_target_req();
+ return;
+ }
+ txbuf_set_str2("NAMES ", target);
+ txbuf_send();
+}
+
static void do_server_info(void) {
txbuf_send_str("INFO");
}
@@ -272,6 +290,10 @@ static void do_color(void) {
}
static void do_query(void) {
+ /* don't create a query if we already got one! */
+ if(scr_getbyname(arg1))
+ return;
+
if(scr_create(arg1, 1) == 0xff) {
err_marker();
scr_print_current("Can't create query, all screens in use\n");