CVS log for epic5/source/who.c |
![]() |
Request diff between arbitrary revisions
* Fix hitting ^C twice so it sends SIGUR2 instead of SIGLARLM * This is because we don't use alarm() any more, and ^C^C stops infinite loop * Fix some compiler nits that larne found on strict compilers.
* Roll in a bunch of changes from larne to make epic5 more vms-friendly * Rename if.h -> ifcmd.h (larne) -- Make sure you rerun configure! * Run make depend to pick up name change of if.h * Check for <sys/param.h> in configure (larne) * Extern funcs are case insensitive in strict c90, fix (larne) * Rename options -> options.h since vms requires a dot in filename (larne) * Change "readonly" -> "rdonly" since "readonly" is a symbol in vms. (larne) * Pull in "compat.h" for gailib.c and glob.c (larne) * Set stdout to be explciitly line buffered at startup (larne) * Returning a value from void functino forbidden by strict c90. fix (larne) * Fix some compiler warnings that were lying around. * There are more changes forthcoming, these were the easy ones.
* $write(w-1 ....) is documented to write to the global logfile and now does. * Fixed a long standing notify bug where only one ISON would be sent.
* Fixed q1cmd in command queues to address space mangling issues first noticed by Kraca. * Fixed data_struct to work with dword. * Fixed tabkey.ce to work better with args with spaces in them. * Fixed tabkey.ce to not put / prefix on recursed commands (again). * Fixed tabkey.ce to work with 005 CHANTYPES. * Fixed $xdebug() to work with multiple arguments as it once did. * Fixed what appears to be a typo in elf.c and I don't really know what it does. I hope it doesn't break anything for anybody. XXX * Minor optimisation for notify.c. * Added handling of the 340 numeric in numbers.c * Handle extraneous spaces in server MODE messages. Austhex adds these. * Trigger waiting ISON's when we connect again. I don't recall why I took this out in the first place. * Added "/userhost -flush", which will flush the queue of messages waiting to be sent, NOT the queue awaiting replies. * Extended "/ison -f" to also flush the queue of ISON's waiting to be sent.
Changes suggested by gcc-4.2. No changes in behavior.
Add /userhost -extra for nullie
* Whack /set highlight_char which is no longer being used. * Move away from calling parse_line() and runcmds(), towards the call_* funcs
Fix more larnification issues found by ircfuzz.
* Switch users of LEVEL_CRAP to LEVEL_OTHER. yay! * Whack some unused functions and decls, make *toa() funcs return const. * Roll get_window_by_name() into get_window_by_desc(), it's only user.
* Fix /away -all so it doesn't error on gaps in server list (weirdo) * Fix bogon in /xecho. doh. * Fix /who -real so it matches both with and without the hopcount. * Convert all uses of message_to() to message_setall(). yay!
* Nix some func decls in windows.h that don't exist any more * Add message_setall(), lets you save to_window on the message_from stack. * Replace users of message_to() with message_setall(). * Replace direct users of to_window with message_setall(). yay! * /XECHO got rewritten as part of this. See UPDATES * Fix various compiler warnings.
* Remove some now unused xdebugs, fix compile warnings.
* Improve /dcc get * Fix warnings
Add humanize_number() and fix compiler warnings. more to follow!
Addendum to the previous commit. The /ison changes were difficult to separate and aren't documented: These are the -e, -end and -max flags, and the fact that -max and -len are per-server variables now.
Allow unexpected ison replies to hook /on 303.
* Don't do LOCAL_COPY within an infinite loop, leads to stack exahustion. * Support new signal, SIGUSR2 which throws "system_exception". * Teach the block commands about "system_exception" so they can be stopped. * Whack a bunch of unused timers from vars.c. (see UPDATES) * Sync up config.h, vars.h, and vars.c with each other. * Add "domains" to timers, server timers, window timer, general timers * When timers go off, latch back to their domain * Allow timers to self-cancel if their latched item has gone away * Add /timer -general to set a general timer. * Make /timer -win or /timer -serv set a window or serv timer especially.
GC a bunch of stuff no longer in use.
* Round one of blackjac's 'builtins' script. * Comment out a ton of now-scripted sets. Will GC it later.
Fixes from darwin that they "forgot" to submit upstream.
* Implement a proper built in /INVITE command. See UPDATES * Revert 2.8script change. * Add "subpackage" command, which i'll document later. * Package up 'global', and '2.8script' and 'basical' so they can be /unload'ed. * Don't load "global" if user has their own startup script. * Don't load "global" if the -q option is set, either. * Thus, the "global" script acts as a default "epicrc" for those without one. * THIS IS BACKWARDS INCOMPATABLE. SEE UPDATES FOR IMPORTANT INFORMATION. * Nix the "loading_global" variable, only used by hooks. * Fix /on 005 so it shows the /on 005's and not all numeric hooks. * If Accept() fails, tell the user straight-way so I can debug this. * Fix /window name - so it redraws the status bar.
* Hide ArgListT in alias.h to only those who need it, to save numbers.c * Fix up a lot of compile warnings all over the place. * Some changes to $hookctl() might need feedback from howl... * Fix vhost support so we can do inbound sockets again.
* Refactor window_check_servers() to work with server's current window only. * Roll forward all the rest of changes from epic4 (i think) * Add /ON NEW_NICKNAME, when epic needs a new nickname from you. * Run 'make depend', fix compile errors, fix 'environment' script
* New /ISON bells and whistles as per UPDATES. * Changes to /reconnect, /server -a, /on server_established and remove_from_comma_list() as per KNOWNBUGS.
Fix bogon.
* Add a bunch of stuff to debug the who_queue to find and fix adm's bug.
* Numerous new and changed features as per UPDATES. * Better handling of damaged /who x,y responses.
Sync up with all the bug fixes from epic4.
* Userhost updating for NICK messages as per UPDATES. * Delayed ISON requests as per UPDATES.
* Begin massive refactorization of alias.c, redefining "Alias" as "Symbol" * Refactor parse_line() with a bunch of front end call_* functions. * And a general parse_line() front end, "runcmds()". * Roll builtin expandos in with the user variables * Roll variables and commands together into one name space. HUZZAH! * Nix the caches for the global name space, for now. * I definitely broke /stack alias|assign here. I'll fix it later. * Inline expandos are now officially strings instead of a single char. * Fix bug with $unshift() that popped up. * Move after_expando() to ircaux.c. I think it belongs there more.
* Move some defines from comands.h to where they belong * Add and remove func decls in header files as necessary. * Add /wait =<fd> which returns when a nonblocking dcc connection finishes * Make all keybinding funcs/decls use the BUILT_IN_KEYBINDING macro. * Make the BUILT_IN_KEYBINDING macro use unsigned chars. * Hide (struct Key) inside keys.c, and use (void *) to hold state. * Make the input line use (unsigned char), not (char), huzzah! * Make the "othername" ($3 in /on dcc_raw "E") the port number. * Avoid a NULL deref with "parse_command" keybinding.
Well, at least it compiles again, but I think i still need at least one or two sweeps of the code to make sure I got everything proper.
*********** DONT RUN THIS -- IT'S WORK IN PROGRESS -- DONT RUN THIS *********** * Import epic4 commits 674 through 692, inclusive. * Import epic4 commits 693 through 710, inclusive (epic4-2.0 final) * Change _X and _Y macros to LEVEL and LEVELMASK for linux (sigh) * Add a searchbuf() 8 bit clean byte-finder for future use. * Convert flood checking, ignore checking, lastlog, logfiles to int masks. * Convert message_from to int masks. *********** DONT RUN THIS -- IT'S WORK IN PROGRESS -- DONT RUN THIS ***********
Merge changes from epic4 commits 674 to 692, inclusive.
EPIC5-0.0.1! Huzzah!
Make message_from() work off of a stack; use panics to guard against unmatched message_from()s, and other wackiness.
Add /who -operspy for hybrid opers.
Commit 548 * Nix channel_window, duplicate of get_winref_by_channame() * Make arglist processor panic if it sees an argtype that doesn't exist. * Fix bug with * operator in exprs like (a ? b : *c) in new expression parser. * Fix theoretical crash with deleting hooks from /on window. Bleh. * General cleanups in if.c. * Fix /timer -list acting all wacky. * Fix compilation warnings, you know the deal...
Convert m_strdup() to malloc_strdup().
Commit 541
* Move #define CTCP_* into ctcp.h
* Add /xdebug extractw_debug
* Move #define LOCAL_COPY and SAFE into irc_std.h
* Create compat.h, move all the compat.c decls into there (from ircaux.h)
* Create network.h, move all the network.c decls into there (from ircaux.h)
* Create words.h, move all the words.c decls into there (from ircaux.h)
* Include "compat.h" and "network.h" in ircaux.h
* Do another round of make depends
* Rename 'search' to 'search_for'.
* Fix the metric clock hooking /on timer too much.
* Revamp words.c, to support passing word quoter (' or ") as an argument.
Larnify whoreply(), for larne, of course! =) I'll do the other who replies in a little bit. He needed this right away.
* Rename 'dcc()' to 'dcc_cmd()' so we can use dcc as variable
* Garbage collect unused 'irc_path' global variable.
* Add --with-warns to configure to do FreeBSD "WARNS" like compiler checks
* Many hundreds of changes to improve the "quality of code" in epic, including:
* - Treat all literal strings as (const char *) and fix const correctness.
* - Mopping up all remaining const-correctness issues
* - Do not "launder" a (const char *) to a (char *) in string searches, (ala
strchr) but rather return a ssize_t offset value.
* - Particular, MatchingBracket() returns (ssize_t) and not (char *).
* - Eliminate all "shadow" variable names by changing them to something else.
* - Eliminate most function decls that do not include a prototype list.
* - Add prototypes for all extern functions that are missing them.
* - Ensure most function pointers include a prototype list.
* - In term.c, most of those (char *)'s are really (const char *)'s.
* - Explicitly specify 'static' functions as 'static'
* - Ensure every function is either 'static' or has a prototype.
* - Eliminate (unsigned) < (signed) type comparisons.
* Hopefully you should not notice any changes!
Nominally remove all uses of "unsafe" functions: (Commit 506)
* Convert all uses of strcpy() to strlcpy()
* Convert all uses of strcat() to strlcat()
* Convert all uses of strmcpy() to strlcpy()
* Convert all uses of strmcat() to strlcat()
* Convert all uses of sprintf() to snprintf()
* As much as possible, use 'sizeof var' in snprintf/strlcpy/strlcat.
* Qualify the size of some global vars so we can sizeof() them.
* Nuke strmcpy(), strmcat(), strmcat_ue(), strmccat(),
* Change strmopencat() to strlopencat().
* Change strmpcat() to strlpcat().
* Fix switch_hostname so it doesn't return a (const) string.
* Fix TimerTimeout so it doesn't return a (const) Timeval.
* Change things like (ret) to do ret while (0); for when "ret" is "{}".
* Fix initialization for load_level
* Stop passing in static strings into io(), so we can modify them.
* Make messages passed to io() more informative to the user.
* Fix CTCP FINGER handler not to assume (struct pw) strings can be overwritten.
* Use (socklen_t) and not an (int) for socket sizes.
* Don't return a value in a void function...
* Don't use return value of process_dcc_chat_ctcps() for assignment.
* Don't put semicolons after function bodies
* Fix $getopt() to save 'input_size' so we can use it with strl*().
* Convert all uses of stpcpy() to strlcat() and strlopencat().
* Nix checks for stpcpy() in configure -- regen configure.
* New /set, /SET SWITCH_CHANNELS_BETWEEN_WINDOWS * C language issues (const correctness, integer size correctness) * Revamp channel structure to hold window refnum and not window pointer * Add "current channel counter" to channel structure. * Determine "current channel" by election. * Garbage collect a lot of now unnecessary code. * Add get_echannel_by_refnum(), returns window's "elected" current channel * Add internal function is_waiting_for_channel() * Add internal function move_waiting_channel() * Add internal function get_winref_by_bound_channel() * Add internal function get_bound_channel_by_refnum() * Convert uses of get_channel_by_refnum() to get_echannel_by_refnum() * Fix $winbound() to work when given a window refnum * Fix valgrind issue with $regcomp() * Remove sanity checks from traverse_all_channels(); handled elsewhere now * Change traverse_all_channels() with "this server" or "not this server" arg * Nuke (Window *)->current_channel. Handled by channels now. HUZZAH! * Implement /ON SWITCH_WINDOWS again.
Okay. User input is now handled specially, and parse_command() will not accept incomplete command names anymore. -wd
Another merge.
* Fix who replies to use "who target" as target for output. * This makes /ON WHO hook in the correct window.
* $dccctl() changes as per UPDATES. * Misc bug fixes as per KNOWNBUGS.
Yikes. Merged to become consistent with HEAD. Sorry for all the commits, I'll be quiet again soon. :) -wd
Commit 443 * Uniformly use 32 bit file sizes in dcc. That's the way it has to be. * Split process_incoming_chat into modular functions. It's an experiment. * Remove the old, #if 0'd dcc_getfile_resume. * Remove the second, redundant warning from /window refnum(_or_swap). * Make the ArgList portion of server messages const. All const! Huzzah! * Roll /names, /list, and /mode numeric handlers into numbers.c * Roll "funny" global variables into server-specific variables * Nuke funny.c and funny.h -- huzzah! * /on window_kill provides two args now, $0 is refnum, $1 is name/refnum. * Rename "numeric_banner" to "banner" * Rename "parse_notice" to "p_notice" * In /xecho, rename 'banner' local var to 'want_banner'. * Revamp p_notice to look like and act like p_privmsg as much as possible. * Finish the rest of the larnifications. Done with phase 1. Huzzah!
Commit 437 * Fix targets not being assigned correctly for privmsgs to user. * Send output of who replies to LOG_CRAP as per previous behavior.
Commit 436 This commit is deceptive because it is huge in scope but can be explained pretty simply. * Const correctness improvements. * Invert the meaning of 'new_check_flooding' to return TRUE if flooding. * Revamp funny.c, /list, /names, /mode reply handling. * Remove unused joined_nick, public_nick * Change got_initial_version_28() arguments singly and not an array * Change signature of protocol handling to take "command" as an argument * The above change cascades to a lot of other changes. * Allow the /msg'ing of @W<refnum> to msg a window's refnum. * First round of larnification (Protection against unexpected server data) * This involved substantial rewrites of parse.c, and numbers.c * Now "fake" stuff goes through /on odd_server_stuff. * Fix /on invite so it takes 3 arguments, not 2.
Fix all the rest of the compile issues. bleh.
* Use server_list_size() and not number_of_servers outside of server.c * Use NOSERV and not -1 for "no server" * Use (Timeval) and not (struct timeval) * Fix (get|set)_server_sent_*() et al to take server refnum. * Use parse_server_index() and not my_atol() to parse server refnums * re-indent quotecmd * Rename is_server_connected() to is_server_registered * Make /quote work as long as server is open (not registered) * Use send_to_aserver() when it can avoid setting from_server unecessarily * Change sent_to_server and clear_sent_to_server to (set|get)server_sent(). * Change doing_* to get_server_doing_*. * Use (unsigned short) and not (u_short) * Use (unsigned long) and not (u_long) * Make output_reject_ctcp() take a refnum * Lock a dcc while we are connecting it, just in case. ;-) * Fix /dcc send -p <port> * Store protocol enforcements as (get|set)_server_protocol_state(). * Use (Stat) and not (struct stat) * Rewrite $timerctl() so it works like $logctl() * Rename is_server_connected() to is_server_registered() * Fix an off-by-one error with /FOR ... IN ... * Keep track of both readable and writable fd's with newio stuff. * Convert server_list to an array of pointers * When user /server -delete's, leave a gap, don't change refnums around. * Nix code that handles deleting server refnums. * New function, new_open_for_writing(), for when we do nonblocking connects. * Change new_open() to deregister fd as "writable" * Renovate the notify stuff to take refnums and not just use from_server. * Renovate /WHO, /ISON, /USERHOST to take refnums and not just use from_server. * Make everything that uses server_list[] use get_server() instead. * Make everything capable of dealing with "gaps" in server_list[]. * Use a bunch of macros, to handle with getting and setting server attrs. * Make as much as possible use refnums as params and not from_server. * And a lot of other stuff...
Cleaned the /userip thing up a bit more. Withdrew the sending of unqueued USERIPs and handled 307 responses "better".
* Backed the majority of the /userip patch out for a bit.
* /exec leak fix for -line, -part, etc.
* /for var from x to y step z will work for negative z now, but for bug
compatibility, you must use a negative step to actually make this work.
* Local variable tweaks.
* Fixed $word() to not discard words after a "".
* /userip now uses the internal queue, if the server supports it via the
USERIP 005. Otherwise, it will send the command directly to the server.
The problem with this is that to avoid the internal cache returning the
users address, you must use -direct. This needs to be fixed.
* Karll Array overhaul. Removed certain performance traps for very large
arrays, which have very large numbers of like items, and made it such
that arrays can be in an unsorted internaly until the time that they
need to be sorted, when a quicksort is called on them.
* Added two new functions to deal with this: $usetitem() and
$delitems(). These work like their similarly named counterparts, but
leave the array unsorted, and generally perform better.
* Any function which uses indexes or performs a binary search on an
array will cause the array to be sorted.
* For the most part, extended functions to allow for additional
item/index args. $getitem(array $getmatches(array *cat*)) will
return the contents of all items that have the character sequence
"cat" in them. $getitem(array2 $getmatches(array1 *cat*)) will
act much like $copattern().
Update copyright notices and copyright dates.
Rework some comments to avoid offending server coders who do not like to see breaking of backwards compatability refered to as "broken".
Whoops. i botched the last commit.
Flush queues with a little more persistance.
Commit #39 -- add debugging flags to /ison /ison -d (debug) shows the ison queue /ison -f (flush) deletes the ison queue These features will probably be removed once I find the bug.
Fix an obvious null dereference, reported by HSOC. Commit #13
Fix the last (i hope) of the bugs related to extended dalnet who queries.
Do some more repair work on the "fake_who_end" stuff for those crazy dalnet extended who error replies. I think this actually works now!
Initial import into CVS
Initial revision
| CVS Admin |
Powered by ViewCVS 0.9.2 |