EPIC5 Projects, Bugs, and other Errata:

KNOWN ERRATA (eg, bugs, or unresolved requests):
------------------------------------------------
<none>

ISSUES OF INTEREST
------------------
* Document the wikihelp for lastlog with stuff like -context.
* Re-implement /set cmdchars
* You should be able to /msg @logfile
* You should be able to move lastlog items between windows, split, merge.
* Shattah would like something like /window omit <regex> to remove stuff.
* Rewrite the input prompt to use a linked list instead of a C string.
* There should be a SWITCH_TARGET keybinding
* I would like to be able to /load zip files and put them into LOAD_PATH.
* Normalize 'proto', 'type', and 'addrfamily' values with server stuff.
* Undernet's CPRIVMSG and CNOTICE allow chanops to msg members w/o penalty
* You can't move a window to a different screen atomically (you must hide it)
* Howl wants a temporary hold mode that expires when you reach bottom.
* Everybody wants utf8 support -- but who will volunteer to help me?
* There should be something internally that detects pastes.
* What about pastes with "rogue characters" like  (alt-3, ie, ^[3) ?
* The way dcc filenames are handled is bad; you should be able to seamlessly
  rewrite filenames both outbound and inbound.  URL encoding should auto-detect
* There should be an /on send_encrypted_msg, /on send_encrypted_public, etc.
* IRCII supports "default" fg/bg colors, which looks intriguing.
* Larne would like to use 256-color-support for xterm.
  ^[[48;5;<color>m   <color> = 16 + (red * 36) + (green * 6) + blue
* Larne would like a ==== indicator that appears at his last scrollback point.
* Larne wants suppression of duplicated lines (like syslog maybe?)
* Remove all the hardcoded uses of select() so it isn't mandatory.
* Zlonix wants a way to be notified when window geometry changes
* Jm would like an /xdebug inbound type facility for dcc raw connections.
* Jm thinks regex support for /switch would be nice.
* How about base85 support for $xform() ?
* Zlonix would like per-screen toplines
* Output rules
* Pegasus wants a way to send italics (^I)
* Kreca mentions that word manip functions strip extraneous spaces.
* If @ var = [encode] you should be able to do $($var)(args) to call it.
* Krisp wants a log that only logs what is not logged somewhere else.
* UPnP support (http://miniupnp.free.fr) would fix dcc-behind-firewall dilema.
* <twincest> hop: i would like a function that erases the last 10 lines of the
  +display and replaces them with the output of /lastlog 10
  <twincest> (obviously, for any number, not just 10 ;-)
  <twincest> since i use lastlog_rewrite to timestamp the log, that would allow
  +me to insert timestamps without duplicating text
  <twincest> also, i would like a way to temporarily disable window updates
  <twincest> so i can do /window upate off; /lastlog; /window update on
  <twincest> and it outputs the lastlog without me having to wait for the entire
  +thing to be drawn
  <twincest> it would just appear in the scrollback

[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:
-------------------------------------
* Change 'wserv4' to 'epic5-wserv4' to avoid conflicting with epic4.
* Fix output of /disconnect when disconnected to be less confusing.
* Some changes to tabkey.jm to see if we can get it working.
* Move some functions out of input.c to better places.
* Fix normalization bug via $stripcrap(all ^C0@^Otest) (from kitambi)
* Fix denormalization bug via $leftpc(9 ^C0@^Otest) (from kitambi)
* Make the activity script use its own /package.
* Enhance prntdump() to convert unprintable chars to hex.
* Change /set -word_break so it pretends you set it to " \t" (rb kitambi)
* Add socks5p.h from epic4 so we can build with socks5 again.
* Remember, it's ./configure --with-socks5=/usr/local/lib
* Make update_input() take a screen as an argument, to update one screen only.
* Make /window create screen's input lines work again (rb kitambi)
* Fix crash from /parsekey type_text
* Add ^Vs to the start of  DEFAULT_STATUS_FORMAT* in config.h
* Comment out code for /set reverse_status_line pending removal later.
* GC the code for -f/-F/-o/-O command line arguments
* Fix the serverctl() comment for howl
* Change /say (or the empty command) to send to channel first, query second
* Add $dccctl(SET|GET ref WANT_PORT) to set the -p flag.
* Change tabkey.jm to use /msg -serv/nick instead of /msg serv:nick
* Add dccctl(DEFAULT_PORT <string>) [see UPDATES]
* Add /on dcc_lost case for cant-bind-port [see UPDATES]
* Add 'dcc_ports' script [see UPDATES]
* Add mask_to_(positive|negative)_str to convert masks to shorter strings
* So now mask_to_str() returns strings like "ALL -DCC" if it's shorter!
* Fix a couple of bugs rb zlonix
* When doing /stack pop set ... the callback (if any) should be invoked.
* Add a server param to what_channel() so i can use it in send_text() later.
* Add length of 'meta' arg to ciphers so 'meta' doesn't have to be c string
* Fix highlight script so it pf-loads
* Add the ** unary operator -- double expand.  See UPDATES
* Comment what I'm going to mangle xform into.
* Fix happykey().  Sometimes, I just don't pay enough attention.
* Don't trim 1 too many chars on incoming encrypted messages. Important!
* Fix buffer sizes being too small to hold buffer for enc/dec short strings.
* Add $xform() handlers for blowfish and cast5
* Whip the $xform() callback functions into usable shape.
* Fix base64 encoding both via $xform() and $b64encode().
* Rewrite $xform(), see UPDATES.  Strong crypto now supported! YAY!
* Allow encryption $xform() handlers to reformat their keys, so we can...
* Add SHA256/AES/AESSHA $xform() encoders
* Fix it so it compiles without ssl support again.
* Add "ALL" $xform() encoder, returns all valid xforms
* Fix infinite recursion if you load a script as a formats file.
* Release epic5-0.3.4 (Solicitude) (1480)
* Fix bug that kept implied on hooks from working (important fix!)
* Add new level SYSERR (see UPDATES)
* Add a server refnum to syserr() to send the syserr to the proper window.
* Add a server refnum to new_open() so we can pass it to syserr().
* Add new flag to /XECHO, /XECHO -AS (output to all windows on server)
* This should make syserrs go to the "correct window" most of the time (larne)
* Fix hookctl(set list ... implied {...}) to work as intended (rb zlonix)
* Add $windowctl(GET refnum CHANNELS) (rb Black)
* Eliminate u_* type bsd-isms so we can compile with -ansi on linux.
* Add /lastlog -rewrite (see UPDATES)
* Add /set lastlog_rewrite as a special favor for larne.
* Fix a bug with /lastlog (in previous commit)
* Add dyanmic support for $xform()s, which I'll be using very soon.
* Fix configure so --with-threaded-stdout pulls in -pthread
* Include some commented out code that I'm ruminating over for input line
* Create CURSOR_LEFT and CURSOR_RIGHT macros to avoid assigning LOGICAL_CURSOR
* Default xforms now don't need to be ordered, or have default refnums.
* Fix BACKWARD_WORD or PREVIOUS_WORD or whatever it's called.
* Add /SET DEFAULT_REALNAME and DEFAULT_USERNAME
* Add scripted /set realname and /ircuser in builtins for backwards compat.
* Don't want to regfree() a failed attempt to regcomp(). (rb larne)
* Add $serverctl(get -1 default_realname) and $serverctl(get -1 realname).
* Change $Y to reflect current realname for current server.
* Add $xform(iconv fromcode/tocode ...) wrapper around iconv (3).
* Add support for ./configure --localdir
* Add support for ./configure --with-iconv=/usr/local
* Add support for looking for iconv in configure in various places
* Make configure check for nanosleep().
* Add function decls for [sg]et_server_realname()
* New version of screen.e
* Change "filename" to "local_filename" in dcc's, in prep of further work.
* Un-revert a few minor things.
* Don't use NULL in configure; use 0 instead.
* Fix missing NULL for $hookctl(list ...) [rb howl]
* Fix various other issues that valgrind found (yay!)
* Commit a 'url.irc' script that I don't know where it came from...
* Apparantly solaris 9 doesn't have <stdint.h>, intmax_t, or strtoimax. ick.
* Begin "fixing" protected implied hooks.  Must test above examples.
* The sequence we delete stuff on shutdown actually does matter.  (Fix crash)
* OK.  The implied hook, and protected implied hook stuff works now
* Make a note in UPDATES about *0 being an rval instead of lval, and *(*0).
* Begin a refactoring of dcc to make my life easier
* Simplify register_dcc_offer(), removing unnecessary args.
* Also, register_dcc_offer() will only take url-encoded filenames now.
* Fix up the ctcp handler do_ctcp to urlencode offered filenames.
* Change the DCC_FILE* macros to DCC_SEND and DCC_GET to stop confusing me
* Add a "offer_filename" variable to dcc's for next round of work
* GC some unused code
* Break dcc_message_transmit() into dcc_raw_transmit() and dcc_chat_transmit()
* Drastically simplify those two functions
* Fix up dcc_raw_transmit() so the hostname isn't required
* This means /dcc raw <fd> <host> <msg> ignores <host>. yay!
* Add $is8bit(). See UPDATES.
* Change $tobase(). Now $tobase(b i) should support negative integers (i).
* Revert commit 1498 (the dcc stuff) -- it was half baked.
* Fix warnings found with --with-warns.
* The dot (".") and tilde ("~") are unreserved characters in rfc3986 (urlencode)
* Fix panic when you call :func() and there is a builtin, but no alias.
* Add new status expando %{1}H which expands when in hold mode and not holding.
* Add /set status_holdmode which controls %{1}H
* Add %{1}H to the default status format.
* Add split_string() which converts a general delimited string to (char **)
* Add $splitw(delim string) which converts delimited string into a dword list
* Use $unsplit() to convert $splitw() into a uword list (see UPDATES)
* Fix ./configure --without-ipv6 to allow compiling on opensewer.
* Fix apparantly bogus test that prevented .files from being /load'ed (rb wjr)
* Release epic5-0.3.5 (Alacrity) (1509)
* Create aliases for [url|b64][en|de]code, sedcrypt, and sha256 into builtins.
* Comment out builtin [url|b64][en|de]code, sedcrypt, sha256 builtin functions.
* Change /xquote -u to use xform() instead of urldecode().
* Change dcc_url[en|de]code to use xform() instead of urldecode().
* Change /on ssl_server_cert to use xform() isntead of urldecode().
* This allows me to comment out old urldcode/base64decode stuff. yay!
* Add a "rejects" variable to str_to_mask()
* Make str_to_mask() shut up.  Callers should handle error output
* Create a standard_level_warning() handler callers can use.
* Make the consumers of str_to_mask() handle their own error messages. yay!
* Refactor all lastlog stuff to use a global lastlog buffer.  Yay!
* Comment out per-window lastlog stuff.
* Add a bunch of functions to move lastlog items between windows.
* No way for the user to use them yet (still thinking about it)
* Add $windowctl(NEW) and $windowctl(NEW_HIDE)...
* New versions of builtins, dump, and history from black
* Fixed builtins to not return spaces at end of $xform() functions.
* Fixed commented out lines in commandqueues for backward compatibility.
* FINALLY cleaned up code in data_array.
* Added some /assign handling functions to data_struct.
* Fixed $chhops(), $nochhops(), $chvoices() $chnovoices() in script/functions.
* Changed tabkey.ce to _also_ complete from notify list by default.
* Changed tabkey.ce to complete recursed commands without a leading slash.
* Updated $shift() and $pop() with multiple args to work with dword but left it
  #ifdef'd out as per UDPATES.  Also updated regress/funcs to test these.
* Added current package to end of $loadinfo().
* Changed /reconnect to jump to the next server in the address list if possible.
* If epic crashes and /xdebug crash is set, sleep and wait for a debugger.
* Change /on listings so they tell you if a hook is "disabled".
* Add forgotten code to move lastlog items between windows for /window number
* Fix bug where default numeric output wouldn't go to a channel's window.
* Remove a superfluous message_from() when parsing server stuff.
* Add /lastlog -window for fusion.
* New version of /load dump from black.
* Add support for libarchive to configure
* Everything below is from fusion (Alexander Grotewohl)
* If libarchive is present, support zip/tar files in /load and $open() 
* Create a new "epic load file" data type that wraps FILE or libarchive.
* Extend uzfopen() to use the new "epic load file" data type.
* Extend the loader to honor the new "epic load file" data type
* Extend $open() [read only for now] to honor the epic load file data type
* Not all operations are supported on zip files.
* Add new function $fix_width() returns string with a guaranteed printable len
* End of things contributed by fusion (Alexander Grotewohl)
* Change builtins script so it doesn't /xecho -w for who replies.
* Fix typos in dcc_ports
* New version of tabkey.ce from fudd.
* Make /dcc list output go to level OTHER by special request of kreca.
* Fix build (rb zlonix)
* $info(o) now includes 'r' for libarchive, and 'x' for iconv support
* Unconditinally unset GREP_OPTIONS in configure (rb Pegasus)
* Fix /oper password being shown because term_echo() not called. (rb wjr)
* Properly handle multiple spaces between protocol tokens (rb Krisp)
* Fix crash with standard_warning_level() when you do /window level nonsense.
* Support /input "prompt" (args) {code}. See UPDATES. (rb kreca) (fusion)
* Fix $write(w[number] anything) crash (rb ce)
* Add a new internal function prepare_display2() a reduced version of p_d().
* Add a new internal function fix_string_width(), the guts of $fix_string()
* Fix /set indent to use prepare_display2(). Now you can use ^C codes. yay!
* Fix fd leak if fork() fails for /exec.
* Fix window toplines so they extend the width of the screen like statusbars.
* Make /xecho -w -1 go to the current window, for compat with epic4 (rb Black)
* Make the /server list show the vhost you're using.
* /LOADing an executable file results in a warning and not an error.
* Fix input line so it doesn't display hidden contents after ^L (rb wjr)
* Add a $strptime() function, but I still need a strptime() compat version.
* Add $ignorectl(SUSPEND) and $ignorectl(UNSUSPEND) to turn off ignores.
* Fix new math parser comparison operators to work properly with numbers.
* Add function $check_code(), looks for unmatched parens or braces in string.
* Add the /window command as $2 in /on window_command
* Release EPIC5-0.3.6 (Lugubrious) (commit 1531)
* Fix remote crash -- you really want to update right away.
* Put 'sig.inc' in include rather than source to fix build for r/o srcdir
* #undef strtoimax() if we are going to define our own to fix build
* Fix printf() qualification for syserr()
* Fix $write(@W<num> ...) so uppercase W works
* Nix strip_control() which isn't used any more.
* Make #define WINDOW_CREATE go away -- it's now mandatory.
* Reorganize do_screens() in prep for future work
* Release EPIC5-0.3.7 (Lacrimation) (commit 1534)
* Fix way too many compile warnings I let go way too long.
* Fixed q1cmd in command queues to address space mangling issues (rb kreca)
* 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 typo in elf.c
* 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 reconnect.
* Added "/userhost -flush", which rms those pending send, not pending recv.
* Extended "/ison -f" to also flush the queue of ISON's waiting to be sent.
* Add /on signal (pegasus)
* Fix build on interix (larne)
* Fix compile warnings and a c99-ism
* Fix another panic() causable by /echo. ugh.
* $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 an apparent typo in getnrolitems in data_array.
* Fixed a bug in autoget where it wasn't actually starting a download.
* Fixed yet another bug in commandqueues involving double quote dequoting.
* This covers for an apparent bug in $shift() which should automatically
  dequote quotes (unfixed).
* Added USER1 - USER10, OPERWALL and SYSERR levels to the ignore system.
* Roll forward portability changes from epic4-2.10 (larne)
* This also includes term.h -> termx.h -- Make sure you rerun configure!
* 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 function forbidden by strict c90. fix (larne)
* Fix some compiler warnings that were lying around.
* There are more changes forthcoming, these were the easy ones.
* Phase two of larne's patch is to isolate features that require job control
* You can #define NO_JOB_CONTROL to turn off fork/exec type stuff.
* Soon, the configure script will auto-grok this.
* Release EPIC5-0.3.8 (Calumny) (commit 1545)
* Fix signal handling for SIG_IGN and SIG_DFL to fix crash for SIGPIPE.
* Added /on window_notified. 
* All of the following is from fusion (alex)
* Input line changes, indicators for text scrolled off the left
* Add /set default_input_indicator_left|right -- see UPDATES
* Add left and right indicator vars to struct screen, using the above
* Revamp update_input() to always display the input prompt
* When you slide off either edge of the input line, it still side scrolls
* There is an "indicator" in the direction of where there is more text.
* Re-indent stuff while here
* Revamp input_move_cursor(), adding a "refresh" arg for physical cursor move
* Check side-scrolling in input_move_cursor() instead of update_input()
* This means moving the cursor w/o using input_move_cursor() is verboten!!
* Revamp the notion of logical/physical cursor; physical cursor is calced now.
* Revamp the keybindings that move the cursor for the new api semantics.
* End of stuff contributed by fusion (alex)
* 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.
* xecho's -all option clobbered the first word after it as if it took params
* Support /ignore nick|#chan ACTION.  How did this get missed?
* Fix make_window_current() to use the main_screen if all else fails.
* Add support for /ignore'ing a server (for undernet)
* Add --without-wserv flag to configure (see UPDATES)
* Add checks in configure for posix-like job control
* Add support so no job control -> no wserv support.
* Release EPIC5-0.3.9 (Contumacy) (commit 1554)
* Redirect $stdout in ruby back to EPIC.echo so ruby warnings display properly
* This is to fix howl's bug: /ruby {EPIC.echo EPIC.expr "S"}
* Add $serverctl(READ_FILE filename) to add servers from a servers file.
* Add some preliminary code for sending a /msg to a logfile.
* Make scrollback_start/end use "scroll up/down 999,999 lines"
* This is for future consolidation of the scrollback code.
* Make /set input_indicator_right functional now (fusion)
* Add stub code for a scrollback indicator in the future (rb twincest)
* Add stub code for a ucs32 input line in the future.
* Reformat all of the /set creation code in vars.c
* Fix problem with ruby startup code running over and over again (howl)
* Add script topicbar
* Fix toplines so they don't sometimes end one column short
* Add function $from(<count> <string>). Returns string from count bytes.
* Add some support in configure for sun's compiler which uses -mt for threads
* Make the status bar redraw after /window discon (nb zlonix)
* New /SET, /SET DCC_CONNECT_TIMEOUT (see UPDATES)
* Add /window scroll_lines, which overrules /set scroll_lines (see updates)
* Don't include <termcap.h> if the system has <term.h>
* And uh, <term.h> sure does have a lot of namespace pollution.
* Change all the symbols in epic which conflict with <term.h>
* This finally fixes intermixed termcap-vs-terminfo support. HUZZAH!
* Add a unique refnum to every scrollback item, for the indicator someday.
* Call function_cparse() directly for protected implied hooks to avoid { issues
* Fix --with-warns compiler warnings and stuff.
* The next_expr() functions can return NULL and must be handled properly
* Remove $from() as it's the same as $rest() (approved by howl)
* EPIC5-0.9.0 was released here (Hyperpyrexia) (commit 1572)
