/** * pmodule.h: Protocol handling. Modules usually do not need this. * * Copyright © 2007 Pippijn van Steenhoven / The Ermyth Team * Rights to this code are as documented in COPYING. * * * Portions of this file were derived from sources bearing the following license: * Copyright © 2005 William Pitcock, et al. * Rights to this code are as documented in doc/pod/license.pod. * * $Id: pmodule.h,v 1.4 2007/09/16 18:54:42 pippijn Exp $ */ #ifndef PMODULE_H #define PMODULE_H struct pcommand_t { char const *token; void (*handler) (sourceinfo_t *si, int parc, char *parv[]); int minparc; int sourcetype; }; /* values for sourcetype */ #define MSRC_UNREG 1 /* before SERVER is sent */ #define MSRC_USER 2 /* from users */ #define MSRC_SERVER 4 /* from servers */ #define MAXPARC 35 /* max # params to protocol command */ E void pcommand_add (pcommand_t const &pcmd); E void pcommand_delete (pcommand_t const &pcmd); E pcommand_t const *pcommand_find (char const * const token); template inline void pcommand_add (pcommand_t const (*pcmd)[N]) { for (int i = 0; i < N; i++) pcommand_add ((*pcmd)[i]); } template inline void pcommand_delete (pcommand_t const (*pcmd)[N]) { for (int i = 0; i < N; i++) pcommand_delete ((*pcmd)[i]); } /* ptasks.c */ E void handle_version (user_t *u); E void handle_admin (user_t *u); E void handle_info (user_t *u); E void handle_stats (user_t *u, char req); E void handle_whois (user_t *u, char *target); E void handle_trace (user_t *u, char *target, char *dest); E void handle_motd (user_t *u); E void handle_away (user_t *u, char const * const message); E void handle_message (sourceinfo_t *si, char *target, bool is_notice, char *message); E void handle_topic_from (sourceinfo_t *si, channel_t *c, char const * const setter, time_t ts, char const * const topic); // This is in services.h //E void handle_topic (channel_t *c, char *setter, time_t ts, char *topic); E void handle_kill (sourceinfo_t *si, char *victim, char const *reason); E server_t *handle_server (sourceinfo_t *si, char const * const name, char const * const sid, int hops, char const * const desc); E void handle_eob (server_t *s); E bool should_reg_umode (user_t *u); /* services.c */ E void services_init (void); E void reintroduce_user (user_t *u); E void handle_nickchange (user_t *u); E void handle_burstlogin (user_t *u, char *login); #endif