if (!(*word[i + offset]))
break;
num_args++;
+ if (word[i + offset][0] == ':')
+ break;
}
/* count the number of modes (without the -/+ chars */
if ((all_modes_have_args || mode_has_arg (serv, sign, *modes)) && arg < (num_args + 1))
{
arg++;
- argstr = word[arg + offset];
+ argstr = STRIP_COLON(word, word_eol, arg+offset);
}
handle_single_mode (&mr, sign, *modes, nick, chan,
argstr, numeric_324 || prefs.hex_irc_raw_modes,
break;
case 333:
- inbound_topictime (serv, word[4], word[5], atol (word[6]), tags_data);
+ inbound_topictime (serv, word[4], word[5], atol (STRIP_COLON(word, word_eol, 6)), tags_data);
break;
#if 0
#endif
case 341: /* INVITE ACK */
- EMIT_SIGNAL_TIMESTAMP (XP_TE_UINVITE, sess, word[4], word[5],
+ EMIT_SIGNAL_TIMESTAMP (XP_TE_UINVITE, sess, word[4], STRIP_COLON(word, word_eol, 5),
serv->servername, NULL, 0, tags_data->timestamp);
break;
{
case WORDL('A','C','C','O'):
- inbound_account (serv, nick, word[3], tags_data);
+ inbound_account (serv, nick, STRIP_COLON(word, word_eol, 3), tags_data);
return;
case WORDL('A', 'U', 'T', 'H'):
return;
case WORDL('C', 'H', 'G', 'H'):
- inbound_user_info (sess, NULL, word[3], word[4], NULL, nick, NULL,
+ inbound_user_info (sess, NULL, word[3], STRIP_COLON(word, word_eol, 4), NULL, nick, NULL,
NULL, 0xff, tags_data);
return;