#ifndef INCLUDED_modules_h
#define INCLUDED_modules_h
-#include "config.h"
+#include "serno.h"
+#include "defaults.h"
#include "setup.h"
#include "parse.h"
{
char *name;
const char *version;
+ const char *description;
lt_dlhandle address;
int core;
+ int origin;
int mapi_version;
void *mapi_header; /* actually struct mapi_mheader_av<mapi_version> */
};
int cap_index; /* Which cap index does this belong to? */
const char *cap_name; /* Capability name */
void *cap_ownerdata; /* Not used much but why not... */
- int *cap_id; /* May be set to non-NULL to store cap id */
+ unsigned int *cap_id; /* May be set to non-NULL to store cap id */
} mapi_cap_list_av2;
struct mapi_mheader_av1
const char *mapi_module_version; /* Module's version (freeform) */
};
+#define MAPI_ORIGIN_UNKNOWN 0 /* Unknown provenance (AV1 etc.) */
+#define MAPI_ORIGIN_EXTENSION 1 /* Charybdis extension */
+#define MAPI_ORIGIN_CORE 2 /* Charybdis core module */
+
struct mapi_mheader_av2
{
int mapi_version; /* Module API version */
mapi_cap_list_av2 *mapi_cap_list; /* List of CAPs to add */
const char *mapi_module_version; /* Module's version (freeform), replaced with ircd version if NULL */
const char *mapi_module_description; /* Module's description (freeform) */
+ unsigned long int mapi_datecode; /* Unix timestamp of module's build */
};
#define DECLARE_MODULE_AV1(name, reg, unreg, cl, hl, hfnlist, v) \
struct mapi_mheader_av1 _mheader = { MAPI_V1, reg, unreg, cl, hl, hfnlist, v}
#define DECLARE_MODULE_AV2(name, reg, unreg, cl, hl, hfnlist, caplist, v, desc) \
- struct mapi_mheader_av2 _mheader = { MAPI_V1, reg, unreg, cl, hl, hfnlist, caplist, v, desc}
+ struct mapi_mheader_av2 _mheader = { MAPI_V2, reg, unreg, cl, hl, hfnlist, caplist, v, desc, DATECODE}
/* add a path */
void mod_add_path(const char *path);
extern void load_core_modules(int);
extern int unload_one_module(const char *, int);
-extern int load_one_module(const char *, int);
-extern int load_a_module(const char *, int, int);
+extern int load_one_module(const char *, int, int);
+extern int load_a_module(const char *, int, int, int);
extern int findmodule_byname(const char *);
extern void modules_init(void);