From 76e2c978829bc6ff7bfe6c49bfa3739e19370990 Mon Sep 17 00:00:00 2001 From: Nakidai Date: Sat, 10 Jan 2026 16:32:54 +0300 Subject: Add basic user mode handling So, now there're all modes listed in RFC 2812. The only what they do now, though, is a +r restricting user from changing their nick --- ircd.h | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'ircd.h') diff --git a/ircd.h b/ircd.h index 6035b79..2c4b144 100644 --- a/ircd.h +++ b/ircd.h @@ -51,9 +51,17 @@ struct Peer BIT(DELETE), BIT(ANNOUNCE), } flags; + enum PeerMode { + BIT(AWAY), + BIT(INVISIBLE), + BIT(WALLOPS), + BIT(RESTRICTED), + BIT(OPER), + BIT(LOCALOPER), + BIT(SNOTICE), + } modes; char buf[MESSAGE_MAX]; size_t recvd, channels_c; - char modes[52]; }; struct Channel @@ -75,10 +83,11 @@ extern struct Peer peers[PEERS_MAX]; extern size_t channels_c, peers_c; extern const char *hostname; extern const char *host; -extern int port; +extern unsigned long port; const char *getnick(const struct Peer *peer); -void user_reg(struct Peer *peer, const char *nick, const char *user, const char *real); +enum PeerMode user_mode(char m); +void user_reg(struct Peer *peer, const char *nick, const char *user, const char *real, const char *mode); void user_remove(size_t pid); int channel_join(struct Channel *channel, struct Peer *peer); -- cgit 1.4.1