1 
2 #ifndef PLUGIN_H
3 #define PLUGIN_H
4 
5 #define MODULE_IFACE_VER	2
6 #define XP_CALLBACK(x)	( (int (*) (void *, void *, void *, void *, void *, char) ) x )
7 
8 enum
9 { XP_USERCOMMAND =
10 		0, XP_PRIVMSG, XP_CHANACTION, XP_CHANMSG, XP_CHANGENICK, XP_JOIN,
11 		XP_CHANSETKEY, XP_CHANSETLIMIT, XP_CHANHOP, XP_CHANOP, XP_CHANVOICE,
12 		XP_CHANBAN, XP_CHANRMKEY, XP_CHANRMLIMIT, XP_CHANDEHOP, XP_CHANDEOP,
13 		XP_CHANDEVOICE, XP_CHANUNBAN, XP_CHANEXEMPT, XP_CHANRMEXEMPT,
14 		XP_CHANINVITE, XP_CHANRMINVITE, XP_INBOUND, XP_TE_JOIN,
15 		XP_TE_CHANACTION, XP_TE_CHANMSG, XP_TE_PRIVMSG, XP_TE_CHANGENICK,
16 		XP_TE_NEWTOPIC, XP_TE_TOPIC, XP_TE_KICK, XP_TE_PART, XP_TE_CHANDATE,
17 		XP_TE_TOPICDATE, XP_TE_QUIT, XP_TE_PINGREP, XP_TE_NOTICE, XP_TE_UJOIN,
18 		XP_TE_UCHANMSG, XP_TE_DPRIVMSG, XP_TE_UCHANGENICK, XP_TE_UKICK,
19 		XP_TE_UPART, XP_TE_CTCPSND, XP_TE_CTCPGEN, XP_TE_CTCPGENC,
20 		XP_TE_CHANSETKEY, XP_TE_CHANSETLIMIT, XP_TE_CHANHOP, XP_TE_CHANOP,
21 		XP_TE_CHANVOICE, XP_TE_CHANBAN, XP_TE_CHANRMKEY, XP_TE_CHANRMLIMIT,
22 		XP_TE_CHANDEHOP, XP_TE_CHANDEOP, XP_TE_CHANDEVOICE, XP_TE_CHANUNBAN,
23 		XP_TE_CHANEXEMPT, XP_TE_CHANRMEXEMPT, XP_TE_CHANINVITE,
24 		XP_TE_CHANRMINVITE, XP_TE_CHANMODEGEN, XP_TE_WHOIS1, XP_TE_WHOIS2,
25 		XP_TE_WHOIS3, XP_TE_WHOIS4, XP_TE_WHOIS4T, XP_TE_WHOIS5, XP_TE_WHOIS6,
26 		XP_TE_USERLIMIT, XP_TE_BANNED, XP_TE_INVITE, XP_TE_KEYWORD,
27 		XP_TE_MOTDSKIP, XP_TE_SERVTEXT, XP_TE_INVITED, XP_TE_USERSONCHAN,
28 		XP_TE_NICKCLASH, XP_TE_NICKFAIL, XP_TE_UKNHOST, XP_TE_CONNFAIL,
29 		XP_TE_CONNECT, XP_TE_CONNECTED, XP_TE_SCONNECT, XP_TE_DISCON,
30 		XP_TE_NODCC, XP_TE_DELNOTIFY, XP_TE_ADDNOTIFY, XP_TE_WINTYPE,
31 		XP_TE_CHANMODES, XP_TE_RAWMODES, XP_TE_KILL, XP_TE_DCCSTALL,
32 		XP_TE_DCCTOUT, XP_TE_DCCCHATF, XP_TE_DCCFILEERR, XP_TE_DCCRECVERR,
33 		XP_TE_DCCRECVCOMP, XP_TE_DCCCONFAIL, XP_TE_DCCCON, XP_TE_DCCSENDFAIL,
34 		XP_TE_DCCSENDCOMP, XP_TE_DCCOFFER, XP_TE_DCCABORT, XP_TE_DCCIVAL,
35 		XP_TE_DCCCHATREOFFER, XP_TE_DCCCHATOFFERING, XP_TE_DCCDRAWOFFER,
36 		XP_TE_DCCCHATOFFER, XP_TE_DCCRESUMEREQUEST, XP_TE_DCCSENDOFFER,
37 		XP_TE_DCCGENERICOFFER, XP_TE_NOTIFYONLINE, XP_TE_NOTIFYNUMBER,
38 		XP_TE_NOTIFYEMPTY, XP_TE_NOCHILD, XP_TE_ALREADYPROCESS,
39 		XP_TE_SERVERLOOKUP, XP_TE_SERVERCONNECTED, XP_TE_SERVERERROR,
40 		XP_TE_SERVERGENMESSAGE, XP_TE_FOUNDIP, XP_TE_DCCRENAME, XP_TE_CTCPSEND,
41 		XP_TE_MSGSEND, XP_TE_NOTICESEND, XP_TE_WALLOPS, XP_HIGHLIGHT,
42 		XP_TE_IGNOREHEADER, XP_TE_IGNORELIST, XP_TE_IGNOREFOOTER,
43 		XP_TE_IGNOREADD, XP_TE_IGNOREREMOVE, XP_TE_RESOLVINGUSER,
44 		XP_TE_IGNOREEMPTY, XP_TE_IGNORECHANGE, XP_TE_NOTIFYOFFLINE,
45 		XP_TE_MALFORMED_FROM, XP_TE_MALFORMED_PACKET, XP_TE_PARTREASON,
46 		XP_TE_UPARTREASON, XP_TE_NEWMAIL, XP_TE_MOTD, XP_TE_PINGTIMEOUT,
47 		XP_TE_UINVITE,
48 		XP_IF_SEND, XP_IF_RECV,
49 		NUM_XP
50 };
51 
52 
53 #define	EMIT_SIGNAL(s, a, b, c, d, e, f) (fire_signal(s, a, b, c, d, e, f))
54 /* #define XP_CALLNEXT(s, a, b, c, d, e, f)  if (s != NULL) return s(a, b, c, d, e, f); return 0; */
55 /* #define XP_CALLNEXT_ANDSET(s, a, b, c, d, e, f) if (s != NULL) s(a, b, c, d, e, f); return 1; */
56 
57 #define XP_CALLNEXT(s, a, b, c, d, e, f) return 0;
58 #define XP_CALLNEXT_ANDSET(s, a, b, c, d, e, f) return 1;
59 
60 extern int current_signal;
61 
62 #ifdef USE_PLUGIN
63 
64 struct module
65 {
66 	void *handle;
67 	char *name, *desc;
68 	struct module *next, *last;
69 };
70 
71 struct module_cmd_set
72 {
73 	struct module *mod;
74 	struct commands *cmds;
75 	struct module_cmd_set *next, *last;
76 };
77 
78 #endif
79 
80 struct xp_signal
81 {
82 	int signal;
83 	int (**naddr) (void *, void *, void *, void *, void *, char);
84 	int (*callback) (void *, void *, void *, void *, void *, char);
85 	/* These aren't used, but needed to keep compatibility --AGL */
86 	void *next, *last;
87 	void *data;
88 #ifdef USE_PLUGIN
89 	struct module *mod;
90 #else
91 	void *padding;
92 #endif
93 };
94 
95 struct pevt_stage1
96 {
97 	int len;
98 	char *data;
99 	struct pevt_stage1 *next;
100 };
101 
102 #ifndef	PLUGIN_C
103 /* extern int (*sighandler[NUM_XP]) (void *, void *, void *, void *, void *, char); */
104 extern void *signal_data;
105 extern struct xp_signal *sigroots[NUM_XP];
106 extern int fire_signal (int, void *, void *, void *, void *, void *, char);
107 
108 #endif
109 
110 #endif /* PLUGIN_H */
111