parent
b7fe705c91
commit
b6c7280649
3
chat.c
3
chat.c
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (C) 2020 C. McEnroe <june@causal.agency>
|
/* Copyright (C) 2020 June McEnroe <june@causal.agency>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -371,7 +371,6 @@ int main(int argc, char *argv[]) {
|
||||||
set(&network.name, host);
|
set(&network.name, host);
|
||||||
set(&self.nick, "*");
|
set(&self.nick, "*");
|
||||||
|
|
||||||
commandCompleteAdd();
|
|
||||||
inputCompleteAdd();
|
inputCompleteAdd();
|
||||||
|
|
||||||
ircConfig(insecure, trust, cert, priv);
|
ircConfig(insecure, trust, cert, priv);
|
||||||
|
|
96
command.c
96
command.c
|
@ -537,53 +537,54 @@ static const struct Handler {
|
||||||
const char *cmd;
|
const char *cmd;
|
||||||
Command *fn;
|
Command *fn;
|
||||||
enum Flag flags;
|
enum Flag flags;
|
||||||
|
enum Cap caps;
|
||||||
} Commands[] = {
|
} Commands[] = {
|
||||||
{ "/away", commandAway, 0 },
|
{ "/away", commandAway, 0, 0 },
|
||||||
{ "/ban", commandBan, 0 },
|
{ "/ban", commandBan, 0, 0 },
|
||||||
{ "/close", commandClose, 0 },
|
{ "/close", commandClose, 0, 0 },
|
||||||
{ "/copy", commandCopy, Restrict | Kiosk },
|
{ "/copy", commandCopy, Restrict | Kiosk, 0 },
|
||||||
{ "/cs", commandCS, 0 },
|
{ "/cs", commandCS, 0, 0 },
|
||||||
{ "/debug", commandDebug, Kiosk },
|
{ "/debug", commandDebug, Kiosk, 0 },
|
||||||
{ "/deop", commandDeop, 0 },
|
{ "/deop", commandDeop, 0, 0 },
|
||||||
{ "/devoice", commandDevoice, 0 },
|
{ "/devoice", commandDevoice, 0, 0 },
|
||||||
{ "/except", commandExcept, 0 },
|
{ "/except", commandExcept, 0, 0 },
|
||||||
{ "/exec", commandExec, Multiline | Restrict | Kiosk },
|
{ "/exec", commandExec, Multiline | Restrict | Kiosk, 0 },
|
||||||
{ "/help", commandHelp, 0 }, // Restrict special case.
|
{ "/help", commandHelp, 0, 0 }, // Restrict special case.
|
||||||
{ "/highlight", commandHighlight, 0 },
|
{ "/highlight", commandHighlight, 0, 0 },
|
||||||
{ "/ignore", commandIgnore, 0 },
|
{ "/ignore", commandIgnore, 0, 0 },
|
||||||
{ "/invex", commandInvex, 0 },
|
{ "/invex", commandInvex, 0, 0 },
|
||||||
{ "/invite", commandInvite, 0 },
|
{ "/invite", commandInvite, 0, 0 },
|
||||||
{ "/join", commandJoin, Kiosk },
|
{ "/join", commandJoin, Kiosk, 0 },
|
||||||
{ "/kick", commandKick, 0 },
|
{ "/kick", commandKick, 0, 0 },
|
||||||
{ "/list", commandList, Kiosk },
|
{ "/list", commandList, Kiosk, 0 },
|
||||||
{ "/me", commandMe, Multiline },
|
{ "/me", commandMe, Multiline, 0 },
|
||||||
{ "/mode", commandMode, 0 },
|
{ "/mode", commandMode, 0, 0 },
|
||||||
{ "/move", commandMove, 0 },
|
{ "/move", commandMove, 0, 0 },
|
||||||
{ "/msg", commandMsg, Multiline | Kiosk },
|
{ "/msg", commandMsg, Multiline | Kiosk, 0 },
|
||||||
{ "/names", commandNames, 0 },
|
{ "/names", commandNames, 0, 0 },
|
||||||
{ "/nick", commandNick, 0 },
|
{ "/nick", commandNick, 0, 0 },
|
||||||
{ "/notice", commandNotice, Multiline },
|
{ "/notice", commandNotice, Multiline, 0 },
|
||||||
{ "/ns", commandNS, 0 },
|
{ "/ns", commandNS, 0, 0 },
|
||||||
{ "/o", commandOpen, Restrict | Kiosk },
|
{ "/o", commandOpen, Restrict | Kiosk, 0 },
|
||||||
{ "/op", commandOp, 0 },
|
{ "/op", commandOp, 0, 0 },
|
||||||
{ "/open", commandOpen, Restrict | Kiosk },
|
{ "/open", commandOpen, Restrict | Kiosk, 0 },
|
||||||
{ "/ops", commandOps, 0 },
|
{ "/ops", commandOps, 0, 0 },
|
||||||
{ "/part", commandPart, Kiosk },
|
{ "/part", commandPart, Kiosk, 0 },
|
||||||
{ "/query", commandQuery, Kiosk },
|
{ "/query", commandQuery, Kiosk, 0 },
|
||||||
{ "/quit", commandQuit, 0 },
|
{ "/quit", commandQuit, 0, 0 },
|
||||||
{ "/quote", commandQuote, Multiline | Kiosk },
|
{ "/quote", commandQuote, Multiline | Kiosk, 0 },
|
||||||
{ "/say", commandPrivmsg, Multiline },
|
{ "/say", commandPrivmsg, Multiline, 0 },
|
||||||
{ "/setname", commandSetname, 0 },
|
{ "/setname", commandSetname, 0, CapSetname },
|
||||||
{ "/topic", commandTopic, 0 },
|
{ "/topic", commandTopic, 0, 0 },
|
||||||
{ "/unban", commandUnban, 0 },
|
{ "/unban", commandUnban, 0, 0 },
|
||||||
{ "/unexcept", commandUnexcept, 0 },
|
{ "/unexcept", commandUnexcept, 0, 0 },
|
||||||
{ "/unhighlight", commandUnhighlight, 0 },
|
{ "/unhighlight", commandUnhighlight, 0, 0 },
|
||||||
{ "/unignore", commandUnignore, 0 },
|
{ "/unignore", commandUnignore, 0, 0 },
|
||||||
{ "/uninvex", commandUninvex, 0 },
|
{ "/uninvex", commandUninvex, 0, 0 },
|
||||||
{ "/voice", commandVoice, 0 },
|
{ "/voice", commandVoice, 0, 0 },
|
||||||
{ "/whois", commandWhois, 0 },
|
{ "/whois", commandWhois, 0, 0 },
|
||||||
{ "/whowas", commandWhowas, 0 },
|
{ "/whowas", commandWhowas, 0, 0 },
|
||||||
{ "/window", commandWindow, 0 },
|
{ "/window", commandWindow, 0, 0 },
|
||||||
};
|
};
|
||||||
|
|
||||||
static int compar(const void *cmd, const void *_handler) {
|
static int compar(const void *cmd, const void *_handler) {
|
||||||
|
@ -642,6 +643,9 @@ size_t commandWillSplit(uint id, const char *input) {
|
||||||
static bool commandAvailable(const struct Handler *handler) {
|
static bool commandAvailable(const struct Handler *handler) {
|
||||||
if (handler->flags & Restrict && self.restricted) return false;
|
if (handler->flags & Restrict && self.restricted) return false;
|
||||||
if (handler->flags & Kiosk && self.kiosk) return false;
|
if (handler->flags & Kiosk && self.kiosk) return false;
|
||||||
|
if (handler->caps && (handler->caps & self.caps) != handler->caps) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
3
handle.c
3
handle.c
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (C) 2020 C. McEnroe <june@causal.agency>
|
/* Copyright (C) 2020 June McEnroe <june@causal.agency>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -254,6 +254,7 @@ static void handleReplyWelcome(struct Message *msg) {
|
||||||
replies[ReplyTopicAuto] += count;
|
replies[ReplyTopicAuto] += count;
|
||||||
replies[ReplyNamesAuto] += count;
|
replies[ReplyNamesAuto] += count;
|
||||||
}
|
}
|
||||||
|
commandCompleteAdd();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void handleReplyISupport(struct Message *msg) {
|
static void handleReplyISupport(struct Message *msg) {
|
||||||
|
|
Loading…
Reference in New Issue