extern struct ChannelMode chmode_table[256];
-diff -r e6b8fd0ebc1f include/chmode.h
---- /dev/null Thu Jan 01 00:00:00 1970 +0000
-+++ b/include/chmode.h Tue Apr 08 17:28:26 2008 +0400
-@@ -0,0 +1,67 @@
-+/*
-+ * charybdis: An advanced ircd.
-+ * chmode.h: The ircd channel header.
-+ *
-+ * Copyright (C) 1990 Jarkko Oikarinen and University of Oulu, Co Center
-+ * Copyright (C) 1996-2002 Hybrid Development Team
-+ * Copyright (C) 2002-2004 ircd-ratbox development team
-+ * Copyright (C) 2008 charybdis development team
-+ *
-+ * 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
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
-+ * USA
-+ *
-+ * $Id$
-+ */
-+
-+#ifndef INCLUDED_chmode_h
-+#define INCLUDED_chmode_h
-+
-+extern void chm_nosuch(struct Client *source_p, struct Channel *chptr,
-+ int alevel, int parc, int *parn,
-+ const char **parv, int *errors, int dir, char c, long mode_type);
-+extern void chm_simple(struct Client *source_p, struct Channel *chptr,
-+ int alevel, int parc, int *parn,
-+ const char **parv, int *errors, int dir, char c, long mode_type);
-+extern void chm_ban(struct Client *source_p, struct Channel *chptr,
-+ int alevel, int parc, int *parn,
-+ const char **parv, int *errors, int dir, char c, long mode_type);
-+extern void chm_staff(struct Client *source_p, struct Channel *chptr,
-+ int alevel, int parc, int *parn,
-+ const char **parv, int *errors, int dir, char c, long mode_type);
-+extern void chm_forward(struct Client *source_p, struct Channel *chptr,
-+ int alevel, int parc, int *parn,
-+ const char **parv, int *errors, int dir, char c, long mode_type);
-+extern void chm_throttle(struct Client *source_p, struct Channel *chptr,
-+ int alevel, int parc, int *parn,
-+ const char **parv, int *errors, int dir, char c, long mode_type);
-+extern void chm_key(struct Client *source_p, struct Channel *chptr,
-+ int alevel, int parc, int *parn,
-+ const char **parv, int *errors, int dir, char c, long mode_type);
-+extern void chm_limit(struct Client *source_p, struct Channel *chptr,
-+ int alevel, int parc, int *parn,
-+ const char **parv, int *errors, int dir, char c, long mode_type);
-+extern void chm_regonly(struct Client *source_p, struct Channel *chptr,
-+ int alevel, int parc, int *parn,
-+ const char **parv, int *errors, int dir, char c, long mode_type);
-+extern void chm_op(struct Client *source_p, struct Channel *chptr,
-+ int alevel, int parc, int *parn,
-+ const char **parv, int *errors, int dir, char c, long mode_type);
-+extern void chm_voice(struct Client *source_p, struct Channel *chptr,
-+ int alevel, int parc, int *parn,
-+ const char **parv, int *errors, int dir, char c, long mode_type);
-+
-+extern void construct_noparam_modes(void);
-+
-+#endif
diff -r e6b8fd0ebc1f modules/core/m_join.c
--- a/modules/core/m_join.c Tue Apr 08 16:14:01 2008 +0400
+++ b/modules/core/m_join.c Tue Apr 08 17:28:26 2008 +0400