diff --git a/src/common/inbound.c b/src/common/inbound.c index 3737e479..401e9562 100644 --- a/src/common/inbound.c +++ b/src/common/inbound.c @@ -778,7 +778,7 @@ inbound_join (server *serv, char *chan, char *user, char *ip, char *account, session *sess = find_channel (serv, chan); if (sess) { - EMIT_SIGNAL_TIMESTAMP (XP_TE_JOIN, sess, user, chan, ip, NULL, 0, + EMIT_SIGNAL_TIMESTAMP (XP_TE_JOIN, sess, user, chan, ip, account, 0, tags_data->timestamp); userlist_add (sess, user, ip, account, realname, tags_data); } diff --git a/src/common/proto-irc.c b/src/common/proto-irc.c index 8f31d5c1..fa5446c4 100644 --- a/src/common/proto-irc.c +++ b/src/common/proto-irc.c @@ -1042,8 +1042,12 @@ process_named_msg (session *sess, char *type, char *word[], char *word_eol[], { char *chan = word[3]; char *account = word[4]; - char *realname = word_eol[5] + 1; + char *realname = word_eol[5]; + if (account && strcmp (account, "*") == 0) + account = NULL; + if (realname && *realname == ':') + realname++; if (*chan == ':') chan++; if (!serv->p_cmp (nick, serv->nick)) diff --git a/src/common/text.c b/src/common/text.c index e7cef398..cac76054 100644 --- a/src/common/text.c +++ b/src/common/text.c @@ -1026,6 +1026,7 @@ static char * const pevt_join_help[] = { N_("The nick of the joining person"), N_("The channel being joined"), N_("The host of the person"), + N_("The account of the person"), }; static char * const pevt_chanaction_help[] = { diff --git a/src/common/textevents.in b/src/common/textevents.in index 3631e363..26e2b3e3 100644 --- a/src/common/textevents.in +++ b/src/common/textevents.in @@ -494,7 +494,7 @@ Join XP_TE_JOIN pevt_join_help %C23*$t$1 ($3%C23) has joined -3 +4 Keyword XP_TE_KEYWORD diff --git a/src/common/userlist.c b/src/common/userlist.c index 7565fcd4..e08cb857 100644 --- a/src/common/userlist.c +++ b/src/common/userlist.c @@ -416,7 +416,7 @@ userlist_add (struct session *sess, char *name, char *hostname, /* extended join info */ if (sess->server->have_extjoin) { - if (account && strcmp (account, "*") != 0) + if (account && *account) user->account = strdup (account); if (realname && *realname) user->realname = strdup (realname);