Sort commands alphabetically, add few missing IRCv3 commands
This commit is contained in:
parent
081821c8bc
commit
74e13c4724
|
@ -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
|
||||||
|
|
86
src/uirc.c
86
src/uirc.c
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Reference in New Issue