aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/cmd.c23
1 files changed, 21 insertions, 2 deletions
diff --git a/src/cmd.c b/src/cmd.c
index 2f5b59e..7b7b96c 100644
--- a/src/cmd.c
+++ b/src/cmd.c
@@ -46,9 +46,9 @@ cmd_t command_defs[] = {
{ "COLOR", do_color, 1 },
{ "CTCP", do_ctcp, 1 },
{ "INFO", do_info, 0 },
- { "J", do_j, 1 },
+ { "J", do_j, 0 },
{ "J1", do_j1, 1 },
- { "JOIN", do_j, 1 },
+ { "JOIN", do_j, 0 },
{ "JOIN1", do_j1, 1 },
{ "LIST", do_list, 1 },
{ "M", do_msg, 1 },
@@ -137,12 +137,31 @@ static char *nextarg(char *arg) {
return 0;
}
+static char have_commas(void) {
+ if(strchr(arg1, ',')) {
+ err_marker();
+ scr_print_current("JOIN doesn't support commas\n");
+ return 1;
+ }
+ return 0;
+}
+
static void do_j1(void) {
+ if(have_commas())
+ return;
txbuf_set_str2("JOIN ", arg1);
txbuf_send();
}
static void do_j(void) {
+ if(!arg1)
+ arg1 = target; /* rejoin channel if window is 'dead' */
+ if(!arg1) {
+ err_no_scr_target();
+ return;
+ }
+ if(have_commas())
+ return;
if(!scr_getbyname(arg1))
scr_create(arg1, 1);
do_j1();