EPIC4 Projects, Bugs, and other Errata:

KNOWN ERRATA (eg, bugs, or unresolved requests):
------------------------------------------------
Confirmed issues:
* $cparse(%Ftext%Btext) causes the blink to be turned off after the %B
	-- I have no idea what is causing this.
	-- But i wish i knew...
* Nutbar wants $isconnected() to not accept -1 at all.
	-- Does anyone object to this?

Unconfirmed bug sightings:  Last chance to confirm these!
-------
-------	If nobody reports these again, ill assume theyre not a problem.
-------
* Figure out why Morden's prompt isnt resetting after /help
	-- Is this still happening?
* Magic failure on lastlog.c:188
	-- I dont know what causes this.
* Watch for off-by-one error from:
		window new scratch on double on hide swap last
		clear
		echo blah
		window kill
	-- I cant reproduce this.  Works fine for me.


PROJECT LIST:
-------------
Legend: X means its done.
	* means ive already designed the process and plan on doing it
	+ means ive not designed it yet, but will do it if can be done.
	- means ive not designed it and dont plan on it, but who knows?
	0 means itll only get done if someone else does it. >;-)

Major projects
--------------
X (pre2) Work on the screen/window implementation, scrollback.
X (pre2) Convert uses of list.c to alist.c in (names.c, notify.c)
X (pre2) Rework the exec implementation
X (pre2) Real ``return'' and ``break'' commands
X (pre2) Rework the on implementation
X (pre2) Rework the flood implementation
X (pre2) New wildcard parser
X (pre2) Better/different support for colors/ansi codes/etc?
* (pre3) Rewrite the i/o implementation
* (pre3) Unified symbol tables/package retention 
* (pre3) Dynamic loading of object modules,
* (pre3) Channel issues [1]
* (pre4) "Fix" the interaction between screens, windows, servers, and channels.
+ (pre4) Roll lastlog and scrollback buffers together
+ (pre4) Re-evaluate the /load command (arbitrary limits, speed, etc)
* (pre4) Abolish all uses of list.c (crypt.c, exec.c, screen.c, window.c)
* (pre5) Re-evaluate the help system
+ (pre5) Re-evaluate the security system
+ (pre5) Re-evaluate the /set implementation
+ (pre5) Write or roll in a new math parser
* (pre5) Re-evaluate the ignore system
* 	 Thorough code audit, profiling, get const correctness under control
-        $HELP_PATH should be searchable path? (this cant be done.)
+        Reverse DCC?  All of DCC?
-	 Really must encapsulate server_list.  Really.
-	 Some way to "sign" a dcc send with a larger file.
+	 Argument lists (with default args) for aliases
+        DCC CHAT collisions perhaps could be handled more gracefully (+)
*	 Different STATUS_FORMATs for each window. (k)
-	 Built in file pager
-	 per-channel sets for auto rejoin/delay
-	 $C should work in the context of the from_server, not just curr_win.
-	 DCC progress meter to appear on "top non-active window"
-	 Remove all limitations to size of lines in /load'ed files.
-	 Lossage when nicknames include special chars. (Not sure what to do)
*	 Sort out the entire lastlog/ignore level fiasco.
*	 Keep track of when ignores are set, and have time-expire ignores
-	 Have a special char that does arbitrary extensions.
*	 psykotyk wants a $packages() function.
*	 psykotyk wants to be able to do /stack (push|pop) bind
+	 Make all local vars belong to the function?
+	 Kadafi wants something that completely strips out highlight chars.
-	 Kasi thinks we shouldnt re-establish modes right away on connect.
-	 $getopt()/$optind()/$optarg() function for aliases? (rb nutbar)

[1] CHANNEL ISSUES: (to be addressed in pre3)
---------------------------------------------
* Channel key isnt stored on reconnects.
* Channel and window relationships is all whacked out.
* $C and $T still reflect old values after disconnect. (this is not a bug)
* Maybe a $next_channel() function?
* Allow multiple channels to be bound to a window at a time.
* Dont allow windows to change to channels theyre not bound to.
* Allow per-channel logging

