X-Git-Url: https://jfr.im/git/irc/rqf/shadowircd.git/blobdiff_plain/212380e3f42f585dc1ea927402252eb943f91f7b..21c9d815d7293b2fa7e531e8f9f69db2e3399554:/modules/m_help.c diff --git a/modules/m_help.c b/modules/m_help.c index 85f9de3..56d4b83 100644 --- a/modules/m_help.c +++ b/modules/m_help.c @@ -36,6 +36,7 @@ #include "modules.h" #include "hash.h" #include "cache.h" +#include "irc_dictionary.h" static int m_help(struct Client *, struct Client *, int, const char **); static int mo_help(struct Client *, struct Client *, int, const char **); @@ -61,24 +62,6 @@ DECLARE_MODULE_AV1(help, NULL, NULL, help_clist, NULL, NULL, "$Revision: 254 $") static int m_help(struct Client *client_p, struct Client *source_p, int parc, const char *parv[]) { - static time_t last_used = 0; - - /* HELP is always local */ - if((last_used + ConfigFileEntry.pace_wait_simple) > CurrentTime) - { - /* safe enough to give this on a local connect only */ - sendto_one(source_p, form_str(RPL_LOAD2HI), - me.name, source_p->name, "HELP"); - sendto_one(source_p, form_str(RPL_ENDOFHELP), - me.name, source_p->name, - (parc > 1 && !EmptyString(parv[1])) ? parv[1] : "index"); - return 0; - } - else - { - last_used = CurrentTime; - } - dohelp(source_p, HELP_USER, parc > 1 ? parv[1] : NULL); return 0; @@ -113,15 +96,15 @@ dohelp(struct Client *source_p, int flags, const char *topic) static const char ntopic[] = "index"; struct cachefile *hptr; struct cacheline *lineptr; - dlink_node *ptr; - dlink_node *fptr; + rb_dlink_node *ptr; + rb_dlink_node *fptr; if(EmptyString(topic)) topic = ntopic; - hptr = hash_find_help(topic, flags); + hptr = irc_dictionary_retrieve(flags & HELP_OPER ? help_dict_oper : help_dict_user, topic); - if(hptr == NULL) + if(hptr == NULL || !(hptr->flags & flags)) { sendto_one(source_p, form_str(ERR_HELPNOTFOUND), me.name, source_p->name, topic); @@ -135,7 +118,7 @@ dohelp(struct Client *source_p, int flags, const char *topic) sendto_one(source_p, form_str(RPL_HELPSTART), me.name, source_p->name, topic, lineptr->data); - DLINK_FOREACH(ptr, fptr->next) + RB_DLINK_FOREACH(ptr, fptr->next) { lineptr = ptr->data;