diff options
author | dequis <dx@dxzone.com.ar> | 2015-11-08 05:16:15 -0300 |
---|---|---|
committer | dequis <dx@dxzone.com.ar> | 2015-11-08 05:16:15 -0300 |
commit | d63f37c78c273bc345daf8c40ce99905212a84a0 (patch) | |
tree | ec4b502590fe2222c33846fe399d30fde7c68f65 | |
parent | 37c965301304e0e83e29f19a5a5b5c7336412d8a (diff) |
IRCv3 extended-join capability
Not very useful for the account features (and i won't implement
account-notify), but it has a real name field, and it's *really* easy to
implement.
-rw-r--r-- | irc.h | 1 | ||||
-rw-r--r-- | irc_cap.c | 1 | ||||
-rw-r--r-- | irc_send.c | 6 |
3 files changed, 7 insertions, 1 deletions
@@ -69,6 +69,7 @@ typedef enum { typedef enum { CAP_SASL = (1 << 0), CAP_MULTI_PREFIX = (1 << 1), + CAP_EXTENDED_JOIN = (1 << 2), } irc_cap_flag_t; struct irc_user; @@ -39,6 +39,7 @@ typedef struct { static const cap_info_t supported_caps[] = { {"sasl", CAP_SASL}, {"multi-prefix", CAP_MULTI_PREFIX}, + {"extended-join", CAP_EXTENDED_JOIN}, {NULL}, }; @@ -171,7 +171,11 @@ void irc_send_join(irc_channel_t *ic, irc_user_t *iu) { irc_t *irc = ic->irc; - irc_write(irc, ":%s!%s@%s JOIN :%s", iu->nick, iu->user, iu->host, ic->name); + if (irc->caps & CAP_EXTENDED_JOIN) { + irc_write(irc, ":%s!%s@%s JOIN %s * :%s", iu->nick, iu->user, iu->host, ic->name, iu->fullname); + } else { + irc_write(irc, ":%s!%s@%s JOIN :%s", iu->nick, iu->user, iu->host, ic->name); + } if (iu == irc->user) { if (ic->topic && *ic->topic) { |