]> jfr.im git - solanum.git/blobdiff - include/channel.h
wsproc: call rb_clear_cloexec on child fds
[solanum.git] / include / channel.h
index cce63c28e0ae8a373c696b21f31f7da76d929f98..e666279a1ac9fc0e73458b92be9145dddd2efcfd 100644 (file)
@@ -121,14 +121,24 @@ struct ChModeChange
        int mems;
 };
 
-typedef void (*ChannelModeFunc)(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);
+typedef void ChannelModeFunc(struct Client *source_p, struct Channel *chptr,
+               int alevel, const char *arg, int *errors, int dir, char c, long mode_type);
+
+enum chm_flags
+{
+       CHM_CAN_QUERY  = 1 << 0,
+       CHM_OPS_QUERY  = 1 << 1,
+       CHM_ARG_SET    = 1 << 2,
+       CHM_ARG_DEL    = 1 << 3,
+       CHM_ARGS       = CHM_ARG_SET | CHM_ARG_DEL,
+       CHM_QUERYABLE  = CHM_ARGS | CHM_CAN_QUERY,
+};
 
 struct ChannelMode
 {
-       ChannelModeFunc set_func;
+       ChannelModeFunc *set_func;
        long mode_type;
+       enum chm_flags flags;
 };
 
 typedef int (*ExtbanFunc)(const char *data, struct Client *client_p,
@@ -181,6 +191,7 @@ typedef int (*ExtbanFunc)(const char *data, struct Client *client_p,
 #define MODE_QUERY     0
 #define MODE_ADD       1
 #define MODE_DEL       -1
+#define MODE_OP_QUERY  2
 
 #define SecretChannel(x)        ((x) && ((x)->mode.mode & MODE_SECRET))
 #define HiddenChannel(x)        ((x) && ((x)->mode.mode & MODE_PRIVATE))