to document it right now, just want to get it off my cvs queue ;P.
Syntax is 'WATCH A +TestUser' to have someone with away notification on your watchlist.
- Made Unreal use the original name in case of a CNAME, instead of the forwarded name,
reported by jerrcsnet (#0003054).
- The "looking up your hostname" message was always sent, regardless of show-connect-info.
error message if the kick should be denied. The upper layer (thus NOT you) takes care
of OperOverride.
- Modulized channel mode +Q (src/modules/chanmodes/chmode_upQ.c)
(unmentioned: ripped out old MODE_FLOODLIMIT stuff -- 2 lines)
As a consequence of this the last parameter you get in your hook is now 'oldnick' rather
than 'newnick'. So the new nick is in sptr->name now and oldnick in last parameter.
- Added HOOKTYPE_PRE_CHANMSG, this should now be used for blocking/morphing text.
It has the parameters: sptr, chptr, text, notice
- HOOKTYPE_CHANMSG now no longer allows one to block the text (use HOOKTYPE_PRE_CHANMSG for
that). It's also moved to after the message was actually sent.
- Added HOOKTYPE_KNOCK (sptr, chptr)
- Added HOOKTYPE_MODECHAR_FIXME. Internal for now, will be replaced with a proper
HOOKTYPE_MODECHAR later (and arguments will change). It's just an internal hack for
chmode +f for now ;).
- Updated indent.pro to use length=110. It still does not indent how I want it to be though,
so don't use it yet ;).
- Moved channel mode +f to src/modules/chanmodes/chmode_f.c, interestingly enough this took
longer than recoding extcmodes paramter support and moving chan mode +j.
It's not only looking like a complex channel mode, it actually *IS* one ;).
TODO: make sure it actually works, and fix sjoining (partly not implemented yet->crash) ;p
for everything. Recode of extcmodes partially complete (only 30% or something), using a
FAST 'slot system' now in the channel structure for paramter modes instead of linked lists.
Besides the slot system being faster, it also causes less memory fragmentation (and
memory fragmentation actually causes slower CPU as well, especially when running for a
long time). Channel modes are still permanent and all.
I'm first going to move modes to modules and then later on have a go at making them non-
permanent (already know exactly how to do it, but other things go first ;p).
Documentation on how all this works will be added later as well. It's really work-in-progress
at the moment, which means: the API might (or 'will') change.
Channel modes will be in src/modules/chanmodes, named chmode_<modechar>.c, that's the
general rule at least.. Some will be 'packed together' like the RFC modes s/n/t/k/l/etc.
Channel mode 'j' has been moved to src/modules/chanmodes/chmode_j.c which seems to work ok.
Details (aka: documentation) about which loadmodule's will be needed for which modes
(like I said, since some will be bundled in for example an 'rfc' module) will also be added
later. For now it doesn't matter much, since there's only j ;).
Side note: some +j code is still in the core (only eating 4 bytes per-user and 4 bytes
per-channel, though), and will remain there for now.
I did the work of above in 2 days, so ehm.. it's still far from complete, but I don't want
to wait for one BIG commit which changes half of the ircd :P.
Added hooks (needs to be documented, like all other hooks, one day ;p):
HOOKTYPE_CAN_JOIN: called from can_join(), seems more logical than PRE_LOCAL_JOIN, also
more nicely passes the key and link stuff.
HOOKTYPE_CAN_SEND: not implemented yet. will be called from can_send()
HOOKTYPE_CLEANUP_CLIENT: called from free_client()
HOOKTYPE_CLEANUP_USER: called from free_user()
HOOKTYPE_CLEANUP_USER2: called from exit_client when freeing a user.. I know, this
might sound redundant, but then again.. some things REQUIRE a certain order (like before
freeing membership links).. Or at least I don't want to break the current logic ;).