kike: implement CAP userhost-in-names
This commit is contained in:
parent
5c5be1af07
commit
a60fc4d47f
14
kike.c
14
kike.c
|
@ -297,7 +297,8 @@ enum
|
||||||
{
|
{
|
||||||
IRC_CAP_MULTI_PREFIX = (1 << 0),
|
IRC_CAP_MULTI_PREFIX = (1 << 0),
|
||||||
IRC_CAP_INVITE_NOTIFY = (1 << 1),
|
IRC_CAP_INVITE_NOTIFY = (1 << 1),
|
||||||
IRC_CAP_ECHO_MESSAGE = (1 << 2)
|
IRC_CAP_ECHO_MESSAGE = (1 << 2),
|
||||||
|
IRC_CAP_USERHOST_IN_NAMES = (1 << 3)
|
||||||
};
|
};
|
||||||
|
|
||||||
struct client
|
struct client
|
||||||
|
@ -1146,8 +1147,8 @@ irc_handle_cap_ls (struct client *c, struct irc_cap_args *a)
|
||||||
a->subcommand, "Ignoring invalid protocol version number");
|
a->subcommand, "Ignoring invalid protocol version number");
|
||||||
|
|
||||||
c->cap_negotiating = true;
|
c->cap_negotiating = true;
|
||||||
client_send (c, "CAP %s LS :multi-prefix invite-notify echo-message",
|
client_send (c, "CAP %s LS :multi-prefix invite-notify echo-message"
|
||||||
a->target);
|
" userhost-in-names", a->target);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -1162,6 +1163,8 @@ irc_handle_cap_list (struct client *c, struct irc_cap_args *a)
|
||||||
str_vector_add (&caps, "invite-notify");
|
str_vector_add (&caps, "invite-notify");
|
||||||
if (c->caps_enabled & IRC_CAP_ECHO_MESSAGE)
|
if (c->caps_enabled & IRC_CAP_ECHO_MESSAGE)
|
||||||
str_vector_add (&caps, "echo-message");
|
str_vector_add (&caps, "echo-message");
|
||||||
|
if (c->caps_enabled & IRC_CAP_USERHOST_IN_NAMES)
|
||||||
|
str_vector_add (&caps, "userhost-in-names");
|
||||||
|
|
||||||
char *caps_str = join_str_vector (&caps, ' ');
|
char *caps_str = join_str_vector (&caps, ' ');
|
||||||
str_vector_free (&caps);
|
str_vector_free (&caps);
|
||||||
|
@ -1178,6 +1181,8 @@ irc_decode_capability (const char *name)
|
||||||
return IRC_CAP_INVITE_NOTIFY;
|
return IRC_CAP_INVITE_NOTIFY;
|
||||||
if (!strcmp (name, "echo-message"))
|
if (!strcmp (name, "echo-message"))
|
||||||
return IRC_CAP_ECHO_MESSAGE;
|
return IRC_CAP_ECHO_MESSAGE;
|
||||||
|
if (!strcmp (name, "userhost-in-names"))
|
||||||
|
return IRC_CAP_USERHOST_IN_NAMES;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2105,6 +2110,9 @@ irc_send_rpl_namreply (struct client *c, const struct channel *chan)
|
||||||
str_init (&result);
|
str_init (&result);
|
||||||
irc_append_prefixes (c, iter, &result);
|
irc_append_prefixes (c, iter, &result);
|
||||||
str_append (&result, iter->c->nickname);
|
str_append (&result, iter->c->nickname);
|
||||||
|
if (c->caps_enabled & IRC_CAP_USERHOST_IN_NAMES)
|
||||||
|
str_append_printf (&result,
|
||||||
|
"!%s@%s", iter->c->username, iter->c->hostname);
|
||||||
str_vector_add_owned (&nicks, str_steal (&result));
|
str_vector_add_owned (&nicks, str_steal (&result));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue