X-Git-Url: https://jfr.im/git/solanum.git/blobdiff_plain/15b05f95f0aeed6fe840cf59a69bce2051d9e2ee..0ba1da59101281fd8c6a91e068ba6dab1b9292dd:/include/hook.h diff --git a/include/hook.h b/include/hook.h index 58a94d41..c9dcf93e 100644 --- a/include/hook.h +++ b/include/hook.h @@ -11,6 +11,16 @@ typedef struct rb_dlink_list hooks; } hook; +enum hook_priority +{ + HOOK_LOWEST = 10, + HOOK_LOW = 20, + HOOK_NORMAL = 30, + HOOK_HIGH = 40, + HOOK_HIGHEST = 50, + HOOK_MONITOR = 100 +}; + typedef void (*hookfn) (void *data); extern int h_iosend_id; @@ -35,10 +45,12 @@ extern int h_conf_read_start; extern int h_conf_read_end; extern int h_outbound_msgbuf; extern int h_rehash; +extern int h_cap_change; void init_hook(void); int register_hook(const char *name); void add_hook(const char *name, hookfn fn); +void add_hook_prio(const char *name, hookfn fn, enum hook_priority priority); void remove_hook(const char *name, hookfn fn); void call_hook(int id, void *arg); @@ -68,8 +80,6 @@ typedef struct { struct Client *client; struct Client *target; - struct Channel *chptr; - int approved; } hook_data_client; typedef struct @@ -95,8 +105,19 @@ typedef struct int approved; int dir; const char *modestr; + const char *error; } hook_data_channel_approval; +typedef struct +{ + struct Client *client; + struct Client *target; + struct Channel *chptr; + struct membership *clientms; + struct membership *targetms; + int approved; +} hook_data_channel_visibility; + typedef struct { struct Client *client; @@ -112,6 +133,13 @@ typedef struct const char *comment; } hook_data_client_exit; +typedef struct +{ + struct Client *client; + const char *reason; + const char *orig_reason; +} hook_data_client_quit; + typedef struct { struct Client *client; @@ -119,6 +147,14 @@ typedef struct unsigned int oldsnomask; } hook_data_umode_changed; +typedef struct +{ + struct Client *client; + int oldcaps; + int add; + int del; +} hook_data_cap_change; + enum message_type { MESSAGE_TYPE_NOTICE, MESSAGE_TYPE_PRIVMSG,