1
0
mirror of https://github.com/unrealircd/unrealircd.git synced 2026-06-28 10:36:38 +02:00

Module devs: Add priorities for command overrides.

Use: CmdoverrideAddEx(module, name, priority, function)
Suggested by Gottem in https://bugs.unrealircd.org/view.php?id=5143
..and needed by some upcoming stuff.
This commit is contained in:
Bram Matthys
2018-09-20 20:01:39 +02:00
parent 886b67ca8a
commit 30da2ae553
3 changed files with 10 additions and 2 deletions
+1
View File
@@ -702,6 +702,7 @@ extern Command *CommandAdd(Module *module, char *cmd, int (*func)(aClient *cptr,
extern void CommandDel(Command *command);
extern int CommandExists(char *name);
extern Cmdoverride *CmdoverrideAdd(Module *module, char *cmd, int (*func)(Cmdoverride *ovr, aClient *cptr, aClient *sptr, int parc, char *parv[]));
extern Cmdoverride *CmdoverrideAddEx(Module *module, char *name, int priority, int (*func)(Cmdoverride *ovr, aClient *cptr, aClient *sptr, int parc, char *parv[]));
extern void CmdoverrideDel(Cmdoverride *ovr);
extern int CallCmdoverride(Cmdoverride *ovr, aClient *cptr, aClient *sptr, int parc, char *parv[]);
+1
View File
@@ -1704,6 +1704,7 @@ struct Command {
struct _cmdoverride {
Cmdoverride *prev, *next;
int priority;
Module *owner;
aCommand *command;
int (*func)();
+8 -2
View File
@@ -1446,7 +1446,7 @@ Efunction *p, *q;
return NULL;
}
Cmdoverride *CmdoverrideAdd(Module *module, char *name, iFP function)
Cmdoverride *CmdoverrideAddEx(Module *module, char *name, int priority, iFP function)
{
aCommand *p;
Cmdoverride *ovr;
@@ -1469,6 +1469,7 @@ Cmdoverride *CmdoverrideAdd(Module *module, char *name, iFP function)
ovr = MyMallocEx(sizeof(Cmdoverride));
ovr->func = function;
ovr->owner = module; /* TODO: module objects */
ovr->priority = priority;
if (module)
{
ModuleObject *cmdoverobj = MyMallocEx(sizeof(ModuleObject));
@@ -1480,7 +1481,7 @@ Cmdoverride *CmdoverrideAdd(Module *module, char *name, iFP function)
ovr->command = p;
if (!p->overriders)
p->overridetail = ovr;
AddListItem(ovr, p->overriders);
AddListItemPrio(ovr, p->overriders, ovr->priority);
if (p->friend)
{
if (!p->friend->overriders)
@@ -1490,6 +1491,11 @@ Cmdoverride *CmdoverrideAdd(Module *module, char *name, iFP function)
return ovr;
}
Cmdoverride *CmdoverrideAdd(Module *module, char *name, iFP function)
{
return CmdoverrideAddEx(module, name, 0, function);
}
void CmdoverrideDel(Cmdoverride *cmd)
{
if (!cmd->next)