File: hook.h

package info (click to toggle)
epic5 3.0.3-1
  • links: PTS
  • area: main
  • in suites: forky, sid
  • size: 5,328 kB
  • sloc: ansic: 75,810; makefile: 648; ruby: 227; python: 215; sh: 78; perl: 13
file content (142 lines) | stat: -rw-r--r-- 2,717 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
/*
 * hook.h: header for hook.c
 * 
 * Copyright 1990, 1995 Michael Sandrof, Matthew Green and others
 * Copyright 1997 EPIC Software Labs
 * See the COPYRIGHT file for license information.
 */

#ifndef __hook_h__
#define __hook_h__

#define FIRST_NAMED_HOOK 1000

enum HOOK_TYPES {
	ACTION_LIST = FIRST_NAMED_HOOK,
	CHANNEL_CLAIM_LIST,
	CHANNEL_LOST_LIST,
	CHANNEL_NICK_LIST,
	CHANNEL_SIGNOFF_LIST,
	CHANNEL_SYNC_LIST,
	CONNECT_LIST,
	CTCP_LIST,
	CTCP_REPLY_LIST,
	CTCP_REQUEST_LIST,
	DCC_ACTIVITY_LIST,
	DCC_CHAT_LIST,
	DCC_CONNECT_LIST,
	DCC_LIST_LIST,
	DCC_LOST_LIST,
	DCC_OFFER_LIST,
	DCC_RAW_LIST,
	DCC_REQUEST_LIST,
	DISCONNECT_LIST,
	ENCRYPTED_NOTICE_LIST,
	ENCRYPTED_PRIVMSG_LIST,
	ERROR_LIST,
	EXEC_LIST,
	EXEC_ERRORS_LIST,
	EXEC_EXIT_LIST,
	EXEC_PROMPT_LIST,
	EXIT_LIST,
	FLOOD_LIST,
	GENERAL_NOTICE_LIST,
	GENERAL_PRIVMSG_LIST,
	HELP_LIST,
	HOOK_LIST,
	IDLE_LIST,
	INPUT_LIST,
	INVITE_LIST,
	JOIN_LIST,
	KEYBINDING_LIST,
	KICK_LIST,
	KILL_LIST,
	LIST_LIST,
	MAIL_LIST,
	MODE_LIST,
	MODE_STRIPPED_LIST,
	MSG_LIST,
	MSG_GROUP_LIST,
	NAMES_LIST,
	NEW_NICKNAME_LIST,
	NICKNAME_LIST,
	NOTE_LIST,
	NOTICE_LIST,
	NOTIFY_SIGNOFF_LIST,
	NOTIFY_SIGNON_LIST,
	NUMERIC_LIST,
	ODD_SERVER_STUFF_LIST,
	OPERWALL_LIST,
	OPER_NOTICE_LIST,
	PART_LIST,
	PING_LIST,
	PONG_LIST,
	PUBLIC_LIST,
	PUBLIC_MSG_LIST,
	PUBLIC_NOTICE_LIST,
	PUBLIC_OTHER_LIST,
	RAW_IRC_LIST,
	RAW_IRC_BYTES_LIST,
	RECONNECT_REQUIRED_LIST,
	REDIRECT_LIST,
	SEND_ACTION_LIST,
	SEND_CTCP_LIST,
	SEND_DCC_CHAT_LIST,
	SEND_EXEC_LIST,
	SEND_MSG_LIST,
	SEND_NOTICE_LIST,
	SEND_PUBLIC_LIST,
	SEND_TO_SERVER_LIST,
	SERVER_ESTABLISHED_LIST,
	SERVER_LOST_LIST,
	SERVER_NOTICE_LIST,
	SERVER_SSL_EVAL_LIST,
	SERVER_STATE_LIST,
	SERVER_STATUS_LIST,
	SET_LIST,
	SIGNAL_LIST,
	SIGNOFF_LIST,
	SILENCE_LIST,
	SSL_SERVER_CERT_LIST,
	STATUS_UPDATE_LIST,
	SWITCH_CHANNELS_LIST,
	SWITCH_QUERY_LIST,
	SWITCH_WINDOWS_LIST,
	TIMER_LIST,
	TOPIC_LIST,
	UNKNOWN_COMMAND_LIST,
	UNKNOWN_SET_LIST,
	UNLOAD_LIST,
	WALL_LIST,
	WALLOP_LIST,
	WHO_LIST,
	WINDOW_LIST,
	WINDOW_REBUILT_LIST,
	WINDOW_COMMAND_LIST,
	WINDOW_CREATE_LIST,
	WINDOW_BEFOREKILL_LIST,
	WINDOW_KILL_LIST,
	WINDOW_NOTIFIED_LIST,
	WINDOW_SERVER_LIST,
	YELL_LIST,
	ZZZZ_THIS_ALWAYS_COMES_LAST_ZZZZ
};

#define NUMBER_OF_LISTS ZZZZ_THIS_ALWAYS_COMES_LAST_ZZZZ
#define INVALID_HOOKNUM -1001

	BUILT_IN_COMMAND(oncmd);
	BUILT_IN_COMMAND(shookcmd);

	int	do_hook 		(int, const char *, ...) __A(2);
	int	do_hook_with_result	(int, char **, const char *, ...) __A(3);
	char *	hookctl			(char *);
	void	flush_on_hooks 		(void);
	void	unload_on_hooks		(char *);
	void	save_hooks 		(FILE *, int);
	void	do_stack_on		(int, char *);
	int	hook_find_free_serial	(int, int, int);

	extern int deny_all_hooks;

#endif /* __hook_h_ */