mirror of
https://github.com/matrix-construct/construct
synced 2024-12-28 16:34:13 +01:00
Merge pull request #170 from staticfox/cap_clear
m_cap: Remove CLEAR subcommand as per v3 specs
This commit is contained in:
commit
83f717db49
1 changed files with 8 additions and 25 deletions
|
@ -146,12 +146,11 @@ clicap_find(const char *data, int *negate, int *finished)
|
||||||
* Generates a list of capabilities.
|
* Generates a list of capabilities.
|
||||||
*
|
*
|
||||||
* Inputs: client to send to, subcmd to send,
|
* Inputs: client to send to, subcmd to send,
|
||||||
* flags to match against: 0 to do none, -1 if client has no flags,
|
* flags to match against: 0 to do none, -1 if client has no flags
|
||||||
* int to whether we are doing CAP CLEAR
|
|
||||||
* Outputs: None
|
* Outputs: None
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
clicap_generate(struct Client *source_p, const char *subcmd, int flags, int clear)
|
clicap_generate(struct Client *source_p, const char *subcmd, int flags)
|
||||||
{
|
{
|
||||||
char buf[BUFSIZE] = { 0 };
|
char buf[BUFSIZE] = { 0 };
|
||||||
char capbuf[BUFSIZE] = { 0 };
|
char capbuf[BUFSIZE] = { 0 };
|
||||||
|
@ -178,14 +177,8 @@ clicap_generate(struct Client *source_p, const char *subcmd, int flags, int clea
|
||||||
struct ClientCapability *clicap = entry->ownerdata;
|
struct ClientCapability *clicap = entry->ownerdata;
|
||||||
const char *data = NULL;
|
const char *data = NULL;
|
||||||
|
|
||||||
if(flags)
|
if(flags && !IsCapableEntry(source_p, entry))
|
||||||
{
|
continue;
|
||||||
if(!IsCapableEntry(source_p, entry))
|
|
||||||
continue;
|
|
||||||
/* they are capable of this, check sticky */
|
|
||||||
else if(clear && HasCapabilityFlag(entry, CLICAP_FLAGS_STICKY))
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!clicap_visible(source_p, entry))
|
if (!clicap_visible(source_p, entry))
|
||||||
continue;
|
continue;
|
||||||
|
@ -211,8 +204,8 @@ clicap_generate(struct Client *source_p, const char *subcmd, int flags, int clea
|
||||||
memset(capbuf, 0, sizeof capbuf);
|
memset(capbuf, 0, sizeof capbuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
buflen = rb_snprintf_append(capbuf, sizeof capbuf, "%s%s%s%s ",
|
buflen = rb_snprintf_append(capbuf, sizeof capbuf, "%s%s%s ",
|
||||||
clear ? "-" : "", entry->cap, data != NULL ? "=" : "", data != NULL ? data : "");
|
entry->cap, data != NULL ? "=" : "", data != NULL ? data : "");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* remove trailing space */
|
/* remove trailing space */
|
||||||
|
@ -254,15 +247,6 @@ cap_ack(struct Client *source_p, const char *arg)
|
||||||
source_p->localClient->caps &= ~capdel;
|
source_p->localClient->caps &= ~capdel;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
cap_clear(struct Client *source_p, const char *arg)
|
|
||||||
{
|
|
||||||
clicap_generate(source_p, "ACK",
|
|
||||||
source_p->localClient->caps ? source_p->localClient->caps : -1, 1);
|
|
||||||
|
|
||||||
source_p->localClient->caps = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
cap_end(struct Client *source_p, const char *arg)
|
cap_end(struct Client *source_p, const char *arg)
|
||||||
{
|
{
|
||||||
|
@ -282,7 +266,7 @@ cap_list(struct Client *source_p, const char *arg)
|
||||||
{
|
{
|
||||||
/* list of what theyre currently using */
|
/* list of what theyre currently using */
|
||||||
clicap_generate(source_p, "LIST",
|
clicap_generate(source_p, "LIST",
|
||||||
source_p->localClient->caps ? source_p->localClient->caps : -1, 0);
|
source_p->localClient->caps ? source_p->localClient->caps : -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -298,7 +282,7 @@ cap_ls(struct Client *source_p, const char *arg)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* list of what we support */
|
/* list of what we support */
|
||||||
clicap_generate(source_p, "LS", 0, 0);
|
clicap_generate(source_p, "LS", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -404,7 +388,6 @@ static struct clicap_cmd
|
||||||
} clicap_cmdlist[] = {
|
} clicap_cmdlist[] = {
|
||||||
/* This list *MUST* be in alphabetical order */
|
/* This list *MUST* be in alphabetical order */
|
||||||
{ "ACK", cap_ack },
|
{ "ACK", cap_ack },
|
||||||
{ "CLEAR", cap_clear },
|
|
||||||
{ "END", cap_end },
|
{ "END", cap_end },
|
||||||
{ "LIST", cap_list },
|
{ "LIST", cap_list },
|
||||||
{ "LS", cap_ls },
|
{ "LS", cap_ls },
|
||||||
|
|
Loading…
Reference in a new issue