From James' Wish List:
----------------------
 0 real arrays (i.e. replace Karll's arrays with a numerical array op),
 0 case-sensitivity for input and comparisons (maybe a /set for this)
 + (Write logfiles are they appear on the screen -- eg -- wrapped)
 + tighten (or clarify) ++ and -- syntax rules
 + more (graceful) ircd 2.9 support (I know you hate it, but...)
 - Automatic expandos for current alias, parent alias, filename, line num...
 * IGNORE/LASTLOG/etc levels dont match, and they should.
 - Auto-restubbing aliases/assigns/whatever


THE CHANGELOG FOR EPIC4pre2:
----------------------------
1.001 Maintainance in alloca.c
1.001 Use -lncurses and/or -ltinfo to get terminfo instead of termcap.
1.001 No, this is NOT ncurses support, dont bug me about that. ;-P
1.001 Mailbox is found at runtime, rather than at configure time.
1.001 In configure, check for libs BEFORE funcs! (doh!)
1.001 never call exit() after a fork() (should be _exit())
1.001 Im no longer seeing the "Automatically setting +ws for you" bug.
1.001 Added auto-rejoin delay, from Peter Evans.
1.001 Slurp up possible user modes from 004 numeric.
1.001 After dispatching saved usermodes on reconnect, clear usermodes
1.001 Added auto-reconnect delay.
1.001 Trap from_server == -1 in show_notify_list (Colten)
1.001 Add $uhc() from Peter
1.001 Fix memory leaks in remove_numeric_hook, add_cmd_alias
1.001 Release
1.002 Fix bug where locops get umode +O, which is not a "valid" umode.
1.002 Fix bug in oh_my_wait() where end_wait_list didnt get reset -> crash
1.002 Fix bug in logger() where say() used after logfile closed -> crash
1.002 Fix overlapping strcpy in make_status 
1.002 Previous three fixes by Jeff DeFouw (thanks a ton!)
1.002 /bind "meta1- " works (eg, spaces in bind sequences)
1.002 Fix bug in my_stricmp() where high bit set->absurdly large u_short. (+)
1.002 Fix bug in do_hook() where 'name' can be free()d early (+)
1.002 Fix bug in stackcmd() where poppping invalid numeric created wild ptr (+)
1.002 Fix bug in find_var_alias() where cache was stale after destroy_alias (+)
1.002 Added /on oper_notice, massed from "*** Notice --" type notices.
1.002 Added /on kill, massaged from "Recieved KILL message" type notices.
1.002 Added ability to specify multiple files for /dcc send nick file <file...>
1.002 Fix support for DALNet's part messages
1.002 CTCP FINGER replies now return virtual (rather than default) hostname.
1.002 Add support for av2.9's SQUERY and SERVLIST commands.
1.002 Add support for u2.10's WALLCHOP command (i bet i get yelled at!)
1.002 Fix rare re-entrancy problem with save_message_from and friends. (+)
1.002 Add /set XTERM to determine what xterm to use, default "xterm"
1.002 Add automatic userhost lookup for notifies, done in batches!
1.002 Add /set NOTIFY_USERHOST_AUTOMATIC to turn this on.
1.002 Fix /on NOTIFY_SIGNON to take two params, 2nd is userhost.
1.002 Add support so redundant /WHO requests can piggyback (eg. /ON JOIN)
1.002 kill_message() returned the wrong logical value (doh!) (wc)
1.002 send_2comm should use next_arg(). (Colten)
1.002 Fix bug in status line %S, doesnt check window->server for -1 (doh!)
1.002 Fix bug where in dgets(), select() should be polling, not blocking!
1.002 Rewrite the make_status_line() func, it was bogus.
1.002 Rewrite the output_line() func, it was super super bogus.
1.002 This makes epic's output completely SANE for the first time.
1.002 Fix bug where if you did /window kill it lost track of bottom line.
1.002 ctcp_unquote_it() should malloc off one more byte than requested (Colten)
1.002 Pass ON/OFF rather than number to set_var_val in /window hold_mode
1.002 Ok, ok. /parsekey send_line in dumb mode shouldnt be fatal.
1.002 Fix bug so client doesnt exit when blank line entered in dumb mode
1.002 Fix bug where [$0] shortcut in next_unit didnt set args_flag.
1.002 Fix $mid() so asking for negative characters returns false value
1.002 Fix $right() and $left() same as for $mid().
1.002 Fix bug where output_line() beeped after every line
1.002 Add $winbound(), window <-> channel name converter.
1.002 Whack on split_up_line so it doesnt malloc() nearly as much.
1.002 More work on split_up_line so its much more efficient.
1.002 Fix bug so /who ** on back of /who * in channel 0 doesnt crash.
1.002 Fix it so doing /quote who * isnt quite as obnoxious
1.002 Fix bug where /echo $USER wrongly completed to USER_INFORMATION
1.002 Add $ftime() -- get the mod-time for a file.
1.002 Add $irclib() -- returns irc_lib
1.002 Write script "MOTD" to reimplement client side MOTD files.
1.002 Add support for timers to be repeated more than once (Idea by Colten)
1.002 Add /timer -REPEAT flag to implement user interface to above. (Matt)
1.002 Significant fixes to the output chain (screen.c)
1.002 Screen does NOT change on a refresh if DISPLAY_ANSI changed! (hurrah!)
1.012 Release 12
1.013 Fixes to output_line so /set indent works again.
1.013 Fixes to output_line so tabs work correctly again.
1.013 Framework support for ^C colors.  No implementation, though.
1.013 Implement support for ^C colors.  Controlled by #define and /set.
1.013 CONTROL_C_COLOR controls whether to render or strip ^C colors.
1.013 If CONTROL_C_COLOR is off, repainting screen doesnt re-render in color.
1.013 Release 13
1.014 Fix bug where swapping in window with double status got corrupted.
1.014 Remove DISPLAY_ANSI support from lastlog, no longer needed.
1.014 More fixes in split_up_line, its limit of 2048 characters gone!
1.014 More fixes in split_up_line, its limit of 40 lines gone!
1.014 Scrollback appears to work better now than before.
1.014 Added put_echo(), no sprintf, so no more limits on /echo AT ALL!
1.014 Change most usages of the bogus word "illegal" to "invalid"
1.014 Release 14
1.015 Fix /dcc send nick file [file] so its not bogus.
1.015 You can filter inbound ESCapes with #define STRIP_ESCAPES
1.015 CTCP PING replies now checked to see if its reasonable
1.015 Newline now honored in output stream (if thats worth anything)
1.015 Fix yet another misplaced status line bug with /window hide
1.015 Fix add_to_crypt(), copied both into new->nick (reported by Loki)
1.015 Release 15
1.016 Exempt CTCP DCC from CTCP_FLOOD control (too many people gripe about it)
1.016 Fix kill_message to work on a copy, rather than munging original.
1.016 Add /xecho -B, displaying BANNER before a line.
1.016 Automatic userhost lookup for notify seems to be working now.
1.016 Fix bug so NOTIFY_INTERVAL is honored. 
1.016 Fix bug where highlights didnt carry from one line to the next
1.016 Fix bug where we were strcat()ing the empty_string (Colten)
1.016 Add $substr() and $subrstr(), searching for string inside string
1.016 Release pre1r2 release candidate
1.016 Fix counting and stripping ^C codes in the status line.
1.016 Fix status line rhs handling so it can handle colors as well.
1.016 Fix status line rhs handling so it truncates at correct place.
1.016 Once and for all get rid of lines starting with (void).
1.016 Release 16
1.017 Add /set CLOCK_FORMAT to allow formatting for status line
1.017 Change update_clock() to use the previous /set.
1.017 Write update_clock_format() in vars.c to update status line right away.
1.017 Offer names replies on joining a channel via /on names. (rb wc)
1.017 Dont even bother with POBJECTS in Makefile any more. (rb Matt)
1.017 Fix add_user_who, didnt alloca() enough memory (Matt)
1.017 Fix ctcp.c:do_sed() so /encrypt over DCC CHAT works again.
1.017 Fix fe() so it more gracefully handles not having vars specified.
1.017 Fixes for strmcat() and strmopencat() (Colten)
1.017 Bunches and bunches of fixes to the window side of output chain.
1.017 Release 17 (not released) (does not link)
1.018 More chunks taken out of rite(), added to add_to_display()
1.018 Split window command into individual handlers
1.018 Massive re-organization of window.c and screen.c
1.018 Massive re-organization of window.h and screen.h, much progress made
1.018 Release 18 (not released) (but it links!)
1.019 Continued changes to screen.c, window.c (sorry, not keeping track)
1.019 Scrolling and scrollback appear to work for single window.
1.019 Scrolling and scrollback appear to work for multiple windows.
1.019 Hold mode appears to work now for any number of windows.
1.019 Not done yet, lots of rough edges, but good enough to test!
1.019 Release 19 
1.020 Fix bug in window_new that hosed making a new window
1.020 Fix english in some comments to remove bogons.
1.020 Fix so new output visible if in scrollback mode and would not scroll.
1.020 Fix compile-time bug if you #undef WINDOW_CREATE
1.020 Remove use of in_help, fix help_put_it so always to correct window.
1.020 Add lastlog level LOG_HELP to make sure help doesnt goto LOG_CURRENT.
1.020 Fix up help so that it works with the new window setup.
1.020 Add /on DCC_LIST, allow users to get info for reformatting.
1.020 Release 20
1.021 Scrollback mode ends automatically when you reach scrollback point.
1.021 Should be able to 'bg' cleanly, and 'fg' later.
1.021 Rewrite recalculate_windows() so rebalancing is proportional
1.021 Write rebalance_windows() for /window balance.  SIZE windows are exempt.
1.021 Fix buffer overrun wrt continued line corrupted output stuff (i think)
1.021 Release 21
1.022 Fix it so referencing $num-vars in expr mode with no args isnt fatal
1.022 Fix scroll-forward.
1.022 Add status line %P to help diagnose scrollback problems.
1.022 Fix recycling of display_lines, causing client to crash.
1.022 Dont "unclear" a window that has been /clear'ed
1.022 Remove wait_new_free() and really_free(), unused.
1.022 Add /set banner_expand for expanding /set banner.
1.022 Add /window fixed (on|off) to set the absolute_size attribute.
1.022 Fix /wait %proc -cmd ... so it throws away the -cmd, which is ignored.
1.022 Fix /wait so it doesnt reset from_server.
1.022 Change 'on' to 'oncmd'.
1.022 Try to make the DCC_TRANSFER status expando more resilient.
1.022 Change bogus uses of status_update() to update_all_status().
1.022 Change add_to_window suppress status updates to avoid race in s_u_l.
1.022 Fix rite() recursively calling split_up_line -> bad.
1.022 A zillion thanks to Colten for pointing that out to me!
1.022 Recursively calling split_up_line is fatal now, watch for that!
1.022 Add the /shook command, *any* hook type can be activated with it.
1.022 Fixes for scrollback_end and scrollback_start (Kevin Buhr)
1.022 Fix pesky bug that let you scroll past scrollback point.
1.022 Interaction while being ^Z appears to be ok now.
1.022 Add /window skip on, window wont be selected for NEXT_WINDOW, etc.
1.022 Release 22
1.023 Fix bug where userhost was lost when someone changed nick.
1.023 Move "NickList" definition from window.h to names.h.
1.023 Convert uses of "ChannelList" to "Channel", now all the same.
1.023 Fix bug where CTCP ECHO and ERRMSG both returned ECHO.
1.023 Punt on server registration if "realname" is empty.
1.023 Convert of names.c to using alist
1.023 Almost totaly rewrite/re-org of names.c
1.023 Add function "is_me" to greatly simplify logic everywhere.
1.023 Add a re-entrant new_traverse_all_windows().
1.023 Re-create old "NickList" as "WNickList" for window.c's nick lists.
1.023 Work on names.c so it compiles, more const correctness
1.023 Fix alist.c and some of window.c so its const-correct.
1.023 Fix wild_match() so arguments can be const.
1.023 Clean up header files so they dont #include unncesary files.
1.023 Clean up names.c, seems to work! =)
1.023 Implement $nohighlight(), make ^B, ^V, etc visible.
1.023 Release 23
1.024 Fix word-wrap algorithm when line has no breaks (Colten)
1.024 Make sure that DCC only shows up on one status line by default.
1.024 Fix SWITCH_CHANNELS
1.024 Fix two race conditions with wserv and /window create.
1.024 Fixed alist so it wasnt automatically case sensitive.
1.024 Fixed names stuff so it takes advantage of above.
1.024 Add "ceiling_of_display" to Window, so when you /clear it stays clear.
1.024 Fix bug in window_list where it had no idea what your servname was.
1.024 Change default 12hour format to "08:00" (grumble)
1.024 Fix my_stricmp, my_strnicmp, so they could be used as sorting routines.
1.024 This fixes $sort() and $numsort()
1.024 Fix create_nick_list, its ok for it to return NULL.
1.024 This fixes $onchannel().
1.024 Some dcc.c host:port reformatting (Yoshi)
1.024 Fix find_event_hook() to gracefully handle NULL argument
1.024 Convert MODE_* macros to const's in names.c, fixes stupid bugs.
1.024 More reorganization of the output stream, extra screens handled better
1.024 Reorg a lot of stuff in output chain, making progress and sanity.
1.024 Got it so /window delete show_others isnt fatal. (hurrah!)
1.024 Roll in changes for /set status_nick (|Rain|)
1.024 Removed the /set scroll feature.
1.024 Each screen now has its own input cursor position.
1.024 Redrawing screen while in "password" mode doesnt blank screen.
1.024 Release 24
1.025 Integrate new traverse_all_windows(), which is "thread safe".
1.025 Fixes to exec.c:do_processes() to support exec lines > 512 chars.
1.025 Remove #define MURPLE and #define PHONE, theyre unused.
1.025 Fix bug in is_me() where it didnt know if it was me! ;-)
1.025 Fix bug in window_check_servers, didnt re-init 'tmp'.
1.025 Release 25
1.026 Fix bogus assumption that all servers must be open (doh!)
1.026 Make the window with LOG_DCC the window to get the dcc progress meter
1.026 Add error(), which gives a load stack dump
1.026 Change DEFAULT_STATUS_MAIL, write "setmail" script, see UPDATES
1.026 Globally keep track of what is being /loaded, for error msgs.
1.026 #define STRIP_ESCAPES should not be the default.
1.026 Fix $S so it returns correct server refnum.
1.026 Fix handling of incoming exec lines, split up on newlines.
1.026 Add /set NO_CONTROL_LOG, (Peter)
1.026 Fix so you can have repeating status chars, even when you use %> (Colten)
1.026 Add $winnicklist() get nick target list for window (Colten)
1.026 Add #ifdef CONTROL_C_COLOR to 'options' file.
1.026 Release 26
1.027 Yes, $servernick() does exist.  You give it a refnum, it gives you a nick
1.027 If cannot open file for /dcc get, echo the full pathname.
1.027 Fix bug where load_depth was decremented bogusly.
1.027 Fix bug in load() where window_display could be set to 0 on exit.
1.027 Fix so you can scroll back while in hold_mode (Colten)
1.027 Fix in parse_line(), load_depth should be checked against -1 (Colten)
1.027 Temporary fix to resize_window_display() so scrollback doesnt unstick
1.027 Lots of work on exec.c
1.027 Add new_open(), adjust new_close() so they abstract 'readables'
1.027 Fix all uses of readables to make use of above abstraction.
1.027 Add /on redirect, dont let /on exec suppress /redirect %proc any more.
1.027 Fix so piggyback who's are cleaned up as well. (Jeff)
1.027 I couldnt find anything wrong with transpose_chars
1.027 I guess the problem with unbalanced {'s is now fixed (arb Murple)
1.027 Fix some of the stupidity in get_connected() that caused channel lossage
1.027 Attempt to make windows move in groups with the server.
1.027 Attempt to make channels move in groups with the server.
1.027 Fix to delete_window() to keep current channels coherent (Colten)
1.027 Fix to switch_channels() based on suggestion by Colten
1.027 Fixes to windows and channels coherency from Colten
1.027 Add /set winchan_hack, reverse semantics for $winchan() and $chanwin().
1.027 Add $info(w) to signify above semantic change in place
1.027 Fix the semantics of RETURN_INT() in functions.c, more sane now.
1.027 In switch_channels, referenced win->refnum when i meant win->server (doh)
1.027 Crashes associated with reconnecting to refused server seem to be gone.
1.027 Fix to find_channel so if channel '*' doesnt crash on channelless win.
1.027 Release 27
1.028 Fix to timer.c to allow both -refnum and -repeat to be used (Colten)
1.028 Add /xquote, a /quote that takes args.
1.028 Add /xquote -server, allow you to /quote to any open server.
1.028 Add /xeval, an /eval that takes args. (idea by Colten)
1.028 Add /xeval -server, allow you to eval in context of another server
1.028 Add /xeval -window, allow you to eval with output to different window.
1.028 Add /set scrollback, set the max size for the scrollback buffer.
1.028 Fix to clean_server_queues, should take a server argument.
1.028 This fixes bug where /disconnect twice crashed.
1.028 Change $notify() to default to current server rather than server 0.
1.028 Add /window noserv, allows you to have a window with no attached server.
1.028 Add /window echo, allows you to echo a line directly to a window.
1.028 Add stuff to support scratch windows, see UPDATES
1.028 Fix to allow you to do $#function_call(...)  (Colten)
1.028 Add /timer -update, allows you to change target time or commands.
1.028 Roll back change to swap_window, dont move channels to new win.
1.028 Fix scratch windows so they repaint ok.  Looking better!
1.028 Fix big memory leak when calling make_string_var (Colten)
1.028 Fix bug in SETUP_IMPLIED not free()ing varname (Colten)
1.028 Add $isconnected(refnum), idea by Colten
1.028 Modify $myservers(arg), idea by Colten
1.028 Add /set status_does_expandos, control whether $s in status format work
1.028 Fix /window so a naked argument can implies -REFNUM <windesc>
1.028 Add $currchans(server), get current channels for a server
1.028 Fix break_up_line() so a comma can be a line-break char (Colten)
1.028 Add $fnexist(), see if a built in function exists (Arcfire)
1.028 Add $cexist(), see if a built in command exists (Arcfire)
1.028 Add list_local_alias(), show local aliases (Colten)
1.028 Fixes so when window is destroyed, *all* channels for window are moved.
1.028 Fix get_channel_window() so that the window is sanity checked for serv.
1.029 Release 28
1.029 Fix to bug in SETUP_IMPLIED -- dont free varname there! (heh)
1.029 Fix memory leak in dcc_really_erase(), should be free()ing dies (Colten)
1.029 Change get_time() so it doesnt call localtime() all the time.
1.029 Fix lots of bugs in window_bind
1.029 Fix calls to set_channel_by_refnum to not presume current window.
1.029 Fix window_channel so you can join channel even if bound to curr_win.
1.029 Fix p_channel to support even more bogus lossage in ef2.9 server.
1.029 Change the lowest size a window can be to 2 lines (from 4)
1.029 Fix very large CPU sucker, dont call waitpid() unless childproc died.
1.029 Fix to waitpid() call, it can return 0 if no children waiting...
1.029 Lots of other smaller CPU sucker fixes.
1.029 Fix $uhc() so it returns empty if no arguments passed.
1.029 Add support to /window to accept (but ignore) -'s before commands.
1.029 Add 'i' flag to $sar(), for case-insensitive searching.
1.029 Fixes so dumb mode works again (i think)
1.029 Add << and >> operators (impetus by Colten)
1.029 Add -B command line flag, load .ircrc before connection
1.029 Fix race condition that might lead to notifies going to wrong server.
1.029 Add functions to support regex (impetus by Arcfire)
1.029 Fix bug in dgets() causing abnormal connection terminations
1.029 Release 29 (recalled)
1.030 Fix bogus bug fix above. ;-) caused failure to detect EOF properly
1.030 Find big CPU-sucking busy loop in new_select.  Not ready w/o newline!
1.030 Fix bogus call to new_free() in << and >> ops.
1.030 Release 30
1.031 Fix to command_exist, forgot to alloca()! erf. =)
1.031 Fix bug when inserting characters, due to alloca() failure. (rb Crack)
1.031 Maintainance on uzfopen(). Minor changes
1.031 Fix the bug where DCCs werent being cleaned up.
1.031 Fix lameness where we're keeping a static localtime pointer. (rb yoshi)
1.031 Fix stale useage of "free_line" in parse_command
1.031 Fix the argument we pass to localtime in update_clock. Blah.
1.031 Add status bar expando %K indicating youre in scrollback mode
1.031 Add /set status_scrollback to determine what %K looks like.
1.031 Fix bug in register_server() with not setting from_server (Colten)
1.031 Fix bug where dead->termsig could be > NSIG (rb Crack)
1.031 Fix new_select() so it doesnt do select() call if some fd's are buffered
1.031 Add demo versions of "break" and "continue", works with /do, /while, /for
1.031 Add demo version of "return" command, works with aliases and ons
1.031 Change FUNCTION_RETURN from special var to local var.
1.031 Change call_function() to handle FUNCTION_RETURN sensibly.
1.031 Fix "return" command to auto-assign to FUNCTION_RETURN (huzzah!)
1.031 Add /set dont_autoclose_servers for nuke.
1.031 Release 31 (with warnings)
1.032 Add /set no_fail_disconnect for nuke.
1.032 Recall /set dont_autoclose_servers, that was bogus.
1.032 Forgot to put return exception handling around function calls. oops =)
1.032 Fix to new_select() for off-by-1 error not unbuffering highest des used.
1.032 Add support for "anonymous functions" in expression-mode. (for Shade)
1.032 Support ~/file in $chmod().
1.032 Add new flag, /xecho -r, outputs raw termcodes, --no backing store!--
1.032 Fix assignment to FUNCTION_RETURN to work in called aliases and on's.
1.032 Fix scratch windows so they correctly keep track of display_buffer_size.
1.032 Fix Makefile to deal correctly with installed compressed scripts.
1.032 If a file "gzip-scripts" is in your script dir, we'll gzip new scripts
1.032 Add $getenv() so you can get env vars that collide with /set's
1.032 Miscelaneous small fixes found by -Wall -W with gcc.
1.032 Change global variable "dumb" to "dumb_mode"
1.032 Fix it so /on ^yell can suppress yell()s.
1.032 Release 32 (with warnings)
1.033 Fix bug where calling user-functions wasnt clearing return_exception.
1.033 Add /bind unclear_screen so chaos will stop griping about /clear. ;-)
1.033 Fix expression optimization to handle [$1-], etc. inline.
1.033 Fix typo with "NO_FAIL_DISCONNET" missing the last C in config.h
1.033 Fix how ^C codes are handles to there is no ambiguity.
1.033 Fix vars.h -- WINCHAN_HACK was out of order.
1.033 Add description of -B to the command line help stuff.
1.033 Convert all uses of u_int -> unsigned.
1.033 Migrate /STACK ON into hook.c
1.033 Migrate definitions of internal hook struct's out of hook.h into hook.c
1.033 Migrate stackcmd() out of stack.c into commands.c
1.033 Blow away stack.c.  stack.h stays, though.
1.033 Fix memory leak in new_close, (Colten)
1.033 Fix find_local_alias, where last_function_call_stack can be -1. (Colten)
1.033 Fix create_new_screen() so new screens go on END of screen_list.
1.033 This fixes deficiency in traverse_all_windows if first screen is dead.
1.033 Fix window_bind() to error and punt if you re-bind a channel twice.
1.033 Release 33 (with warnings)
1.034 Fix bug in window_bind(), not checking for window->bind_channel. doh!
1.034 Add delete_all_windows() to clean up windows on exit.
1.034 Fix window_bind() to return NULL on error when already bound. (Colten)
1.034 Fix bits_to_lastlog_level to not auto-append a trailing space.
1.034 Fix ON CTCP so it only expects 3 args.
1.034 Fix uzfopen() -- cant call path_search() twice in a row.  OOOOOPS!
1.034 Fix register_timer() to save server and window info, and use them.
1.034 Fix add_to_window, and dont call update_status() unless notified! (rb wc)
1.034 Fix all bogus assignments to curr_scr_win.
1.034 Major revamp of hook.c
1.034 Did not re-implement the "server-specific" feature of /ON.
1.034 Get rid of stupid-lame misfeature "in_on_who"
1.034 Remove bogus lamage "protecting" /on input.
1.034 Finish revamp of hook.c.  Much better! =)
1.034 Fix /on type ^"nick" so that it acts just like /on type "nick" #
1.034 Fix /on, so you can do /on pu  and get listings of all the /on pu*'s.
1.034 Dont send QUIT to server in e_quit, let irc_exit() do that.
1.034 Release 34
1.035 Fix buffer overrun in m_strcat_ues, ptr2 pointing past eob.
1.035 Fix a bunch of stale pointer bugs when destroying windows on exit.
1.035 Fix stack_on becuase of a missed negation test.
1.035 Fix bug in add_to_history (Peter)
1.035 In add_to_screen, forcibly inhibit looping to update_all_window()s.
1.035 Fix some bugs in add_to_list in hook.c dumb bug
1.035 Fix bug in set_current_window where current window isnt on a screen
1.035 Fix call to set_current_window for an invisible window in timer code
1.035 Lots of fixes to /stack push|pop on
1.035 Fix keys.h, UNCLEAR_SCREEN was missing
1.035 Minor changes to keys.h, remove 'global' from struct KeyMap.
1.035 Fix to add_numeric_list, was adding in wrong order. OOOPS.
1.035 Fix to add_numeric_list, forgot to link rest of list to item. OOOPS.
1.035 Fixes to /wait %proc so you can use local vars in an /on exec.
1.035 New script, "pipe", allows you to use output from commands as value.
1.035 Fix typo with error when you dcc send a file that doesnt exist.
1.035 Get rid of %D progress meter when last dcc is closed.
1.035 Add /set status_truncate_rhs, determines which side of %> to truncate
1.035 Add /timer -list since i made reference to it in UPDATES
1.035 Fix new_window so first window always has level all.
1.035 Add /on dcc_offer, catch outbound dcc offer reqeusts (bro srfrog)
1.035 Release 35 (with warnings)
1.036 Fix memory leak when you remove an /on.
1.036 Fix send_2comm, where reason can be used un-initialized.
1.036 Throttle error condition when many buffered blocks recvd from server.
1.036 Fix ^C support in the status bars, so theyre counted correctly.
1.036 Change the number of arguments for ctcp_list back to 4.
1.036 Fix fd lossage when exec's are closed. (Colten)
1.036 Remove spurious "_VAR" on "REVERSE_STATUS_LINE_VAR"
1.036 Recall /SET STATUS_TRUNCATE_RHS feature, much lossage.
1.036 Fix nbytes == 0 condition to do recovery rather than aborting.
1.036 Add new function $count().
1.036 Remove unnecesarily limitation in expressions of 511 bytes per term.
1.036 Raise the maximum length of lines that can be /load'ed by 10 times.
1.036 Change /dcc close, can now do '-all' or '*' to close all types or nicks
1.036 Add /timer -window, allow you to specify arbitrary window for timer.
1.036 You can now do ANSI CODES (but not ^O, ^C, etc) in the input prompt.
1.036 Add warn_lastlog_levels to tell you the valid levels on error
1.036 Change use of "invalid lastlog level" to "invalid level" (rb kasi)
1.036 Completely detach the input prompt from the input buffer
1.036 Move all input state information into the screen structure.
1.037 Fixes so hidden windows dont crash any more
1.037 Fixes so status window is full width again
1.037 Fix so /xecho -level <level> doesnt whine at you.
1.037 Work on window.h so curr_scr is not presumed.
1.037 Lots of changes everywhere to convert to current_window.
1.037 I apologize for not documenting this better.
1.037 Dont redraw entire screen when new window swapped in.
1.037 General cleanup of the mess i made.
1.037 Release 37 (with lots of reservations)
1.038 Bug fixes. ugh. i forgot to document them all.  Sorry.
1.038 --- __inline -> __inline__ in irc_std.h
1.038 Catch systems that dont have regex.h.  Blah
1.038 Fix /window swap last, adjust current window if neccesary.
1.038 Dont use named scope in anonymous functions in expr mode (for locals)
1.038 Roll in pav's $igmask() function.
1.038 Clear the WINDOW_NOTIFIED bit when you /clear a hidden window.
1.038 Add $randread(), read a random line from a file (srfrog)
1.038 Add $msar(), a multiply-substituting $sar() (Colten)
1.038 Add unclear_all_windows()
1.038 New flood stuff, more aggressive at tracking flooders.
1.038 Add /UNCLEAR command, just like /CLEAR, only it unclears, got it?
1.038 Add -VISIBLE and -HIDDEN flags to /CLEAR, /UNCLEAR.  Mutually Exclusive
1.038 Fix crash when you /unclear a window without any output in it.
1.038 Catch 377 numeric as well as 372 for SUPPRESS_SERVER_MOTD.
1.038 Ooops. Dont need /bind ALL_OFF, we already have /bind HIGHLIGHT_OFF
1.038 Fix $onchannel(), where $onchannel(nick) would crash client.
1.038 Fix alias.c so that only [A-Z][a-z][0-9]_. are allowed in assigns.
1.038 Changes to keys.c and input.c, now instead of keeping a pointer to
1.038 --possible keybinding, we keep pointers to tables of pointers, so that
1.038 --we can have access to many meta keys, but only actually define the
1.038 --ones we use when we use them.
1.038 Add 10 new meta keys, META10-META19
1.038 Start using the new flood checking, esp CTCP, INVITE, WALL, NOTE.
1.038 Release 38
1.039 Fix bug where we always thought we were being CTCP flooded. ;-)
1.039 Fix bug where we derefed a possible null pointer in keys.c
1.039 Fix bug where /window delete had current_window == NULL
1.039 Re-implement /redirect feature.
1.039 Fix bug where doing completion on a stub that couldnt load segfaulted.
1.039 Try as much as possible to always use off_t when dealing with file sizes
1.039 Rewrite notify.c to use alists instead of linked lists.
1.039 Force channel mode refresh if +k or +l value changes.
1.039 Fix bug in unset_current_window_channel() not stopping at right place.
1.039 When current channel is stolen from window, automatically get a new one.
1.039 Set current_window when you do /xeval -w
1.039 Add $rigmask() per request of wc.
1.039 Add kasi's patches for latest lame av2.9 protocol damage.
1.039 Release 39
1.040 Fix /window channel so that windows reclaim current channel as above.
1.040 Fix /window new so it doesnt break up fixed sized windows.
1.040 Fixes so that /window new forever eventually fails, not crashes
1.040 Remove unused functions in list.c
1.040 Fix wserv to not use writev() because linux's doesnt work.  Suprise.
1.040 Fix isonbase() to auto-split ison queries for us.
1.040 Some fixes to notify.c, more robust now.
1.040 Add built in function $leftpc()
1.040 Add /xecho -n, works like kasi's suggested /secho. /echo w/o logging
1.040 Add /help -wait, allows you to know when help is all done.
1.040 Add "man" script contributed by Dawid Kuroczko.
1.040 Add compat code from Kasi for 4.4's changes to /on join for lame av2.9
1.040 Release 40
1.041 Fix memory leak in update_input wrt the input prompt not being free'd.
1.041 Clean up key binding metamaps on exit
1.041 Change unsplitw() to new_free() off the containing pointer.
1.041 Fix a bug with #define SOFT_SECURE not grokking uid's properly.
1.041 Implement blinking attr, like bold and underline.
1.041 Add /bind X blink,  /set blink_video, etc.
1.041 Implmement $cparse() with info from [nutbar]
1.041 Fix memory leak for dcc_struct->othername never being freed.
1.041 Support ~ expansion in IRC_SERVERS_FILE env var.
1.041 Fix /window swap last double on to do the double on the correct win
1.041 Fix /window scrollback to not obviously be so losing.
1.041 Add /window query, change query for specific window, /query uses it.
1.041 Fix $winnum() and $winnam() to take an argument
1.041 Roll in Matt's /unload stuff.  I made a few changes to it
1.041 Like adding the /package command rather than having it be automatic.
1.041 Brand new non-recursive pattern matcher (new_match).
1.041 Use /xdebug regex to turn it on. let me know about any probblems.
1.041 Add $uname() from crack, get system info
1.041 Add $querywin() -- you give it a query, it gives you a window
1.041 Add $winrefs() -- you give it nothing, it gives you all your refnums
1.041 Make $winchan() and $chanwin() synonyms.  They figure out what you want. 
1.041 Get rid of the /set WINCHAN_HACK now.
1.041 Implement figure_out_address(), replacement for cut_n_fix_glob
1.041 Change /ignore to use figure_out_address()
1.041 Change $uhc() to use figure_out_address()
1.041 Add $mask() function, just like mirc's.  Uses figure_out_address().
1.041 Release 41
1.042 Initialize tmp in function_uname.
1.042 Work on figure_out_address() to improve $mask().
1.042 Fix bug where who -end on piggybacked request didnt work.
1.042 Dont try to reference its_me in p_join before we actually set it.
1.042 Fix figure_out_address: foo.bar.com is a hostname, not a nick!
1.042 Dont have /me intentionally stuff itself when your queried to dcc chat!
1.042 Add $ischanvoice(nick #channel). Returns 1, 0, or -1 for +v status
1.042 Dont tag outbound CTCP ACTIONs over DCC CHAT, as it confuses mirc. blah.
1.042 Blasted irix cc wont let me compare an int to a char *. blah.
1.042 Func pointers in include/term.h should be explicitly extern.
1.042 Remove unused funcs get_server2_8, set_server2_8, in server.c
1.042 Be sure to delete the cmd alias when unstubbing a cmd alias. ;-)
1.042 Fix $cparse() so %N will inhibit clearing the color code at the end.
1.042 Support %P and %p as synonyms for %M and %m in $cparse()
1.042 Fix /on pong to return any arguments passed back. ;-) (for nutbar)
1.042 /on connect is supposed to take two arguments, not one! :P (hook.c)
1.042 Fix new pattern matcher to work if ? is right after *. (rb crack)
1.042 Dont use the DIRSIZ from SCO because it doesnt take an arg (rb FireClown)
1.042 Fixed some signed-ness problems with binding high-bit chars.
1.042 Fix prntdump(), i dont know WHAT i was thinking when i wrote that...
1.042 Fix $cparse() to turn off possible bold attribute before low-int color.
1.042 Add $servports(), gets local and remote port numbers for specified server
1.042 Add support for 'km' termcap which converts alt-p into esc-p 
1.042 Apparantly $mychannels() does take a window refnum arg.
1.042 Fix notify so that it resets from_server when its done. (FireClown)
1.042 Add /set current_window_level, levels to always go to current window
1.042 Status expandoes %3 through %9 go to current window now 
1.042 Write all new figure_out_address(), according to wc's specs.
1.042 Add $chop(N text), removes N chars from end of 'text', default N is 1.
1.042 Fix DCC RAW_LISTEN code to not store bogus portnum in 'write' member.
1.042 Fix $mask() to mangle out any ~'s leading a username.
1.042 Fix from kasi for p_channel and 2.9 mode handling.
1.042 Fix /set -realname so it doesnt crash.
1.042 Hook /on dcc_list with an "end" when the list is all done.
1.042 Handle figure_out_address(foo@bar) not crashing for lack of dot.
1.042 Handle $uhc(*.com) handling the lack of hostname, as $mask() does.
1.042 Make sure to init local var's caches to NULL. ;-)
1.042 Release 42
1.043 Fix remaining losing instances of 'E' in scandir.c
1.043 In do_notify, check to see if the ptr is NULL before derefing it.
1.043 Support the av2.9 no-ident chars in $mask() and friends.
1.043 Nominally protect %+ (mode, eg, +k stuff) 
1.043 Dont crop back channel name in %C if channel_name_width is 0! 
1.043 Fix /fe to guard against mis-counts in word_count
1.043 Fix add_local_alias to guard against NULL values.
1.043 Dont call make_window_current from new_window, window_new instead.
1.043 Fix file_write[b] to fflush() after every call.
1.043 Fix function_mask to enforce a 9-char limit on 'user' field.
1.043 Fix function_mask to convert any nonprintables to a '?'.
1.043 Add /window status_special, set per-window info
1.043 Add %. expando to status bar, get the per-window info.
1.043 Add -s flag to /xecho, wont echo if youre suppressing output with ^.
1.043 Fix p_kick so that /on kick output goes to the right window.
1.043 Note that changing windows in /on kick will do you no good!
1.043 Fix add_var_alias so that assigning to :var makes a local variable.
1.043 Fix disconnectcmd() so it uses close_server().
1.043 This allows /on server_lost to be used everywhere, i hope. ;-)
1.043 Rewrite check_ignore_channel, less CPU usage, less memory wastage.
1.043 Fix how figure_out_address() is used in ignore.c, dont mangle addrs
1.043 Fix unset_window_current_channel, cant set channel->win to NULL!
1.043 Add back call to unhold_windows() in io(), to flush held stuff.
1.043 Fix p_nick to call notify_mark(), trigger notify events there too.
1.043 Fix p_privmsg to check for ctcp's very early, save cpu time.
1.043 Fix do_ctcp to send CTCPs to a channel to that channel's window.
1.043 Fixes from fireclown to get 8 bit characters working again.
1.043 Including new /set high_bit_escape (0|1|2) (no|yes|honor)
1.043 Now forcibly bootstrap all the /set vars on init.
1.043 Remove useless /set exec_protection feature.
1.043 Add $winlevel(), you give it a window desc, it gives you lastlog level
1.043 Remove pointless /set input_protection feature.
1.043 Medium scale cleanup in ignore.c.  Nothing drastic.
1.043 Add $igtype(), you give it an ignore pattern, it gives you whats ignored
1.043 Add $rigtype(), you give it ignore levels, it returns patterns matched
1.043 Removed unused /set hold_mode_max feature.
1.043 Moved "loading_global" variable from vars.c to irc.c
1.043 Fix off-by-one error when figuring out when do start holding output
1.043 Make /window last not panic if last window is now hidden (rb pana)
1.043 More gracefully handle expanding the "empty" variable. ( eg, $() )
1.043 Add some sanity checks for QuoteAndTruncate and alias_special_char
1.043 Add call to window_check_servers in /disconnect, to update status
1.043 Remove redundant built in /DISCON command.  Completes to /DISCONNECT now.
1.043 Fix userhost mangling when you try to remove an ignore.
1.043 Add call to window_check_servers in do_server for good measure.
1.043 Make a concerted effort to not have any extern var decls in *.c files
1.043 And clean up queue.c and network.c a tad bit while im here...
1.043 Remove incorrectly used #define ALLOW_STOP_IRC in config.h
1.043 Monsterously large patch(es) from fireclown rolled in.  Changes too
1.043 -- numerous and subtle to list here.  Sorry.
1.043 Major things include:
1.043 Dont recompute input prompt when doing input UPDATE_JUST_CURSOR
1.043 Add /who -d (diagnose) and /who -f (flush), to check out who queue
1.043 Fix bug where errors to /who left items on who queue bogusly.
1.043 Fall back to ansi color codes if terminal doesnt appear to be color-aware
1.043 Fix $cparse() to use ansi-order color codes (30-59)
1.043 Release 43 (with warnings)
1.044 A few of fixes from fireclown =)
1.044 Fix skip_ctl_c_seq(), slurp up the rhs of the color, too!
1.044 Fix function_mask to not spit out two **s in the user field.
1.044 Fix ^C codes 1, 3, 4, 5, they were parsed incorrectly
1.044 Support ^C50-57 for background colors as well (in the rhs).
1.044 Fix fallback stuff in term.c to include bold-on in default ansi code.
1.044 Turn reverse off if we're doing a background color.
1.044 Looks like freebsd/sco console doesnt do reversed colors. oh well.
1.044 Cant not recompute input prompt when doing input UPDATE_JUST_CURSOR
1.044 Hideous hack for $uname().
1.044 Release 44-nr
1.044 New functions $getuid(), $getgid(), $getlogin(), $getpgrp().
1.044 Fix $cparse(%N), dont let that bogon get in the retval. :-D
1.044 Fixes for 'tc' script from kasi.
1.044 Blow away any last instances of old 'nelson@cs.uwp.edu' address
1.044 Fix a few egcs inspired warnings, mostly changing int's to size_t's
1.044 Insert a ^C before each new color change, just to make sure.
1.044 Add $iscurchan(), tells you if a channel is current or not.
1.044 Fix indent so it works off of columns, not chars (heh ^B's dont count!)
1.044 Release 44
1.045 Patch #1 -- Fix compat.c so that it includes tparm if you need it
1.045 Patch #2 -- Fix 2.8script to use iscurchan w/o setting bogus /on
1.045 Patch #3 -- Fix bug so $mychannels() doesnt crash if youre not connected
1.045 Patch #4 -- Fix typo with insert_char, calling wrong termcap! (doh!)
1.045 Flush the log after every write (in log.c:add_to_log)
1.045 Fix $uname() finally.
1.045 Add new built in function $channel(), for psykotyk (stop spazzing! =))
1.045 Add 20 new meta maps, meta20-meta39
1.045 Terminfo support!
1.045 To heck with it.  Colors on the status bar will be non-reversed.
1.045 Fix bug in term_insert, dont insert char is we can set insert mode on!
1.045 Throw up more defenses in strip_ansi against bogus ansi codes..
1.045 Dont insert a gratuitous space when /set reverse_status_line off.
1.045 Forcibly assert not-privmsg, not-notice when user presses return.
1.045 Fix $mychannels(). hrm.
1.045 Release 45
1.046 Fix PasteArgs.  Ok. the previous 'fix' was bogus..
1.046 Add new function, $pad(len padc string), allows you to pad w/char
1.046 Add new function, $remws(lhs / rhs), remove all words in lhs from rhs
1.046 Fix bug with \'s inside of \\[...\\] constructs
1.046 Fix $mychannels(), should work w/o any args.
1.046 Add ** operator by request of crackbaby and psykotyk
1.046 Inhibit unnecesary repaint events while doing /window commands
1.046 Obliterate the rest of the useless calls to index().
1.046 Add $printlen(), returns number of printable chars in str
1.046 Add $stripansicodes(), returns text with ansi codes removed or converted.
1.046 Fix that dratted stray ' on terminals w/o a beep char.
1.046 Chop off the 80'th column if EITHER no automargins or we cant set them.
1.046 Release 46
1.047 Fix really stupid bug in scan_channel().
1.047 Fix crash when you hid window and last_window_refnum was also hidden.
1.047 Be sure to return from /who if no args specified! ;-)
1.047 Support ^[[<N>C ansi code for "insert spaces"
1.047 Work on strip_ansi some more, handle highlight chars more gracefully
1.047 Using ^C codes turns off the highlight attribute (bold/blink) for 
1.047 -- whatever you specify.  ^C33 turns off bold, ^C,43 turns off blink
1.047 -- but blink/bold is turned back on when the terminating ^C is done...
1.047 The client attempts to do the right thing if you use ansi codes with
1.047 -- highlights already on, wrt not defeating attributes.  I hope. =)
1.047 Clean up $mask(), add crack's 4 new mask types.
1.047 Work on the reconnect strategy somewhat.  Maybe not better, but a start.
1.047 Add $isnumber() returns 1 if argument is a number, works with any base.
1.047 Rewrite of make_status, infrastructure for multiple status expando maps.
1.047 The syntax of %{N}M where N is number, M is letter, works for above now.
1.047 Fix $pad(). doh.
1.047 Display your nickname on *every* window, not just current one.
1.047 Dont let /dcc resume stuff hork all over in_ctcp_flag. =)
1.047 More work on reconnect strategies.
1.047 Fix $remws(). doh.
1.047 Release 47
1.048 Fix support for ^[[<N>C, counted nargs wrong. ;-)
1.048 Add support for two sets of server flags, for lots more usermodes.
1.048 Fix /disconnect so doing it when not connected does not crash
1.048 When parsing ^CX,  (eg, nothing after comma), dont crash.
1.048 Take out extra code not needed for mangling ^[[1;37m correctly...
1.048 Ok.  I know for sure now epic wont freak out on uppercase usermodes.
1.048 Add ten more /set user_status(10-19).  Get them with %{1}0 ...  %{1}9
1.048 Detect and panic if an /on list is out of order.  Shouldnt happen.
1.048 Fix problem with update_input/FROM_CURSOR not accounting for the prompt
1.048 Add new flag to input, /input -noecho for inputting stuff like passwds
1.048 Rudimentary support for RPONG.  I hope i was close to reality here...
1.048 Lots of work on names.c.  Dont ask. ;-)
1.048 New special char, ^S, denotes a non-destructive space.  Used for ^[[nC
1.048 Convert /help over to using glob() instead of scandir()
1.048 Blow away scandir() in compat.c huzzah!
1.048 Dont use %+ in strftime(), as some systems dont support it (blah!)
1.048 Rename /SET CONTROL_C_COLOR to /SET COLOR
1.048 Put a compatability /set for it in the 2.8script.
1.048 Protect against extraordinarily large <N>'s in ^[[<N>C, max <N> is 256.
1.048 Add new char, 'm' to $info(o) to indicate that we have /set color now
1.048 Call strip_ansi() and output_with_count() on input prompts.
1.048 This allows you to do ^B$C>^B type stuff now.
1.048 Fix really large memory leak with local vars, with help from crackbaby
1.048 Fix a few more memory leaks with help from crackbaby
1.048 Fix possible memory leak with m_s3cat given right conditions.
1.048 Fix bogon where client thought you were +v if you werent on channel.
1.048 Fix bug where client would chop off rightmost char on status line.
1.048 New table-driver for strip_ansi, should be faster, i hope. =)
1.048 Improvements to rsindex(), should make $before/after() faster.
1.048 Allow setting and unsetting specific levels for /window level with +,-
1.048 Allow for more updates to the input line (esp when updating windows)
1.048 Fix bogon that wouldnt properly acknowlege 8-bit was turned off
1.048 Dont crash if we're dcc send'ing a zero-length file.
1.048 Make sure that /on nickname is hooked for yourself always.
1.048 Make strip_ansi more eight-bit aware
1.048 Make term_putchar() strip out escapes again, only used for input.
1.048 Release 48 (are we close to getting done yet?)
1.049 Fix problem where /on's could get registered out of order.
1.049 Fix it again.  Darn C operator precedence! ;-)
1.049 In strip_ansi, reset blink, not bold, when setting bg attr. ;-)
1.049 Dont attempt to parse /on NUM as anything other than decimal. ;-)
1.049 Fix bug where quoted chars (\\*) after an asterisk failed improperly.
1.049 Dont do #ifdef 1 in include/options
1.049 Dont forget to initialize new_server.flags2!
1.049 Widen type used to store channel modes from char (8) to int (32)
1.049 Duh, /on status_update takes three args.
1.049 Rewrite new_next_arg(), dont call sindex().
1.049 Always support '/' as a command char, no matter what
1.049 New internal function, after_expando(), slurps up stuff after $'s.
1.049 Rewrite alias_special_char to use above, cuts down on MatchingBracket
1.049 Rewrite MatchingBracket to be faster (i hope)
1.049 Clear off the status line before outputting it, fixes problems with tabs.
1.049 Dont allow 403 numeric to blow away '*' (literally the channel star)
1.049 Fix possible panic() when doing ${... (no closing })
1.049 Fix /bind meta4 to show all the meta4 bindings.
1.049 Fix /help so /help 5 on exec actually shows that help file.
1.049 Fix bug for infinite loop on passworded servers. (Colten)
1.049 Add support for dalnet channel mode +r.
1.049 Add function_rest, by crackbaby.  Works like $restw() on strings.
1.049 Try to more intelligently recover from KICKs for orphaned channels.
1.049 Fix $isnumber() according to hints from nutbar, honor a base argument
1.049 Implement some of the crazy erfnet/TS4 changes as suggested.
1.049 Clean up a panic() in names.c from when you /window kill closes server.
1.049 Dont use 001, 004, 008 (;-)) in numbers.c
1.049 Offer full name of set in /on set when completion is required
1.049 Change /on dcc_offer for filesends, $3 -> filename, $4 -> file size
1.049 #define MIRC_BROKEN_DCC_RESUME in config.h
1.049 Add /set MIRC_BROKEN_DCC_RESUME, unconditionally defaults to OFF.
1.049 Offer /on disconnect in disconnectcmd if were not really connected
1.049 Dont bother with a gethostbyaddr() when connecting to ip addys.
1.049 -- Update -- Kanan reported this in epic3pre8 (*blush*)
1.049 Fix $tdiff() to make a passing attempt to support decimal numbers.
1.049 New hook, /on unload lets scripts know when theyre about to be nuked
1.049 Make better attempt in strip_ansi to cvt colors when doing bold/blink.
1.049 Fix borked av2.9 damage where channel mode +o doesnt always have an arg
1.049 Include "ircman.c", program from David Welton to read help pages
1.049 Fix some of my damage with calling MatchingBracket.
1.049 Make sure /set status_no_repeat on works when %> is also used
1.049 Fix $(...) so that it always parses insides at least once.
1.049 Fix $tdiff() to properly recognize 0 seconds.
1.049 Back out change to clear status line before output, choppy!
1.049 And handle tabs "correctly" in the status handling code. Ick.
1.049 Support $:var for local only as rval, $::var for global only as rval
1.049 Release 49
1.050 Fix MatchingBracket, i wasnt paying attention to my if/else's. ugh.
1.050 Fix $tdiff(), it wasnt actually copying the decimal part.
1.050 Fix help_me, i wasnt initializing 'entries' before using it.
1.050 Fix some egcs inspired warnings.
1.050 Including the "obvious" fix for $winnames() i missed. doh!
1.050 Fix the bug in new_next_arg where we broke out on any \. (Colten)
1.050 Fix buffer overrun in $jot().
1.050 Add some new cache performance tracking to alias handlers.
1.050 Fix $tdiff(0) so that it works.
1.050 Fix fallback case for MatchingBracket. (Colten)
1.050 Support /msg'ing to dcc raw sockets, ala /msg =6 to talk to fd 6.
1.050 Fix new_next_arg to only honor spaces as spaces.  Fixes lots o stuff.
1.050 Changes from kanan to get /window create working for gnu screen.
1.050 Fix $cparse() so that a leading quoted word acts bitchx-like.
1.050 Fix to $cparse() to make BLINK (%f) work correctly again (|rain|)
1.050 Add /usleep command from rain.
1.050 Mangle 8-bit escape, not 8 bit space. ;-) (rain)
1.050 Add /userip command from rain, works like /userhost.
1.050 Add some extra semicolons for 'make install' for painful shells (rain)
1.050 Some cosmetic changes to Usage: lines suggested by Dawid.
1.050 Always mangle control chars in strip_ansi.
1.050 Fix alias_special_char so that $$ is grokked correctly again.
1.050 \\[...\\] now seems to be working correctly again.
1.050 Handle a naked $chr(27) at the end of the string quasi-reasonably.
1.050 Don't pass a pointer we know is NULL to strchr() (alias_special_char)
1.050 Release 50
1.051 Add missing 'break;' directive for handling of ^[]...
1.051 Dont bother catching 242 numeric, the default is fine.
1.051 Trap requests for METAx where 'x' is out of range.
1.051 Use of $# or $@ causes args_flag to be set, suppressing auto-append.
1.051 Get $# and $@ working together again.
1.051 Avoid a crash when doing /topic when not on a window, null deref.
1.051 Add support for /lastlog -all, also for --msgs to remove 'msgs'.
1.051 Add the -- flag to /xecho, stop parsing args right there
1.051 Unknown args to /xecho stop args parsing and are outputted as well.
1.051 Fix $isnumber() so that it accepts decimal numbers. rhs must be valid.
1.051 Add /set nd_space_max, caps the number of ND_SPACEs per logical line.
1.051 Add some better support for RPONG, help from |rain|.
1.051 Fix some bogons in $msar(), from robohak.
1.051 Prefer to use term_setab to term_setb for doing colors.  I hope. ;-)
1.051 Added -reverse flag to lastlog (RoboHak)
1.051 You know, the end of every case handler should have a break;
1.051 Call replace_color() before each line to booster the current color.
1.051 Dont impose any size limits on windows, they can be 0 height now.
1.051 Output a meaningful error message if HELP_PATH is bogus.
1.051 Fix message_from() to call set_lastlog_msg_level() too. XXX Watch this.
1.051 Thourough scouring of dcc.c.  I know im going to get bit by this
1.051 Removed the -e[ncrypt] flags for DCC commands. Never worked right.
1.051 Add /dcc closeall
1.051 Dont just blindly close first DCC found for /dcc close.
1.051 Add code to support very high /set dcc_sliding_window's w/o blocking
1.051 Add support for /dcc rename -chat oldnick newnick
1.051 Fix /dcc send nick file so it emits a CTCP request every time, not error
1.051 Fix $jot() again, hopefully for the last time.
1.051 Add support for auto timeout-reject, use /set dcc_timeout
1.051 Allow /dcc get nick *  to get all files offered
1.051 Handle filenames with spaces more gracefully in $glob(). (Colten)
1.051 Add /set scrollback_ratio, percentage of window to scroll each time.
1.051 Add support to have the client send rejects for all pending dcc's on exit
1.051 Add $getsets() function (Colten)
1.051 Fix problem in term_reset setting scrollreg with args in wrong order
1.051 Fix /window balance to error out if current_window is hidden.
1.051 Fix uniban alias in 'deban', was $comatch()ing wrong arguments.
1.051 Add support for /on 437, av2.9's new nick collision numeric.
1.051 Add $0 as server name for /on 433/437/438.
1.051 Fix chop() so it doesnt try to chop off some wild pointer.
1.051 Turn off bold between color changes.
1.051 Dont allow windows to be resized that are too small for it.
1.051 Add /package tracking to keybinds, /unload works there, too.
1.051 Hack -- Hook /on set "set-error *" when /set would otherwise output error
1.051 Release 51
1.052 Add support for /on ?type, runtime determines between ^type and -type
1.052 Fix do_hook() to allow @ function_return's in /on ?type
1.052 Fix bogon in dcc.c where accidentally losing track of fd in dcc_close
1.052 Add check to make sure that file is readable before dcc send'ing it
1.052 Add check for SO_SNDLOWAT, linux doesnt have it. ugh.
1.052 Add check to make sure that DCC_SLIDING_WINDOW always at least 1
1.052 Fix expand_alias so $#fn() handled correctly again
1.052 Fix call to update_clock() with a non-bogus value.
1.052 Fix update_clock() so it can properly tell io() when new minute happens
1.052 Fix flag_arg in echocmd, it wasnt being init'd before use
1.052 Fix 'mudirc' script, it works now! woo hoo!
1.052 Add $gettmatch() (Colten)
1.052 Roll back the support for /on 437, kasi says not to do it.
1.052 Fix bogon in vars.c where i wasnt watching my if's around a do_hook
1.052 Fix dcc_send, dont mess around with stat(), just do an access() (texaco)
1.052 Document in source and usage info that -c cla is valid. (texaco)
1.052 Fix printf()s in panic() to output a newline at end. ;-) (texaco)
1.052 Fix rebuild_notify_server() so it doesnt choke on from_server == -1
1.052 Add -s cla, dont connect to server on startup (this and above by Texaco)
1.052 Add special code to trap 9x'_' in reset_nickname to avoid spinning
1.052 Fix /which to call yell() instead of say(), cause DISPLAY is off there.
1.052 Make sure all pertinent windows get updated after /channel.
1.052 Dont skip updating status bars of windows that WANT to be updated (doh)
1.052 Fix /xecho -s, was missing a break causing it to stop parsing args.
1.052 Fix /dcc raw so it accepts the hostname argument again.
1.052 Add /xdebug channels, for watching the "orphaned channel" messages.
1.052 Release 52
1.100 Beta Candidate (Please test!)
1.101 Dont force '/' to be honored as a command char at input line, only script
1.101 Make sure that ^[[0m internally turns off colors as well as attrs.
1.101 Fix get_nicklist_by_window(), returned NULL when it ought not.
1.101 Dont auto-unhold things held while in scrollback mode
1.101 Dont let unhold_windows() return 1 when no windows being unheld!
1.101 Fix check_clock(),  only assert /on idle once per minute at most.
1.101 Fix is_number(), it wasnt doing bounds checking on end of string.
1.101 Fix newio.c, dont assume _SC_OPEN_MAX exists just cause pathconf() does.
1.101 Fix Makefile so make installscript it doesnt choke on weak shells. ;-)
1.101 Fix /describe so it accepts * as a target, as advertized.
1.101 Bumped up the infinite loop check in wild_match to 100,000.
1.101 Dont use \a because of STUPID DIGITAL COMPILERS THAT DONT SUPPORT IT
1.101 Mucked around a bit with in_window_display, didnt mean to break anything.
1.101 Add back missing space at end of /xtype -l in 'tc' script.
1.101 Fix $channel() to grok no args and '*' properly.
1.101 Fix /nick so it doesnt crash when youre not connected.
1.101 Fix $getsets(), i really have no idea why it was free()ing in there.
1.101 Release 53
1.200 Beta Candidate #2 (Please test some more!)
1.201 Always check to make sure a window has non-negative height after resize
1.201 Fix bug in strip_ansi where 8 bit chars not handled correctly.
1.201 Fix wild pointer bug when you output $chr(27)[34
1.201 Remove call to my_isspace in compat.c, thats bogus there.
1.201 Document how to get help files in INSTALL document.
1.201 Fix built_in_alias() -- should return NULL when no valid variable.
1.201 Fix bug in 'tc' script, allowed tablist to grow by one more than max.
1.201 Fix keys.c so it binds all 256 keys, not ignoring 0xFF as it was.
1.201 Fix function_gettmatch(), reverse the arguments to wild_match().
1.201 Fix make_new_Alias, initialize cache_revoked member.
1.201 Removed unused count_ansi and vt100_decode functions
1.201 Fix uzfopen to properly find "~/file.gz" when "~/file" asked for.
1.201 Fixed after_expando to properly figure out $, and $. etc correctly.
1.201 Ignore ~ before username rather than substituting * for it due to gripes
1.201 Fix /usleep only sleeping for 1,000th the time it ought to have been
1.201 Fix source/Makefile.in wserv rule to add missing network.o
1.201 Fix bogon where if you re-assign alias/assign it didnt reset package info
1.201 Fix bug with 'm' alias in 'tc' script with improper quoting.
1.201 Fix term setup to favor TI_setaf over TI_setf.  IceKarma's fault. ;-)
1.201 Fix /usleep to take microseconds, not milliseconds. 
1.201 Add /xdebug unknown, emits a dignostic if unknown function/var used
1.201 Add offer for GET if SEND not taken for /on dcc_connect, compat with bx
1.201 Fix 'killpath' script, several bugs.
1.201 Fix bogus handling for /clear'ing scratch windows (Colten, Robohak)
1.201 Fix $isconnected() to accept zero arguments, defaults to from_server.
1.201 Put back 'window' script in standard script library for typos.
1.201 Add new flag -u-i to /who to handle u2.10.04's new flag to see invisibles
1.201 Add /xdebug all and /xdebug -all to turn all xdebug's on and off.
1.201 Add new function $servernum(), takes server name returns server refnum.
1.201 Fix input_backspace() to properly update the input prompt for TERM=vt100
1.201 Fix input_delete the same way, too.
1.201 Direct all CTCPs sent to non-channels to go to window of person sending
1.201 Set message_from() to the target for /on send_action in describe()
1.201 Dont hook /on send_dcc_chat when sending an action over dcc chat.
1.201 Add /on send_ctcp, hooks for outbound ctcp requests/replies
1.201 Hook /on 433, 437 (nick collisions) even when never connected.
1.201 Add $igetmatches() from crackbaby.  What does this do?
1.201 Add third argument to /on connect, the server's idea of its name.
1.201 Release 54 (please dont shoot me! ;-)
1.202 Fix panic_stack_dump to not freak out when stack frame is negative.
1.202 Fix bogus check for server-connectedness in userhostbase().
1.202 Fix bug with LOG_CRAP not properly re-setting lastlog level.
1.202 The argument to /window channel (eg, /join) is now properly de-quoted
1.202 This means that you can (will have to) backslash quotation marks.
1.202 Fix cursor_in_display() a bit to take a window argument.
1.202 Same thing with cursor_not_in_display(), but it takes a screen arg.
1.202 These allow me to fix the cursor problems in secondary screens.
1.202 Fix $A, so that it reflects from_server, rather then current_window.
1.202 Compiling glob.c is no longer dependant on INCLUDE_FUNCTION_GLOB.
1.202 Fix get_window_by_desc to properly handle window names with leading #
1.202 Fix expand_alias to not spew garbage on $^ degenerate case.
1.202 Add missing #define FLOATING_POINT_SUPPORT in config.h  Ooops. ;-)
1.202 Link compat.o with wserv to get inet_aton for network.o.
1.202 Fix usage line for e_privmsg to indicate dcc_chat usage.
1.202 Change copyright to reflect new BSD licensing (hurray!)
1.202 Fix when user does /set -foobar, to hook /on set "foobar <unset>"
1.202 Fix do_servers() so it doesnt reconnect to a server that rejected you
1.202 Fix parse_args() so 'irc irc.server.com' works w/o a nickname. (Matt)
1.202 Fix typo in 'less' script usage (jvc)
1.202 Add nuke's new langtrans script, replaces old one.
1.202 Change /set show_end_of_numeric so it doesnt inhibit hooking via /on.
1.202 - The above was requested by nutbar and passed by the list.  So there.
1.202 And add $igetrmatches(), i hope i wrote this right...
1.202 Fix e_topic so /topic can unset topics with /topic -#channel
1.202 Add new internal function strcpy_nocolorcodes(), removes ^C codes.
1.202 Add new function, $stripc(), strips control-c color codes out of text
1.202 Release 55
1.300 Beta candidate #3 (Please test!)
