Sort commands alphabetically, add few missing IRCv3 commands

This commit is contained in:
Alex 2020-07-11 21:39:12 +02:00
parent 081821c8bc
commit 74e13c4724
Signed by: caskd
GPG Key ID: F92BA85F61F4C173
2 changed files with 131 additions and 76 deletions

View File

@ -12,52 +12,67 @@
#define MBMASK_INVIS 4 /* 100 */ #define MBMASK_INVIS 4 /* 100 */
enum { enum {
PASS = 10, ACCOUNT = 10, /* https://ircv3.net/specs/extensions/account-notify-3.1 */
NICK, ACC, /* https://github.com/ircv3/ircv3-specifications/pull/276 */
USER, ACK, /* https://ircv3.net/specs/extensions/labeled-response */
SERVER,
OPER,
SERVICE,
QUIT,
SQUIT,
JOIN,
PART,
MODE,
TOPIC,
NAMES,
LIST,
INVITE,
KICK,
VERSION,
STATS,
LINKS,
TIME,
CONNECT,
TRACE,
ADMIN, ADMIN,
AUTHENTICATE, /* https://ircv3.net/specs/extensions/sasl-3.1 */
AWAY,
BATCH, /* https://ircv3.net/specs/extensions/batch-3.2 */
CAP, /* https://ircv3.net/specs/core/capability-negotiation */
CHGHOST, /* https://ircv3.net/specs/extensions/chghost-3.2 */
CONNECT,
DIE,
ERROR,
FAIL, /* https://ircv3.net/specs/extensions/standard-replies */
INFO, INFO,
SERVLIST, INVITE,
SQUERY, ISON,
PRIVMSG, JOIN,
NOTICE, KICK,
MOTD,
LUSERS,
WHO,
WHOIS,
WHOWAS,
KILL, KILL,
LINKS,
LIST,
LUSERS,
MODE,
MONITOR, /* https://ircv3.net/specs/core/monitor-3.2 */
MOTD,
NAMES,
NICK,
NOTE, /* https://ircv3.net/specs/extensions/standard-replies */
NOTICE,
OPER,
PART,
PASS,
PING, PING,
PONG, PONG,
ERROR, PRIVMSG,
AWAY, QUIT,
REHASH, REHASH,
DIE, RENAME, /* https://github.com/ircv3/ircv3-specifications/pull/420 */
RESTART, RESTART,
RESUME, /* https://github.com/ircv3/ircv3-specifications/pull/306 */
SERVER,
SERVICE,
SERVLIST,
SETNAME, /* https://ircv3.net/specs/extensions/setname */
SQUERY,
SQUIT,
STATS,
SUMMON, SUMMON,
USERS, TIME,
WALLOPS, TOPIC,
TRACE,
USER,
USERHOST, USERHOST,
ISON USERS,
VERSION,
WALLOPS,
WARN, /* https://ircv3.net/specs/extensions/standard-replies */
WEBIRC, /* https://ircv3.net/specs/extensions/webirc */
WHO,
WHOIS,
WHOWAS
}; };
enum { enum {
RPL_WELCOME = 1, RPL_WELCOME = 1,
@ -65,6 +80,16 @@ enum {
RPL_CREATED = 3, RPL_CREATED = 3,
RPL_MYINFO = 4, RPL_MYINFO = 4,
RPL_BOUNCE = 5, RPL_BOUNCE = 5,
/* TO IRCv3 WG:
* please, stop complicating implementations
* get people in the WG that actually care about the protocol and understand why and how standards are written
*
* TO LIBRARY USERS:
* Read the above and go speak with them, or just don't use IRCv3 :)
*/
RPL_ISUPPORT = 5,
RPL_TRACELINK = 200, RPL_TRACELINK = 200,
RPL_TRACECONNECTING = 201, RPL_TRACECONNECTING = 201,
RPL_TRACEHANDSHAKE = 202, RPL_TRACEHANDSHAKE = 202,
@ -182,6 +207,26 @@ enum {
ERR_CANTKILLSERVER = 483, ERR_CANTKILLSERVER = 483,
ERR_NOOPERHOST = 491, ERR_NOOPERHOST = 491,
ERR_UMODEUNKNOWNFLAG = 501, ERR_UMODEUNKNOWNFLAG = 501,
ERR_USERSDONTMATCH = 502 ERR_USERSDONTMATCH = 502,
/* https://ircv3.net/registry */
RPL_STARTTLS = 670,
ERR_STARTTLS = 691,
RPL_MONONLINE = 730,
RPL_MONOFFLINE = 731,
RPL_MONLIST = 732,
RPL_ENDOFMONLIST = 733,
ERR_MOLISTFULL = 734,
RPL_LOGGEDIN = 900,
RPL_LOGGEDOUT = 901,
ERR_NICKLOCKED = 902,
RPL_SASLSUCCESS = 903,
ERR_SASLFAIL = 904,
ERR_SASLTOOLONG = 905,
ERR_SASLABORTED = 906,
ERR_SASLALREADY = 907,
ERR_SASLMECHS = 908
}; };
#endif #endif

View File

@ -18,52 +18,62 @@
#include "uirc.h" #include "uirc.h"
const char* const uirc_ircmd[] = { const char* const uirc_ircmd[] = {
[PASS] = "PASS", [ACCOUNT] = "ACCOUNT",
[NICK] = "NICK", [ACC] = "ACC",
[USER] = "USER", [ACK] = "ACK",
[SERVER] = "SERVER",
[OPER] = "OPER",
[SERVICE] = "SERVICE",
[QUIT] = "QUIT",
[SQUIT] = "SQUIT",
[JOIN] = "JOIN",
[PART] = "PART",
[MODE] = "MODE",
[TOPIC] = "TOPIC",
[NAMES] = "NAMES",
[LIST] = "LIST",
[INVITE] = "INVITE",
[KICK] = "KICK",
[VERSION] = "VERSION",
[STATS] = "STATS",
[LINKS] = "LINKS",
[TIME] = "TIME",
[CONNECT] = "CONNECT",
[TRACE] = "TRACE",
[ADMIN] = "ADMIN", [ADMIN] = "ADMIN",
[AUTHENTICATE] = "AUTHENTICATE",
[AWAY] = "AWAY",
[BATCH] = "BATCH",
[CAP] = "CAP",
[CHGHOST] = "CHGHOST",
[CONNECT] = "CONNECT",
[DIE] = "DIE",
[ERROR] = "ERROR",
[INFO] = "INFO", [INFO] = "INFO",
[SERVLIST] = "SERVLIST", [INVITE] = "INVITE",
[SQUERY] = "SQUERY", [ISON] = "ISON",
[PRIVMSG] = "PRIVMSG", [JOIN] = "JOIN",
[NOTICE] = "NOTICE", [KICK] = "KICK",
[MOTD] = "MOTD",
[LUSERS] = "LUSERS",
[WHO] = "WHO",
[WHOIS] = "WHOIS",
[WHOWAS] = "WHOWAS",
[KILL] = "KILL", [KILL] = "KILL",
[LINKS] = "LINKS",
[LIST] = "LIST",
[LUSERS] = "LUSERS",
[MODE] = "MODE",
[MOTD] = "MOTD",
[NAMES] = "NAMES",
[NICK] = "NICK",
[NOTICE] = "NOTICE",
[OPER] = "OPER",
[PART] = "PART",
[PASS] = "PASS",
[PING] = "PING", [PING] = "PING",
[PONG] = "PONG", [PONG] = "PONG",
[ERROR] = "ERROR", [PRIVMSG] = "PRIVMSG",
[AWAY] = "AWAY", [QUIT] = "QUIT",
[REHASH] = "REHASH", [REHASH] = "REHASH",
[DIE] = "DIE", [RENAME] = "RENAME",
[RESTART] = "RESTART", [RESTART] = "RESTART",
[RESUME] = "RESUME",
[SERVER] = "SERVER",
[SERVICE] = "SERVICE",
[SERVLIST] = "SERVLIST",
[SQUERY] = "SQUERY",
[SQUIT] = "SQUIT",
[STATS] = "STATS",
[SUMMON] = "SUMMON", [SUMMON] = "SUMMON",
[USERS] = "USERS", [TIME] = "TIME",
[WALLOPS] = "WALLOPS", [TOPIC] = "TOPIC",
[TRACE] = "TRACE",
[USERHOST] = "USERHOST", [USERHOST] = "USERHOST",
[ISON] = "ISON"}; [USERS] = "USERS",
[USER] = "USER",
[VERSION] = "VERSION",
[WALLOPS] = "WALLOPS",
[WEBIRC] = "WEBIRC",
[WHOIS] = "WHOIS",
[WHOWAS] = "WHOWAS",
[WHO] = "WHO"};
struct tagmapping { struct tagmapping {
const char* name; const char* name;
@ -73,7 +83,7 @@ signed int Ircmd_stoi(char* str)
{ {
if (str == NULL) if (str == NULL)
return ERR_UIRC_NULL_ARGS; return ERR_UIRC_NULL_ARGS;
for (unsigned short i = PASS; i <= ISON; i++) { for (unsigned short i = ACCOUNT; i <= WHO; i++) {
if ((uirc_ircmd[i] != NULL) && (strcmp(uirc_ircmd[i], str) == 0)) if ((uirc_ircmd[i] != NULL) && (strcmp(uirc_ircmd[i], str) == 0))
return i; return i;
} }