X-Git-Url: https://jfr.im/git/solanum.git/blobdiff_plain/212380e3f42f585dc1ea927402252eb943f91f7b..260fc2cc345996ef69a983db0d96b5696a6cbb0f:/include/hook.h diff --git a/include/hook.h b/include/hook.h index b3d608b2..7cc3bd54 100644 --- a/include/hook.h +++ b/include/hook.h @@ -1,8 +1,6 @@ /* * Copyright (C) 2004-2005 Lee Hardy * Copyright (C) 2004-2005 ircd-ratbox development team - * - * $Id: hook.h 906 2006-02-21 02:25:43Z nenolod $ */ #ifndef INCLUDED_HOOK_H #define INCLUDED_HOOK_H @@ -10,25 +8,33 @@ typedef struct { char *name; - dlink_list hooks; + rb_dlink_list hooks; } hook; typedef void (*hookfn) (void *data); -int h_iosend_id; -int h_iorecv_id; -int h_iorecvctrl_id; - -int h_burst_client; -int h_burst_channel; -int h_burst_finished; -int h_server_introduced; -int h_server_eob; -int h_client_exit; -int h_umode_changed; -int h_new_local_user; -int h_new_remote_user; -int h_introduce_client; +extern int h_iosend_id; +extern int h_iorecv_id; +extern int h_iorecvctrl_id; + +extern int h_burst_client; +extern int h_burst_channel; +extern int h_burst_finished; +extern int h_server_introduced; +extern int h_server_eob; +extern int h_client_exit; +extern int h_after_client_exit; +extern int h_umode_changed; +extern int h_new_local_user; +extern int h_new_remote_user; +extern int h_introduce_client; +extern int h_can_kick; +extern int h_privmsg_channel; +extern int h_privmsg_user; +extern int h_conf_read_start; +extern int h_conf_read_end; +extern int h_outbound_msgbuf; +extern int h_rehash; void init_hook(void); int register_hook(const char *name); @@ -36,24 +42,34 @@ void add_hook(const char *name, hookfn fn); void remove_hook(const char *name, hookfn fn); void call_hook(int id, void *arg); +typedef struct +{ + struct Client *client; + void *arg1; + void *arg2; +} hook_data; + typedef struct { struct Client *client; const void *arg1; const void *arg2; -} hook_data; +} hook_cdata; typedef struct { struct Client *client; const void *arg1; int arg2; + int result; } hook_data_int; typedef struct { struct Client *client; struct Client *target; + struct Channel *chptr; + int approved; } hook_data_client; typedef struct @@ -67,12 +83,25 @@ typedef struct { struct Client *client; struct Channel *chptr; - char *key; + const char *key; } hook_data_channel_activity; typedef struct { struct Client *client; + struct Channel *chptr; + struct membership *msptr; + struct Client *target; + int approved; + int dir; + const char *modestr; + const char *error; +} hook_data_channel_approval; + +typedef struct +{ + struct Client *client; + struct Client *target; int approved; } hook_data_client_approval; @@ -84,6 +113,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; @@ -91,4 +127,34 @@ typedef struct unsigned int oldsnomask; } hook_data_umode_changed; +enum message_type { + MESSAGE_TYPE_NOTICE, + MESSAGE_TYPE_PRIVMSG, + MESSAGE_TYPE_PART, + MESSAGE_TYPE_COUNT +}; + +typedef struct +{ + enum message_type msgtype; + struct Client *source_p; + struct Channel *chptr; + const char *text; + int approved; +} hook_data_privmsg_channel; + +typedef struct +{ + enum message_type msgtype; + struct Client *source_p; + struct Client *target_p; + const char *text; + int approved; +} hook_data_privmsg_user; + +typedef struct +{ + bool signal; +} hook_data_rehash; + #endif