struct storedhook {
CommandHandler old;
sstring *name;
- sstring *oldhelp;
- sstring *newhelp;
+ cmdhelp *oldhelp;
+ cmdhelp *newhelp;
struct storedhook *next;
} storedhook;
UserMessageHandler oldhandler;
ControlMsg oldreply;
ControlWall oldwall;
+ControlPermitted oldpermitted;
void noperserv_trap_registration(int hooknum, void *arg);
int noperserv_showcommands(void *sender, int cargc, char **cargv);
oldwall = controlwall;
controlwall = &noperserv_wall;
+ oldpermitted = controlpermitted;
+ controlpermitted = &noperserv_policy_command_permitted;
+
memset(&special, 0, sizeof(struct specialsched));
if(!mynick) {
newhook->old = fetchcommand->handler;
if(newhelp) {
- newhook->newhelp = getsstring(newhelp, 512);
+ newhook->newhelp = (cmdhelp *)malloc(sizeof(cmdhelp));
+ memset(newhook->newhelp,0,sizeof(cmdhelp));
if(!newhook->newhelp) {
freesstring(newhook->name);
free(newhook);
- return 1;
+ } else {
+ int len = strlen(newhelp) + 1;
+ newhook->newhelp->helpstr = (char *)malloc(len);
+ if (newhook->newhelp->helpstr) {
+ strlcpy(newhook->newhelp->helpstr, newhelp, len);
+ }
+ newhook->oldhelp = fetchcommand->ext;
+ fetchcommand->ext = newhook->newhelp;
}
- newhook->oldhelp = fetchcommand->help;
- fetchcommand->help = newhook->newhelp;
} else {
newhook->newhelp = NULL;
}
if(ch->old && (fetchcommand = findcommandintree(controlcmds, ch->name->content, 1))) {
fetchcommand->handler = ch->old;
if(ch->newhelp) {
- fetchcommand->help = ch->oldhelp;
- freesstring(ch->newhelp);
+ fetchcommand->ext = ch->oldhelp;
+ if ( ((cmdhelp *)ch->newhelp)->helpstr)
+ free( ((cmdhelp *)ch->newhelp)->helpstr);
+ free(ch->newhelp);
}
}
nh = ch->next;
controlwall = oldwall;
controlreply = oldreply;
+ controlpermitted = oldpermitted;
}
void noperserv_trap_registration(int hooknum, void *arg) {