Rework JOIN handler to make keys, apass, and upass consistent.
[ircu2.10.12-pk.git] / include / channel.h
index db347976c6343021ef6dd64ff7ed229541208427..fd01bedc191a325dfcb888589267293429c4bbc9 100644 (file)
@@ -45,7 +45,6 @@ struct Client;
 #define MODEBUFLEN      200    /**< Maximum length of a mode */
 
 #define KEYLEN          23     /**< Maximum length of a key */
-#define PASSLEN         23     /**< Maximum length of a password */
 #define CHANNELLEN      200    /**< Maximum length of a channel */
 
 #define MAXJOINARGS    15      /**< number of slots for join buffer */
@@ -149,6 +148,7 @@ typedef enum ChannelGetType {
 
 #define LISTARG_TOPICLIMITS     0x0001
 #define LISTARG_SHOWSECRET      0x0002
+#define LISTARG_NEGATEWILDCARD  0x0004
 
 /**
  * Maximum acceptable lag time in seconds: A channel younger than
@@ -172,10 +172,6 @@ typedef enum ChannelGetType {
  */
 #define MAGIC_REMOTE_JOIN_TS 1270080000
 
-/**
- * used in can_join to determine if an oper forced a join on a channel
- */
-#define MAGIC_OPER_OVERRIDE 1000
 
 
 extern const char* const PartFmt1;
@@ -247,8 +243,8 @@ struct Mode {
   unsigned int mode;
   unsigned int limit;
   char key[KEYLEN + 1];
-  char upass[PASSLEN + 1];
-  char apass[PASSLEN + 1];
+  char upass[KEYLEN + 1];
+  char apass[KEYLEN + 1];
 };
 
 #define BAN_IPMASK         0x0001  /**< ban mask is an IP-number mask */
@@ -261,14 +257,14 @@ struct Mode {
 
 /** A single ban for a channel. */
 struct Ban {
-  struct Ban* next;   /**< next ban in the channel */
+  struct Ban* next;           /**< next ban in the channel */
   struct irc_in_addr address; /**< addres for BAN_IPMASK bans */
-  time_t when;        /**< timestamp when ban was added */
-  unsigned short flags; /**< modifier flags for the ban */
-  unsigned char nu_len; /**< length of nick!user part of banstr */
-  unsigned char addrbits; /**< netmask length for BAN_IPMASK bans */
-  char *who;          /**< name of client that set the ban */
-  char *banstr;       /**< hostmask that the ban matches */
+  time_t when;                /**< timestamp when ban was added */
+  unsigned short flags;       /**< modifier flags for the ban */
+  unsigned char nu_len;       /**< length of nick!user part of banstr */
+  unsigned char addrbits;     /**< netmask length for BAN_IPMASK bans */
+  char who[NICKLEN+1];        /**< name of client that set the ban */
+  char banstr[NICKLEN+USERLEN+HOSTLEN+3];  /**< hostmask that the ban matches */
 };
 
 /** Information about a channel */
@@ -303,6 +299,7 @@ struct ListingArgs {
   time_t max_topic_time;
   time_t min_topic_time;
   unsigned int bucket;
+  char wildcard[CHANNELLEN];
 };
 
 struct ModeBuf {
@@ -382,7 +379,6 @@ extern struct Membership* find_member_link(struct Channel * chptr,
                                            const struct Client* cptr);
 extern int sub1_from_channel(struct Channel* chptr);
 extern int destruct_channel(struct Channel* chptr);
-extern int can_join(struct Client *sptr, struct Channel *chptr, char *key);
 extern void add_user_to_channel(struct Channel* chptr, struct Client* who,
                                 unsigned int flags, int oplevel);
 extern void make_zombie(struct Membership* member, struct Client* who,