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
|
||||
* 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(&self.nick, "*");
|
||||
|
||||
commandCompleteAdd();
|
||||
inputCompleteAdd();
|
||||
|
||||
ircConfig(insecure, trust, cert, priv);
|
||||
|
|
96
command.c
96
command.c
|
@ -537,53 +537,54 @@ static const struct Handler {
|
|||
const char *cmd;
|
||||
Command *fn;
|
||||
enum Flag flags;
|
||||
enum Cap caps;
|
||||
} Commands[] = {
|
||||
{ "/away", commandAway, 0 },
|
||||
{ "/ban", commandBan, 0 },
|
||||
{ "/close", commandClose, 0 },
|
||||
{ "/copy", commandCopy, Restrict | Kiosk },
|
||||
{ "/cs", commandCS, 0 },
|
||||
{ "/debug", commandDebug, Kiosk },
|
||||
{ "/deop", commandDeop, 0 },
|
||||
{ "/devoice", commandDevoice, 0 },
|
||||
{ "/except", commandExcept, 0 },
|
||||
{ "/exec", commandExec, Multiline | Restrict | Kiosk },
|
||||
{ "/help", commandHelp, 0 }, // Restrict special case.
|
||||
{ "/highlight", commandHighlight, 0 },
|
||||
{ "/ignore", commandIgnore, 0 },
|
||||
{ "/invex", commandInvex, 0 },
|
||||
{ "/invite", commandInvite, 0 },
|
||||
{ "/join", commandJoin, Kiosk },
|
||||
{ "/kick", commandKick, 0 },
|
||||
{ "/list", commandList, Kiosk },
|
||||
{ "/me", commandMe, Multiline },
|
||||
{ "/mode", commandMode, 0 },
|
||||
{ "/move", commandMove, 0 },
|
||||
{ "/msg", commandMsg, Multiline | Kiosk },
|
||||
{ "/names", commandNames, 0 },
|
||||
{ "/nick", commandNick, 0 },
|
||||
{ "/notice", commandNotice, Multiline },
|
||||
{ "/ns", commandNS, 0 },
|
||||
{ "/o", commandOpen, Restrict | Kiosk },
|
||||
{ "/op", commandOp, 0 },
|
||||
{ "/open", commandOpen, Restrict | Kiosk },
|
||||
{ "/ops", commandOps, 0 },
|
||||
{ "/part", commandPart, Kiosk },
|
||||
{ "/query", commandQuery, Kiosk },
|
||||
{ "/quit", commandQuit, 0 },
|
||||
{ "/quote", commandQuote, Multiline | Kiosk },
|
||||
{ "/say", commandPrivmsg, Multiline },
|
||||
{ "/setname", commandSetname, 0 },
|
||||
{ "/topic", commandTopic, 0 },
|
||||
{ "/unban", commandUnban, 0 },
|
||||
{ "/unexcept", commandUnexcept, 0 },
|
||||
{ "/unhighlight", commandUnhighlight, 0 },
|
||||
{ "/unignore", commandUnignore, 0 },
|
||||
{ "/uninvex", commandUninvex, 0 },
|
||||
{ "/voice", commandVoice, 0 },
|
||||
{ "/whois", commandWhois, 0 },
|
||||
{ "/whowas", commandWhowas, 0 },
|
||||
{ "/window", commandWindow, 0 },
|
||||
{ "/away", commandAway, 0, 0 },
|
||||
{ "/ban", commandBan, 0, 0 },
|
||||
{ "/close", commandClose, 0, 0 },
|
||||
{ "/copy", commandCopy, Restrict | Kiosk, 0 },
|
||||
{ "/cs", commandCS, 0, 0 },
|
||||
{ "/debug", commandDebug, Kiosk, 0 },
|
||||
{ "/deop", commandDeop, 0, 0 },
|
||||
{ "/devoice", commandDevoice, 0, 0 },
|
||||
{ "/except", commandExcept, 0, 0 },
|
||||
{ "/exec", commandExec, Multiline | Restrict | Kiosk, 0 },
|
||||
{ "/help", commandHelp, 0, 0 }, // Restrict special case.
|
||||
{ "/highlight", commandHighlight, 0, 0 },
|
||||
{ "/ignore", commandIgnore, 0, 0 },
|
||||
{ "/invex", commandInvex, 0, 0 },
|
||||
{ "/invite", commandInvite, 0, 0 },
|
||||
{ "/join", commandJoin, Kiosk, 0 },
|
||||
{ "/kick", commandKick, 0, 0 },
|
||||
{ "/list", commandList, Kiosk, 0 },
|
||||
{ "/me", commandMe, Multiline, 0 },
|
||||
{ "/mode", commandMode, 0, 0 },
|
||||
{ "/move", commandMove, 0, 0 },
|
||||
{ "/msg", commandMsg, Multiline | Kiosk, 0 },
|
||||
{ "/names", commandNames, 0, 0 },
|
||||
{ "/nick", commandNick, 0, 0 },
|
||||
{ "/notice", commandNotice, Multiline, 0 },
|
||||
{ "/ns", commandNS, 0, 0 },
|
||||
{ "/o", commandOpen, Restrict | Kiosk, 0 },
|
||||
{ "/op", commandOp, 0, 0 },
|
||||
{ "/open", commandOpen, Restrict | Kiosk, 0 },
|
||||
{ "/ops", commandOps, 0, 0 },
|
||||
{ "/part", commandPart, Kiosk, 0 },
|
||||
{ "/query", commandQuery, Kiosk, 0 },
|
||||
{ "/quit", commandQuit, 0, 0 },
|
||||
{ "/quote", commandQuote, Multiline | Kiosk, 0 },
|
||||
{ "/say", commandPrivmsg, Multiline, 0 },
|
||||
{ "/setname", commandSetname, 0, CapSetname },
|
||||
{ "/topic", commandTopic, 0, 0 },
|
||||
{ "/unban", commandUnban, 0, 0 },
|
||||
{ "/unexcept", commandUnexcept, 0, 0 },
|
||||
{ "/unhighlight", commandUnhighlight, 0, 0 },
|
||||
{ "/unignore", commandUnignore, 0, 0 },
|
||||
{ "/uninvex", commandUninvex, 0, 0 },
|
||||
{ "/voice", commandVoice, 0, 0 },
|
||||
{ "/whois", commandWhois, 0, 0 },
|
||||
{ "/whowas", commandWhowas, 0, 0 },
|
||||
{ "/window", commandWindow, 0, 0 },
|
||||
};
|
||||
|
||||
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) {
|
||||
if (handler->flags & Restrict && self.restricted) return false;
|
||||
if (handler->flags & Kiosk && self.kiosk) return false;
|
||||
if (handler->caps && (handler->caps & self.caps) != handler->caps) {
|
||||
return false;
|
||||
}
|
||||
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
|
||||
* 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[ReplyNamesAuto] += count;
|
||||
}
|
||||
commandCompleteAdd();
|
||||
}
|
||||
|
||||
static void handleReplyISupport(struct Message *msg) {
|
||||
|
|
Loading…
Reference in New Issue