]> jfr.im git - solanum.git/blobdiff - include/channel.h
Change default --with-nicklen to 31, like atheme-services.
[solanum.git] / include / channel.h
index 3c79793eadec5d56d0991bfb57e52a3692b34ea9..fcf226d58219d82c06a2dbe99f66523f380d60cf 100644 (file)
@@ -87,7 +87,6 @@ struct membership
        struct Channel *chptr;
        struct Client *client_p;
        unsigned int flags;
-       unsigned int roles;
 
        unsigned long bants;
 };
@@ -98,6 +97,7 @@ struct Ban
        char *banstr;
        char *who;
        time_t when;
+       char *forward;
        rb_dlink_node node;
 };
 
@@ -188,29 +188,11 @@ typedef int (*ExtbanFunc)(const char *data, struct Client *client_p,
 #define MODE_ADD       1
 #define MODE_DEL       -1
 
-/* Channel roles */
-#define CHANROLE_NONE  0x000
-#define        CHANROLE_UNSET  0x001   /* Special value */
-#define CHANROLE_KICK  0x002   /* Can kick */
-#define CHANROLE_STATUS        0x004   /* Can change status modes */
-#define CHANROLE_GRANT 0x008   /* Can grant (unused atm) */
-#define CHANROLE_MODE  0x010   /* Can change modes */
-#define CHANROLE_TOPIC 0x020   /* Can change topic */
-#define CHANROLE_INHERIT 0x040  /* Role is inherited (backwards compat) */
-
-#define CHANROLE_INITIAL       (CHANROLE_KICK | CHANROLE_STATUS | CHANROLE_GRANT | CHANROLE_MODE | CHANROLE_TOPIC)
-
 #define SecretChannel(x)        ((x) && ((x)->mode.mode & MODE_SECRET))
 #define HiddenChannel(x)        ((x) && ((x)->mode.mode & MODE_PRIVATE))
 #define PubChannel(x)           ((!x) || ((x)->mode.mode &\
                                  (MODE_PRIVATE | MODE_SECRET)) == 0)
 
-#define HasChanRole(m, r)      (((m)->roles & r) != 0)
-#define SetChanRole(m, r)      ((m)->roles |= r)
-#define RemoveChanRole(m, r)   ((m)->roles &= ~r)
-
-#define IsChanRoleSet(m, r)    
-
 /* channel visible */
 #define ShowChannel(v,c)        (PubChannel(c) || IsMember((v),(c)))
 
@@ -229,7 +211,7 @@ void init_channels(void);
 
 struct Channel *allocate_channel(const char *chname);
 void free_channel(struct Channel *chptr);
-struct Ban *allocate_ban(const char *, const char *);
+struct Ban *allocate_ban(const char *, const char *, const char *);
 void free_ban(struct Ban *bptr);
 
 
@@ -240,10 +222,11 @@ extern int can_send(struct Channel *chptr, struct Client *who,
 extern int flood_attack_channel(int p_or_n, struct Client *source_p,
                                struct Channel *chptr, char *chname);
 extern int is_banned(struct Channel *chptr, struct Client *who,
-                    struct membership *msptr, const char *, const char *);
+                   struct membership *msptr, const char *, const char *, const char **);
 extern int is_quieted(struct Channel *chptr, struct Client *who,
                     struct membership *msptr, const char *, const char *);
-extern int can_join(struct Client *source_p, struct Channel *chptr, char *key);
+extern int can_join(struct Client *source_p, struct Channel *chptr, char *key,
+                   char **forward);
 
 extern struct membership *find_channel_membership(struct Channel *, struct Client *);
 extern const char *find_channel_status(struct membership *msptr, int combine);
@@ -288,9 +271,10 @@ extern void set_channel_mlock(struct Client *client_p, struct Client *source_p,
 extern struct ChannelMode chmode_table[256];
 
 extern int add_id(struct Client *source_p, struct Channel *chptr, const char *banid,
-       rb_dlink_list * list, long mode_type);
+       const char *forward, rb_dlink_list * list, long mode_type);
 
-extern int del_id(struct Channel *chptr, const char *banid, rb_dlink_list * list, long mode_type);
+extern struct Ban * del_id(struct Channel *chptr, const char *banid, rb_dlink_list * list,
+       long mode_type);
 
 extern ExtbanFunc extban_table[256];
 
@@ -298,7 +282,7 @@ extern int match_extban(const char *banstr, struct Client *client_p, struct Chan
 extern int valid_extban(const char *banstr, struct Client *client_p, struct Channel *chptr, long mode_type);
 const char * get_extban_string(void);
 
-extern int get_channel_access(struct Client *source_p, struct membership *msptr, int role);
+extern int get_channel_access(struct Client *source_p, struct membership *msptr);
 
 extern void send_channel_join(struct Channel *chptr, struct Client *client_p);