1
0
mirror of https://github.com/unrealircd/unrealircd.git synced 2026-07-10 16:23:13 +02:00

Add new moddata types: MODDATA_LOCALVAR and MODDATA_GLOBALVAR. Untested.

Code using it will soon follow (and then it will be tested :D)
This commit is contained in:
Bram Matthys
2019-06-28 18:35:37 +02:00
parent 38e9c100d4
commit 2a7fc8042d
6 changed files with 145 additions and 17 deletions
+2
View File
@@ -317,6 +317,8 @@
#define MODDATA_MAX_CHANNEL 8
#define MODDATA_MAX_MEMBER 4
#define MODDATA_MAX_MEMBERSHIP 4
#define MODDATA_MAX_LOCALVAR 500
#define MODDATA_MAX_GLOBALVAR 500
/* If EXPERIMENTAL is #define'd then all users will receive a notice about
* this when they connect, along with a pointer to bugs.unrealircd.org where
+4
View File
@@ -39,6 +39,8 @@ extern MODVAR Membership *freemembership;
extern MODVAR MembershipL *freemembershipL;
extern MODVAR aClient me;
extern MODVAR aChannel *channel;
extern MODVAR ModData localvar_moddata[MODDATA_MAX_LOCALVAR];
extern MODVAR ModData globalvar_moddata[MODDATA_MAX_GLOBALVAR];
extern MODVAR struct stats *ircstp;
extern MODVAR int bootopt;
extern MODVAR time_t timeofday;
@@ -692,6 +694,8 @@ extern MODVAR void (*broadcast_sinfo)(aClient *acptr, aClient *to, aClient *exce
extern MODVAR void (*parse_message_tags)(aClient *cptr, char **str, MessageTag **mtag_list);
extern MODVAR char *(*mtags_to_string)(MessageTag *m, aClient *acptr);
extern MODVAR int (*can_send)(aClient *cptr, aChannel *chptr, char **msgtext, char **errmsg, int notice);
extern MODVAR void (*broadcast_md_globalvar)(ModDataInfo *mdi, ModData *md);
extern MODVAR void (*broadcast_md_globalvar_cmd)(aClient *except, aClient *sender, char *varname, char *value);
/* /Efuncs */
extern MODVAR aMotdFile opermotd, svsmotd, motd, botmotd, smotd, rules;
+5 -1
View File
@@ -134,7 +134,7 @@ typedef struct {
Module *owner; /**< Module that owns this snomask */
} Snomask;
typedef enum ModDataType { MODDATATYPE_CLIENT=1, MODDATATYPE_CHANNEL=2, MODDATATYPE_MEMBER=3, MODDATATYPE_MEMBERSHIP=4 } ModDataType;
typedef enum ModDataType { MODDATATYPE_LOCALVAR=1, MODDATATYPE_GLOBALVAR=2, MODDATATYPE_CLIENT=3, MODDATATYPE_CHANNEL=4, MODDATATYPE_MEMBER=5, MODDATATYPE_MEMBERSHIP=6 } ModDataType;
typedef struct _moddatainfo ModDataInfo;
@@ -155,6 +155,8 @@ struct _moddatainfo {
#define moddata_channel(chptr, md) chptr->moddata[md->slot]
#define moddata_member(m, md) m->moddata[md->slot]
#define moddata_membership(m, md) m->moddata[md->slot]
#define moddata_localvar(md) localvar_moddata[md->slot]
#define moddata_globalvar(md) globalvar_moddata[md->slot]
#define EXCHK_ACCESS 0 /* Check access */
#define EXCHK_ACCESS_ERR 1 /* Check access and send error if needed */
@@ -1209,6 +1211,8 @@ _UNREAL_ERROR(_hook_error_incompatible, "Incompatible hook function. Check argum
#define EFUNC_TKL_CHARTOTYPE 63
#define EFUNC_TKL_TYPE_STRING 64
#define EFUNC_CAN_SEND 65
#define EFUNC_BROADCAST_MD_GLOBALVAR 66
#define EFUNC_BROADCAST_MD_GLOBALVAR_CMD 67
/* Module flags */
#define MODFLAG_NONE 0x0000