EPIC5 Projects, Bugs, and other Errata:

KNOWN ERRATA (eg, bugs, or unresolved requests):
------------------------------------------------
* Some way to hook incomplete lines via dcc raw

[See http://www.epicsol.org/PROJECTS for things to come in the future]
[See http://www.epicsol.org/CHANGELOG5 for things that changed in the past]

THE CHANGELOG SINCE THE LAST RELEASE:
-------------------------------------
* Nix auto-append-of-$* feature (args_flag to expand_alias/parse_inline) HUZZAH!
* Fix provided scripts to add $* when necessary.
* Fix up Makefile, configure, et al, to use epic5/ directories.
* Make message_from() work from a queue; call pop_message_from() to GC
* Removed unused variables
* Add /xdebug message_from to watch the message_from queue at work.
* Nix save_message_from(), restore_message_from(), unneeded now.
* Remove /set beep_on_msg, a half-broken feature which can be scripted.
* Nix /set beep_when_away, a 1-line scriptable feature.
* Add new noise level %, (/ON %TYPE); like ^ but doesn't turn off display
* Use message_from() for setting all target/levels
* Nix set_lastlog_message_level(), have lastlog use who_level/who_from now
* Make message_from() use a queue to store old values
* Make everybody pop off their message_from() under pain of panic
* This ensures every output context can be safely interrupted!  HUZZAH!
* Unify the flood, ignore, and lastlog levels.
* *_FLOOD -> LEVEL_*, LOG_* -> LEVEL_*, IGNORE_* -> LEVEL_*
* Add KICK, QUIT, and MODE levels
* Nix #define DEFAULT_BEEP_ON_MSG and #define DEFAULT_BEEP_WHEN_AWAY
* Differentiate between a "mask" (bitmask) and a "level" (integer)
* Don't call them "lastlog levels" any more, they're just "levels"
* Create levels.h, which contain the definitions for all of the level stuff
* Create macro, _X(x) which converts a level name to a mask
* Create macro, _Y(x) which converts a level integer to a mask
* Nix beep_on_level global variable
* Create "Mask" struct which contains an integer to hide a "mask" behind.
* This prevents me from comparing a "mask" to a "level" by mistake.
* Convert many functions and variables to the "Mask" type
* Rename a bunch of functions and variables that use "mask" and not "level"
* Make KICKs, PARTs, QUITs, MODEs, et al use their new special levels!
* All levels now mean everything in every context!  HUZZAH! 
* Release EPIC5-0.0.1
* Make empty_string const.  Now we're cooking with gas! 
* Const correctness madness!
* Compile /ON patterns into regexes and use regexec() to parse them.
* Fix matching of /on type "*" to always have a weight of 1. (rb adm)
* Tack a ^ and $ onto regexes in pattern2regex().
* Flexible hooks need to have 'hook->regexpr' set to NULL to avoid segfault
* commit 1013:
* Use a "status" variable in server, instead of a plurality of binary flags
* Process usermodes as strings only.
* Nix 'flags', 'flags2' and 'umodes', 's_takes_arg', and 'eof'.
* Change update_user_mode() to take a server refnum.
* Nix $serverctl(... UMODES)
* Change server_is_registered() so it takes a server name and our nickname.
* Add server_is_unregistered() which i'll use in the future.
* Hook /on server_lost all the time in close_server() by popular request.
* Make $version() always return "2.8" since all servers are 2.8 servers.
* Check /set auto_rejoin_connect at disconnect-time, instead of connect-time.
* Use a "is_server_active()" function instead of "did_server_rejoin_channels"
* Move the guts of got_initial_version_28() into server_is_registered()
* Call "server_is_registered()" from 001, which loads ircrc among other things.
* Reduce 004 so it only sets the server's version string id.
* Nix got_initial_version_28
* Allow client_connect() to be nonblocking
* Allow Getaddrinfo() and Freeaddrinfo() to be called extern.
* Track writable sockets in 'global_max_fd' too.
* Keep a list of AI's for server addresses in the server code
* When server connection lost before registration, use the next AI
* Implement set_server_status(), which controls where server is in lifetime
* Nix reconnect(), which is replaced by close_server + set_server_status().
* Nix server_reconnects_to(), we no longer reconnect to servers.
* Make /xdebug server_connect the default for this commit at least
* Call window_check_servers() every time through io(), because...
* Make window_check_servers() look for disconnected servers and restart them.
* Add add_mode_to_str() which adds a channel or usermode to a string (sorted)
* Make usermodes use add_mode_to_str()
* Make channel modes use add_mode_to_str()
* Now modes are not stored in bitmasks, not hard-coded at compile time. HUZZAH!
* Nix "inactive" field in channels, channels are thrown away at disconnect
* Don't allow channels to move between servers, natch.
* Nix all the code to handle disconnected channels and such.
* Use change_window_server() to move windows to new servers, because...
* Make window_check_servers() auto-close windowless servers.
* Make change_window_server(<server>, NOSERV) cause a disconnect from <server>
* Don't honor /set auto_reconnect, we don't ever reconnect.
* Fix printf() error in /on kick default output
* Add new server state, SERVER_RECONNECT which means "i can be connected"
* So now SERVER_CLOSED means "don't reconnect me"
* Allow /server, /window server, and /reconnect to change CLOSED -> RECONNECT
* Make server connections nonblocking.
* Server connections are now nonrecursive, nonblocking, multi-protocol. HUZZAH!
* GC a bunch of server code dealing with reconnection we don't use now.
* Don't call window_check_servers() other than io() for sanity reasons.
* Make /window server just change server, let w_c_s() bootstrap connection
* Remove many window->channel->server sanity checks.
* Backslash a bunch of regular pattern chars that are metachars in regexes
* Nix note support
* Revamp notice.c for its eventual assimiliation into parse.c
* Assimilate notice.c into parse.c.  *poof*
* Fix some compiler issues and so forth
* Nix the NOTE level.
* Move load_ircrc() to irc.c, nix "startup_file" global var.
* Always change server state using set_server_status(), because...
* Add /ON SERVER_STATUS, $0 is refnum, $1 is old state, $2 is new state
* Delete /on widelist, no longer used
* Prototype mode string manipulation functions
* Reorganize names.h to reflect new realities
* Prototype (Get|Free)addrinfo() now that server.c uses them.
* Nix /window bind, rebind, unbound; $windowctl(* BIND_CHANNEL *)
* Be careful what modes we add to modestr in update_channel_mode.
* GC some old epic4 macros which we don't use
* Fix a typo that b0rked /on server_status
* Force output for a server connection to go to its connected window.
* Make /server reset server's status, so it can be reconnected to.
* Make /reconnect work on servers that are not already open.
* Don't just cavalierly change window's servers.
* Prefer close_server(i, NULL); over change_window_server(i, NOSERV);
* Allow windows to stay connected to closed servers.
* Nix window's "old server", now they're unnecessary.  HUZZAH!
* Mop up channel stuff that coped with window-old-server.
* Break backwards compatability and make /window +<server> reconnect to ser.
* Break backwards compatability and make /window -<server> disconnect from serv
* Hide a bunch more debugging output behind /xdebug server_connect
* Refactor change_window_server().
* Make /window discon the same as /window noserv, total disconnection.
* Don't do anything on 465 (YOUREBANNEDCREEP) -- this will be scripted
* Totaly refactor /SERVER -- documentation of course yet to come!
* Make new_open[_for_write] take a callback function, stash it in io_rec.
* Add handle_filedescs() which takes select() results and calls callbacks
* Make io() call handle_filedescs() instead of the four callback functions.
* This is the first stage of an extendable callback event looper!  huzzah!
* Fix io() to call do_server(-1) to do ssl timeouts. bleh.
* Hide new_select() behind wait_select(), which will hold the result fd_set's
* Don't make do_filedesc() take fd_set's, but rather get them from wait_select.
* Be cautious and when redrawing one screen, redraw all screens.
* Refactor io() some more; no explicit dependancy on select() now
* Refactor io(), optimize placement of some of the post-select operations.
* When wserv changes size, recalculate windows, and allow io() to redraw it.
* Fix typo in do_server() that caused a blocking read. doh! (rb adm)
* Abstract fd handling in newio.[ch] through #defines
* Add fd handling with freebsd's kqueue().  Huzzah! (not turned on by default)
* Refactor how dgets() works with incomplete SSL reads, slurp up everything
* Nix the bletcherous do_server(-1) hack in io().
* Fix a few more bogons in do_server().
* Abstract the reading function out of dgets() via an argument
* Add unix_read(), the default reader for dgets()
* Add ssl_reader(), a dgets-like reader for SSL connections
* Add server_ssl_reader(), a dgets reader for servers using SSL.
* I probably broke SSL servers by doing this -- report bugs please!
* 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.
* Undo that lame damage -- convert all level handling to "signal-like"
* Each level is individual, and masks are stored in types like (sigset_t).
* Comparing one mask against each other requires O(N^2) operation. bummer.
* But now levels are officially stored in opaque data type!
* And that data type is not limited to 32 bits! HUZZAH!
* Add 6 new lastlog levels (USER5-USER10) to celebrate.
* Reduce the size of level masks to 1 byte, to save cpu.
* Add turn_on_level() and turn_off_level(), for reasons that escape me.
* Nix the /help command, make howl's scripted replacement the default.
* Add $cofilter() entry so you can use it (it was already written)
* Make dcc connections ($connect, /dcc get, /dcc chat) nonblocking
* /DCC RESUME is totaly broken by this.  Will fix later, maybe ;-)
* Add $startupfile(), which returns the epicrc/ircrc file that was loaded
* Offer unknown ctcp requests through /on ctcp_request before /on ctcp.
* Fix /DCC RESUME so it works with nonblocking connects.
* GC all of the blocking connect code.  EPIC is fully nonblocking connect!
* Make sure that servers go through SERVER_EOF state on eof!
* Track waiting/pending channels using a nicklist per window.
* Nix $winbound() and all the other stuff relating to bound channels
* Fix bug with binding/initializing the 255 key
* Fix bug with TOGGLE_STOP_SCREEN keybinding.
* Revamp /window describe so it includes a lot more useful info.
* Wrap send_ctcp in message_from()s to send to the right window.
* Add /xecho -f, which suppersses widnow notify events (%F)
* Move Lastlog definition to lastlog.c, leave stub behind for window.h
* Add window_all_channels(), return all windows for channel from names.c
* Change boolean vartype for windows and status: int -> short.
* Add do_short_boolean(), like do_boolean(), but it takes a short.
* Make the default server quit message "Leaving"
* Have /window describe show all the channels in a window.
* Have /window describe show nicks, channels in flat list, not one per line.
* Make sure to use the server's default quit message when closing it.
* Create a prototype of atoll() for compat systems.
* If a /set indent line would indent > 1/3 of the screen, indent to 1/3, not 0.
* Add a counter to WNickList, for tracking queries
* Each window gets a "current query counter", to find it's current query.
* Adding nicks with /window add <A>gives them query counters of 0
* Adding nicks with /window query <A> gives them next higher query counter.
* Removing query with /window query, still removes <A> from nick list!
* New binding "SWITCH_QUERY" to switch between queries, duh!
* Nix "query_list" in Window, totaly dynamic now, huzzah!
* Fix places using "query_list" to use "get_equery_by_refnum()"
* Refactor add_to_screen(). wheee!
* Change "Update %H on status bar..." to "Update %B on status bar..."
* So $windowctl(... QUERY_NICK ...) returns empty string now.
* Split (Window)->miscflags into "notify_when_hidden" and "notified"
* Add $windowctl(... NOTIFY ...) and $windowctl(... NOTIFIED ...)
* Change $windowctl(GET <refnum> MISCFLAGS) to always return 0.
* Make /window notify and /window notified take ON|OFF|TOGGLE.
* New function, $strtol(<base> <num>), convert <num> in base <base> to base 10.
* New function, $tobase(<base> <num>), convert <num> in base 10 to base <base>.
* GC a bunch of unused code, unused files, that kind of stuff.
* Make all of the level names plural, it's more forgiving that way.
* Release EPIC5-0.0.2
* Fix /window channel.  Ooops!
* Add a timer list dump for when a polling loop is detected.
* Prefer timers over i/o to avoid the polling loop bug. ick.
* 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.
* Fix (maybe?) a NULL deref with prepare_display() that hsoc tripped across.
* Revert all the regex stuff for /on's -- the idea needs a lot more thoguht.
* Create one unified "hook" table for numerics and named hooks
* Nuke "numeric lists" as separate beast in hook.c
* Refactor code to only worry about one hook table. 
* Refactor do_hook() to re-start at start of list every time /on runs
* This makes it 100% safe to edit/delete /on's from within /on's, HUZZAH!
* Revert /on type ^"pattern" to epic4 behavior (suppressive action)
* Add /on type !"pattern" to act like ircII's /on type ^"pattern" (exceptive)
* Add /window kill_all_others for rain.
* Add /set old_server_lastlog_level, for when you merge windows to servers.
* Add %{2}W status expando for black, shows /set status_window in all windows.
* Fix a bug with hook pattern counting found by hsoc and adm.
* Update to newest help script from howl
* Add a "slowcat" script I wrote for larne.
* Add $serverctl(GET * STATUS) for ce.
* Fix typo with $logctl(REFNUM <x>), rb Zlonix
* Split alias item to hold commands and variables separately
* Nix COMMAND_COMPLETION keybinding.  Script replacement forthcoming.
* Nix "Use your nickname as alias for /me" feature.
* Nix automatic command completion (ie, /whoi no longer expands to /whois)
* Work towards not using 'command' var in builtin commands.
* This will allow me to get rid of 'server_func' in builtin command data type
* Nix the 'flags' var in builtin command data type.
* Nix the 'serv_command' var in builtin command data type.
* Create 'init_builtin_commands' to run at startup, add commands to alias
* Shimmy find_cmd_alias to ignore built in commands for now.  Not for long!
* So built in commands should be hung off of aliases now.
* Create 'builtins' script that aliases some previously builtin commands.
* Load this script from global.  Don't forget to alarm users.
* Fix up parse_command() to get aliases and built in commands from aliases.
* This unifies commands and alias name spaces. HUZZAH!
* Optimize some stuff now that I've finished this.
* Unify the built in functions with the command/alias list. HUZZAH!
* 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.
* Fix double-free of command alias arglists. rb adm.
* Add a "saved" list item off of the Symbol type to store /stack'ed stuff.
* Implement stack push|pop|list for all 6 symbol types.
* Nix the "line/global" tracking for symbols
* Rename "filename" tracking for symbols to "package"
* Create clone_arglist() to clone an arglist, duh.
* Change "user_variable_stub" symbol field to be an integer
* Stash the stubbed filename in "user_variable" if stub is set.
* Make stripcrap(ALL) exclude "ALL_OFF", so I can...
* Fix bug with $stripcrap(ALL,-BOLD ^B^B^Btest). (rb BlackJac)
* Make the #define Char const char thing global to all of epic now.
* Whack /set scroll.
* Create a "/set data" type (VARIABLE) which is union of (int) and (char *).
* Expose VARIABLE and variable types in vars.h for others to use.
* Break init of /set's into two parts, one to malloc() the set data
* The second part is to init the default values once command line is done.
* Fix some warnings from --with-warns
* Fix all /set callbacks to accept a (void *)(VARIABLE *) variable
* /Set callbacks can now directly modify the /set via that variable!
* So don't allow direct setting of /set's from outside vars.c.
* Everybody must use set_var_value() which is the backend to /set.
* Whack the /IRCNAME and /REALNAME variable -- use /SET REALNAME, eh!
* Hack up /xecho -x to bide my time until i whack all those /sets it uses.
* Don't call set_input_prompt() in main() any more, it's handled elsewhere.
* Whack /set logfile callback, since nobody seems to have missed it.
* Whack the "number" (float) data in /set since i wasn't gonna use it.
* Whack the "GLOBAL/CHANGED" tracking in /set's.  Tell me if you miss this.
* Unify output of /set values as "[New|Current] value of <var> is <val>"
* Don't limit the size of /set continued_line, this will be revisited soon.
* Quick and dirty hack to work around adm's bug, will fix this later.
* Fix bogon in make_string_var().
* Fix bogon with /set variables not being initialized early enough.
* Add the rest of funcs to do builtin var support in unified symbol table.
* Change the unified data type for builtin funcs to (IrcVariable *).
* Implement "buckets", for O(N) scans of the unified symbol table.
* Change DEFAULT_USERINFO to DEFAULT_USER_INFORMATION to match the /set.
* Make the *_VAR stuff in vars.h 'int's.
* Change USER_INFO_VAR to USER_INFORMATION_VAR to match the /set.
* Change CLIENTINFO_VAR to CLIENT_INFORMATION_VAR to match the /set.
* Change STATUS_NICK_VAR to STATUS_NICKNAME_VAR to match the set.
* Put the defn of (struct IrcVariable) in vars.h, to expose to unified table.
* Convert all uses of now defunct (enum VAR_TYPES) to (int)
* Create "make_string_var_bydata", converts (IrcVariable *) to malloc string
* Change get_var_alias() to return (IrcVariable *)
* In that function that outputs set values, use make_string_var_bydata().
* Change hardcoded *_VAR uses into pointers to *_VAR, for deref at runtime.
* Major revamp of vars.c, to wholly create built in vars at runtime.
* Built in variables are stored in unified symbol table and vars.c xref array.
* *_VAR values now point through xref array to the actual variable data.
* Nix the now unnecessary get_variable_index().
* Add create_user_set(), backend for /SET -CREATE
* Add /SET -CREATE <name> <type> [{<code>}]
* Need to go back and implement the {<code>} thing.
* Revamp how /set works, using buckets, to implement auto-completion.
* $getsets() is not implemented yet, do that too. 
* When looking up $<setname>, use the unified symbol table. HUZZAH!
* Refactor IrcVariable to not depend on having the varname.
* This will lead to multiple hard links to the same /set value in the future.
* Nix the 'name' and 'hash' values in IrcVariable, no longer needed.
* Make all uses of "realname" use the /set realname variable (rb adm)
* Nix the global "realname" variable, use /set realname for all.
* Fix bug with free_bucket()
* Fix compile warnings in vars.c
* Store built in variable xref table in a bucket.
* When changing a user-created /set, start calling the user's scriptback
* Allow the user's scriptback to call /set to override the user's value.
* Tell the user that they created a new /set.
* Support +I from ratbox, for adm.
* Make $getsets() work again.
* Fix alloca() warning for freebsd-current
* Fix warnings about static variables not used
* Fix /set notify_level, which is supposed to cascade to /window notify_level
* Fix /set lastlog_level, same thing.
* Implement /window notify_name for %{1}F, for howl (irssi-like status notify)
* Add support for ircnet's "unique id" nicknames from epic4
* Fix $winline() from epic4.
* Fix /who -d[iagnose] from epic4.
* Remove limits on timer refnames.
* Add $mktime() from howl.
* Nix /save and pray nobody notices.
* Implement pmatch_* stuff in alias.c to use the unified symbol table.
* Commands, functions, and expandos now 100% integrated.  HUZZAH!
* Reimplement $get(set|command|function)s() to use the pmatch_* stuff.
* So they now pick up changes at runtime. HUZZAH!
* Allow built in /set to be conditionally added to the "set bucket"
* Don't put user-created /set's in the bucket
* Allow user to replace one user-created /sets but not builtin sets.
* Allow mangling of ALT_CHAR -- how did this ever get missed?
* Fix $currchans() so it works the way the documentation says it does.
* Fix some const correctness issues, introduce others. bleh.
* Fix typo that caused /set -create twice to crash and burn.
* Fix memory leak, rb CE.
* Fix $getset() which is supposed to be case insensitive (typo), rb Xavier
* Make the work buffer for %F and %{1}F much bigger (2k, was 80 bytes)
* Avoid NULL deref on brok^H^H^H^Hempty numeric replies
* Fix aliasctl(): values returned by pmatch_* are not to be freed. (rb ce)
* Better handling of damaged /who x,y responses from some servers.
* Make $function() call builtin, and $:function() call alias
* I need to make sure to add an /xdebug to make $function() call alias!
* Nix calls to dcc_connected(<fd>, 0) which were always bogus.
* Create print_arglist() for printing alias arglists, natch.
* Fix crash from /queue -del <name> <num> for <num> = <items> + 1 (rb black)
* Show arglist when creating and listing aliases.
* Fix memory leaks of buckets when user grabs /on set.
* Add a "alternate names" bucket to server data.
* Create a whole new api for querying and creating server refnums.
* Fix crash with /dump on (/dump all)
* Add $serverctl(GET|SET <refnum> ALTNAME) get and set server alternate desigs
* Add $serverctl(GET|SET <refnum> ALTNAMES) get and set entire list.
* Fix memory leak with /on set
* Fix memory leak with /timer
* Fix $server*() functions, when passed no arguments.
* Add /msg -<server>/<target> thingee, i really need to document this.
* Add /window toplines <N>, reserve N lines as nonscrollable on top of window
* Add /window topline <N> "<str>" change the Nth topline to <str>
* You can have 1 to 9 toplines.
* Don't allow /window toplines to be a negative number!
* Fix dcc compile error with --without-ipv6
* Add $windowctl(GET ref TOPLINE num) and $windowctl(GET ref TOPLINES)
* Revert changes to 1.59 of alias.c, which leaked accidentally.
* Add -L and -S command line options (ce)
* Reset "from_server" after every window operation
* If /window doesn't change current_window, revert from_server to orig value
* If /window changes current_window, reset from_server to cur_win->serv;
* Altered the dcc_lost hook to return strerr() info.
* Fixed $aliasctl(* match [mask]) to return only aliases and assigns.
* Add %{3}W which is like %W but it's active for all input windows.
* Support efnet's +e and +I numeric replies.
* Add a bunch of stuff to debug the who_queue to find and fix adm's bug.
* Remove a debugging line i forgot about.
* Fix memory leak with remove_from_comma_list().
* Add $winquery(), written by howl
* Add $hookctl(), written by howl, who needs to write an UPDATES entry.
* Rolled /disconnect and /reconnect into the same code.
* This allows /reconnect to use an optional servernum argument.
* Changed "/server -a" to leave the new or selected server as the current
  server, which is the historical behaviour.
* The server_established hook is now thrown in the context of that server.
* Fixed a missing comma bug in remove_from_comma_list().
* Fix ALL/ALL_OFF thing from epic4.
* Fix $logctl() from epic4.
* Fix bug with % followed by \ in wildcard patterns from epic4.
* Fix a compile error when doing password protection (bug 12) (from epic4)
* When creating the 'epic' symlink, use a relative path for jm. (bug 9) (epic4)
* Allow package to be set when overwriting existing alias with no package.
* Add arglists to hooks (by howl, who I will pester to document this). Woot!
* Finish $hookctl(), by howl.
* After connect()ing to a server, save the remote peername
* This fixes $serverctl(GET <num> PORT)
* This also fixes $servports(), which should work as (not) documented.
* Fix for notify_signon default handler, from larne. thanks!
* Add $serverctl(GET <num> ADDRFAMILY), returns "ipv4", "ipv6" or "unix"
* Allow /hostname <ipv4>/<ipv6>, separately set v4/v6 vhosts! (see UPDATES)
* Don't always panic if a fd isn't ready, it might have been new_close()d.
* New internal function set_mask_by_winref() allows changing window's level.
* Make /xdebug regex_debug outputs privileged yell()s, just for sanity.
* Change /set new_server_lastlog_level to take effect on 001 (see UPDATES)
* 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
* Fix bug that brought up all servers at once.
* Fix /window topline so it doesn't chop/wrap-off last word.
* Fix misleading error message if /exec -direct fails.
* Add $logctl(CURRENT), refnum of the current logfile, -1 if none.
* 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.
* Fix add_to_screen() so /query nick catches /dcc chat nick. (rb adm)
* Fix /away -all which sends a bogus string to the server. (rb rain)
* Fix /dump. doh.
* Add $symbolctl().  See UPDATES.
* Fix auto-completion bogosity with $symbolctl().
