]> jfr.im git - solanum.git/blobdiff - extensions/helpops.c
helpops: handle the helper list properly on reload
[solanum.git] / extensions / helpops.c
index 5633420e7cb1898ef40f7ee96a44da171f6845b7..1fb3b42381610b35e589c4f2f2d27e4d6d4b4ee9 100644 (file)
@@ -108,17 +108,31 @@ do_dehelper(struct Client *source_p, struct Client *target_p)
 static int
 _modinit(void)
 {
+       rb_dlink_node *ptr;
+
        user_modes[UMODECHAR_HELPOPS] = find_umode_slot();
        construct_umodebuf();
 
+       RB_DLINK_FOREACH (ptr, global_client_list.head)
+       {
+               struct Client *client_p = ptr->data;
+               if (IsPerson(client_p) && (client_p->umodes & user_modes[UMODECHAR_HELPOPS]))
+                       helper_add(client_p);
+       }
+
        return 0;
 }
 
 static void
 _moddeinit(void)
 {
+       rb_dlink_node *n, *tn;
+
        user_modes[UMODECHAR_HELPOPS] = 0;
        construct_umodebuf();
+
+       RB_DLINK_FOREACH_SAFE(n, tn, helper_list.head)
+               rb_dlinkDestroy(n, &helper_list);
 }
 
 static void