void irc_svsnick(struct userNode *from, struct userNode *target, const char *newnick);
/* account maintenance */
-void irc_account(struct userNode *user, const char *stamp);
+void irc_account(struct userNode *user, const char *stamp, unsigned long timestamp, unsigned long serial);
void irc_regnick(struct userNode *user);
-void irc_fakehost(struct userNode *user, const char *host);
+void irc_fakehost(struct userNode *user, const char *host, const char *ident, int force);
/* numeric messages */
void irc_numeric(struct userNode *user, unsigned int num, const char *format, ...);
/* Most protocols will want to make an AddUser helper function. */
/* User modes */
+extern const char irc_user_mode_chars[];
void mod_usermode(struct userNode *user, const char *modes);
+unsigned int irc_user_modes(const struct userNode *user, char modes[], size_t length);
/* Channel mode manipulation */
#define KEYLEN 23
#define MCP_REGISTERED 0x0008 /* chan is already registered; do not allow changes to MODE_REGISTERED */
#define MCP_UPASS_FREE 0x0010 /* -U without a key argument */
#define MCP_APASS_FREE 0x0020 /* -A without a key argument */
+#define MCP_NO_APASS 0x0040 /* Do not allow +/-A or +/-U */
#define MC_ANNOUNCE 0x0100 /* send a mod_chanmode() change out */
#define MC_NOTIFY 0x0200 /* make local callbacks to announce */
#ifdef NDEBUG