/*
* hook.h.proto: header for hook.c
*
* Copyright (c) 1990 Michael Sandrof.
* Copyright (c) 1991, 1992 Troy Rollo.
* Copyright (c) 1992-2006 Matthew R. Green.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/*
* @(#)$eterna: hook.h,v 1.40 2006/07/25 11:11:06 mrg Exp $
*/
#ifndef __hook_h_
# define __hook_h_
/* Hook: The structure of the entries of the hook functions lists */
typedef struct hook_stru
{
struct hook_stru *next; /* pointer to next element in list */
u_char *nick; /* The Nickname */
int not; /* If true, this entry should be
* ignored when matched, otherwise it
* is a normal entry */
int noisy; /* flag indicating how much output
* should be given */
int server; /* the server in which this hook
* applies. (-1 if none). If bit 0x1000
* is set, then no other hooks are
* tried in the given server if all the
* server specific ones fail
*/
int sernum; /* The serial number for this hook. This
* is used for hooks which will be
* concurrent with others of the same
* pattern. The default is 0, which
* means, of course, no special
* behaviour. If any 1 hook suppresses
* the * default output, output will be
* suppressed.
*/
u_char *stuff; /* The this that gets done */
int global; /* set if loaded from `global' */
} Hook;
/* HookFunc: A little structure to keep track of the various hook functions */
typedef struct
{
u_char *name; /* name of the function */
Hook *list; /* pointer to head of the list for this
* function */
int params; /* number of parameters expected */
int mark;
unsigned flags;
} HookFunc;
/*
* NumericList: a special list type to dynamically handle numeric hook
* requests
*/
typedef struct numericlist_stru
{
struct numericlist_stru *next;
u_char *name;
Hook *list;
} NumericList;
int do_hook(int, char *, ...);
void on(u_char *, u_char *, u_char *);
void save_hooks(FILE *, int);
void remove_hook(int, u_char *, int, int, int);
void show_hook(Hook *, u_char *);
extern NumericList *numeric_list; /* XXX */
extern HookFunc hook_functions[]; /* XXX */
extern int in_on_who;
enum {
ACTION_LIST = 0,
CHANNEL_NICK_LIST,
CHANNEL_SIGNOFF_LIST,
CONNECT_LIST,
CTCP_LIST,
CTCP_REPLY_LIST,
DCC_CHAT_LIST,
DCC_CONNECT_LIST,
DCC_ERROR_LIST,
DCC_LIST_LIST,
DCC_LOST_LIST,
DCC_RAW_LIST,
DCC_REQUEST_LIST,
DISCONNECT_LIST,
ENCRYPTED_NOTICE_LIST,
ENCRYPTED_PRIVMSG_LIST,
EXEC_LIST,
EXEC_ERRORS_LIST,
EXEC_EXIT_LIST,
EXEC_PROMPT_LIST,
EXIT_LIST,
FLOOD_LIST,
HELP_LIST,
HOOK_LIST,
ICB_CMDOUT_LIST,
ICB_ERROR_LIST,
ICB_STATUS_LIST,
ICB_WHO_LIST,
IDLE_LIST,
INPUT_LIST,
INVITE_LIST,
JOIN_LIST,
KICK_LIST,
LEAVE_LIST,
LIST_LIST,
MAIL_LIST,
MODE_LIST,
MSG_LIST,
MSG_GROUP_LIST,
NAMES_LIST,
NICKNAME_LIST,
NOTE_LIST,
NOTICE_LIST,
NOTIFY_SIGNOFF_LIST,
NOTIFY_SIGNON_LIST,
OS_SIGNAL_LIST,
PUBLIC_LIST,
PUBLIC_MSG_LIST,
PUBLIC_NOTICE_LIST,
PUBLIC_OTHER_LIST,
RAW_IRC_LIST,
RAW_SEND_LIST,
SEND_ACTION_LIST,
SEND_DCC_CHAT_LIST,
SEND_MSG_LIST,
SEND_NOTICE_LIST,
SEND_PUBLIC_LIST,
SEND_TALK_LIST,
SERVER_NOTICE_LIST,
SIGNOFF_LIST,
TALK_LIST,
TIMER_LIST,
TOPIC_LIST,
WALL_LIST,
WALLOP_LIST,
WHO_LIST,
WIDELIST_LIST,
WINDOW_LIST,
WINDOW_KILL_LIST,
WINDOW_LIST_LIST,
WINDOW_SWAP_LIST,
NUMBER_OF_LISTS,
};
#endif /* __hook_h_ */
syntax highlighted by Code2HTML, v. 0.9.1