$Id: ChangeLog,v 1.274 2009/04/07 15:41:21 kretch Exp $

2.2.2
	2.1.12 included a patch that breaks opaque resizing for some
	   versions of ncurses on solaris.  Reverting to the original
	   behavior for now and will reincorporate in a future release.

2.2.1
	Fix some strcpy's that could be vulnerable
	Remove an unused function
	Fix stderr redirector, now creating admin messages

2.2.0
	Workaround to libzephyr on unnoticed zephyrs
	With smartnarrow and zpunt, include .d suffix and ^un prefix as
   	   part of the allowed regex for the relevant class or instance
	Cleanup of lots of bad sprintf usage

2.1.12
	Don't crash on mobile device AIM messages [BZ 20]
	Don't crash when sending to someone not on AIM buddy list [BZ 94]
	Fix overflow vulerability in zwrite.c and zcrypt.c
	Add stack protector and -D_FORTIFY_SOURCE=2 where possible
      	Fix hang [barnowl 4c46dfdebc294ca24fef59924f01688b8ee07dee]
	Fix segfault on missing subs [barnowl 99dabeed7de6d19acb50f1e73aa0bfe5f9469c02]
	Fix zcrypt bufffer size bug [barnowl 559076cd86edc3a8317819814dd5877b8bc7c3cb]
	Fix double free [barnowl e97c4a306ae2c9d2147d83da29fee59918198e70]
	Memory leak fix [barnowl c0a90c2c7ab97b9465c9873757faf312faa0021e]
	Memory leak fix [barnowl 95caa16b2e9ba10770d87d0955198c14c2d0e16a]
	Memory leak fix [barnowl 1716fed8c2650e46892cf6571555eac937266c6e]
	Add getstyle command [barnowl 216c73421653e3ef0e957aa9a9804e208a77c80e]
	Binary search for msgid [barnowl 0c8ab5eadbb6ecc97a120c91b9a824b33538c764]
	File-handle leak [barnowl e78397d6ac5da0de31a4e269c0ba7f3d691857a3]
	Fix delay in jump from top to bottom [barnowl 801b7ac63b962640debbcfd422cb9a60da5fea31]
	Load subs in chunks [barnowl 93e883d60051b80bf6d35391f9d76fd7dfd198e3]
	Load subs in chunks [barnowl f6050ee9b0a171a5031f84409eb181062afacd18]
	Better zsig logging [barnowl d857b667a5a9b108b1a2a26b4a5513bef2b53f80]
	free() -> owlfree() [barnowl d524c838ac7c115628424b8ac171c3489622ea3a]
	Escape AIM users in smartfilters [barnowl af9b92e3e7ccb7de276a94b5c7e5861b24e71eff]
	Better regex escape chars [barnowl 80e54a7631f091be8c9762adb9746bad38104738]
	Deal with quotes in smart filters [barnowl 4099cf83702763fa8d1efc4f1582a605431bdb77]
	Deal with 0 length zephyr fields [barnowl 128171aaf7cefa91a4bb1eada93a19d8fd0c355c]
	Deal with 0 length zephyr fields [barnowl 50e29e35c64d64e223d378d350a7bc4f038d78f5]
	Deal with 0 length zephyr fields [barnowl 804ab8af8b6d00bcd7e2402df892db8fbd61a3ec]
	Leave curmsg on screen after resize [barnowl c0f9e3009bc03e80a44de64cd5f2b4033290236e]
	Rip out brower stuff [barnowl 8e5935d11c699a7ce5a3e6e9a47799564c696d6a]
	Rip out browser stuff [barnowl 4f15e8e9ceada0d4b2cc969ebf43b0a1fb3709ea]
	No passwords in command history [barnowl 6e400cc71aa59e041dce677aadf50dc1f25228e2]
	Format NOC mssages [barnowl a1bb1980e4bca23b8329cc0e7c0bd5027055ea0a]
	Expand ~ in loadsubs [barnowl 27d8d835dc6d58c08fae10e75aae306c49215143]
	Expand ~ in source [barnowl 10d67d57cb29221f63a43a30643c697fc7b38911]
	Only use resizeterm() if it's available
	Debian backports
	Change license to GPLv3
	general sprintf cleanup

2.1.11
	Don't crash doing zlocate with bad tickets. [BZ 12]
	Metion the path for the owlconf in intro.txt [BZ 54]
	Print better error message if startup fails due to unreadable
	   .owlconf [BZ 57]
	In load-subs: Print an error message if the file is unreadable or
	  doesn't exist, UNLESS load-subs is called with no arguments.  In
	  that case only print an error if the file exists but isn't
	  readable.  Still prints an error either way if zephyr reports a
	  failure. [BZ 19]
	Fixed some small memory leaks in logging if files unwriteable
	If the variable logfilter is set it names a filter.  Any messages
	  matching this filter are logged.  This is an independent
	  mechanism from the other logging variables.  If you want to
	  control all logging with logfilter the other variables must be
	  set to their default (off) settings. [BZ 37]
	Relatively substantial changes made under the hood to support
	  filter logging.  Now have more consistent interfaces to
	  creating messages etc.  Still needs more work though.
	Deal gracefully with being resized as small as 1x1 [BZ 3]

2.1.10
	Fix a new problem finding libdes425
	Don't crash on very long hostnames [BZ 52]
	In 'sub' command, create .zephyr.subs if it doesn't exist [BZ 15]
	A fix for certain resize crashes (partly from alexmv) [BZ 55]
	Turn off ISTRIP (gildea)
	
2.1.9
	Include /usr/include/kerberosIV if it's found
	
2.1.8
	Do OLC formatting for anything coming from olc.matisse
	Improvements to popup size algorithm (from gildea)
	Improved 'show colors' with non-colored labels
	
2.1.7
	The colorclass command is added, to make colorization easy
	Handle MIT Athena OLC zephyrs correctly
	Updated ktools website / bug address
	Do ntohs() when printing zephyr port in zephyr info
	Updated man page
	
2.1.6
        Fixed three bugs found by Valgrind.
        Fixed a case where doing "aim addbuddy" instead of "addbuddy aim"
	  would cause a segfault.
	pexec will now incrimentally display data as it is output
	  by the child process.  Additionally, commands running under
	  pexec may now be killed by quitting out of the popless window.
	Added muxevents select loop dispatcher.  File descriptors may
	  be registered with muxevents and handlers will be dispatched
	  to when data is available for non-blocking read/write/except.
	Switched the stderr_redir stuff to use muxevents.
	Print C-\ correctly (from gildea)
	Dropped first brace in muxevents functions for consistency
	Catch SIGHUP and SIGTERM and do a proper logout
	
2.1.5
	Added a licence
	The 'personalbell' variable can now be set to 'on' 'off' or
	  the name of a filter to match against
	The 'loglogins' variable now controls whether login/logout
	  messages are logged.  It is off by default.  For now this
	  affects only AIM messages, later zephyr login/logout messages
	  will also be logged if this is set to 'on'
	Added 'show license'
	
2.1.4
	Normalize and downcase AIM names for logging
	Fixed a bug where sending a null zsig could cause a crash
	Better 'away' toggling if only one protocol is away.

2.1.3
	Added perl filter elements.  Similar to having "filter <subfilter>"
	  in a filter, you may also have "perl <functionname>"
	  where <functionname> is passed an owl::Message object and
	  returns 0 or 1 depending on whether the message matches
	  that element of the filter.
	Don't print an error about loading subs if there is no
	  .zephyr.subs
	Do the initial zephyr_buddy_check when pseduologin set to true.
	Updated man page
	
2.1.2
	removed unused filter_depth variable
	Fixed memory bug on receiving pings
	
2.1.1
	Filters of filters now work.
	Removed the "possibly not readable" part of the config parsing
  	  error
	In the sepbar, reverse video the view name when it's not set to
	  view_home (as opposed to the static 'all').
	The '!' key (bound to 'view -r') now creates a negative version of
	  the current view and switches to it.  i.e. "show me all the
	  messages that are not these"
	Added the 'ignorelogins' variable
	Log when outgoing personal message fails
	Removed file descriptor from sigpipe catcher printer just for now,
	  since the field does not exist on OSX
	Added an ifndef for socklen_t in libfaim/ft.c
	Added the 'aim search' command.  The popup on callback may be
	  dangerous, should switch to an admin msg for results, or add a
	  new event queue
	First pass at AIM away messages.  It is a little different from
	  what most clients seem to do, in that an away reply is sent for
	  each message received.  Most clients only reply to the first one
	  per away-session.
	Now have a set of 'aaway' commands and variables just like the
	  'zaway' ones (except that changing the 'aaway' variable talks to
	  the server)
	The new 'away' command does everything for both AIM *and* zephyr.
	  There is a known funkiness here, where if you turn one away on,
	  and then use 'away' (or 'A') to toggle, you will turn on off and
	  the other on.  Just leaving it for now.  Should do better in the
	  next patch.
	The 'A' key is bound to 'away'
	Status bar can now read AWAY, Z-AWAY or A-AWAY.
	Changed C-n to scroll down just a line in popless
	If the config exists but is not readable, print an error before
	  exiting
	Only print forced AIM logout message once.
	Don't bind F1 to help in edit context
	Fix bug in 'getsubs' with no tickets
	New code for getting users from .anyfile
	Added the 'pseudologins' variable, and code to do it
	new attributes 'pseudo' 'logintty' and 'loginhost'
	Don't print extra new lines in popless_file
	New zephyr_get_field function
	
2.0.14
	Fixed missing word in startup message
	Better 'status' command
	Use '+' for popwin corners when 'fancylines' is off
	Allow TERMINFO to be overridden in the envrionment
	Command line arg -D turns on debugging and deletes previous
	  debugging file
	Do ~ expansion in 'dump' command.
	Current directory added to 'status' command
	Massive changes to libfaim and aim
	
2.0.13
	Changed startup message for new mailing list
	blist now prints AIM info even if .anyone is unreadable
	Catch SIGPIPE and print an error rather than crashing.
	        [It's possible that this may have some portability 
		issues under Solaris and we may need to add some 
		configure stuff around SA_SIGINFO...]
	Handle the case in aim_bstream_send where aim_send returns -1,
	        although there is likely an underlying problem here
		that would lead to this case.
	Print the username on aim login failure, not something random like
	        the password.  ;)
	Un-word-wrap text when sending AIM messages.
	Replace the main loop continue in the keyboard handler with an else.
	
2.0.12
	Command history now doesn't allow the last entry
	   to be repeated
	If format_msg returns "" print "<unformatted message>"
	Better align oneline admin and loopback messages
	Print an admin message indicating when subscriptions can
	   not be loaded on startup
	Set aim_ignorelogin_timer to 15 by default
	Admin message on login/logout of AIM
	Fixed double quoting in smartzpunt
	Added timestamp to login/logout messages
	Fixed replies to loopback messages
	Fixed smartnarrow on classes/instances with spaces
	Added the 'loggingdirection' variable
	All loopback messages log to 'loopback' now
	Print an error message if trying an invalid color for a filter
	Fixed bug causing > not to go to end of editwin every time
	
2.0.11
	Updated basic help
	Display CC: in outgoing CC messages
	More AIM logout detection
	Don't proclaim "interfaces changed" on first build.
	Added the 'loopback' message type
	Added the 'loopwrite' command
	Added a timestamp to the default style
	Zpunt now works with weird regex characters
	Smart filters now work with weird regex characters
	
2.0.10
	Allow 'hostname' in filters.
	Fixed bug in reporting when no one is subbed to a class
	Added an extral newline in logging incoming zephyrs
	An admin message is displayed when you are logged out of AIM
	Print an error message and admin message if an AIM send fails
	
2.0.9
	Added the 'fancylines' variable.
	Added the 'show startup' command.
	Added feature for capturing stderr messages
	   from commands and displaying them in the errors buffer.
	Create an admin message explaning that a zephyr couldn't
	   be sent
	Better reporting of perl errors (both into the errqueue
	        and also clearing the error after displaying it).
	Allow default_style to be specified in config.
	Added errqueue
	Added command "show errors"
	Fixed bug removing newlines in backup files
	
2.0.8
	Increased size of screen name field in buddy listing
	Fixed bug with idle times causing broken pipes.
	New libfaim
	Added the 'source' command.
        Make sure that a newline is always at the end of messages
	        returned by perl style formatting functions.
	Add owl::login and owl::auth to legacy variables populated for format_msg.
	Additions to intro.txt and advanced.txt documents.  (Still in progress.)
	Add base methods for login_host and login_tty 
	        and others that return undef.
	New API for perl message formatting functions.  
		Legacy variables are still supported for owl::format_msg
	        and owl::receive_msg, but these functions are now also 
	        passed an owl::Message object which contains methods
	        for accessing the contents of the message.  See perlwrap.pm 
		(and docs TBD) for the available methods.
		*** WARNING:  The exact API for owl::Message has
		*** not yet stabilized.
	Added "style" command for creating new styles.
	        Usage:  style <name> perl <function_name>
	Added support for "show styles".  Changed global style table
	        from list to dictionary.
	Changed AIM password prompt from "Password:" to "AIM Password:".
	Messages are reformatted after a window resize to allow styles
	        to take into account the width of the window.
	When perl throws an error, the message is put in the msgwin
	        if possible.
	Added perl functions for:	
	        owl::getcurmsg() -- returns an owl::Message object for
		                    the active message
		                    in the current view.
	        owl::getnumcols() -- returns the column width of the window
		owl::zephyr_getrealm() -- returns the zephyr realm
	        owl::zephyr_getsender() -- returns the zephyr sender
	Made owl::COMMAND("foo"); be syntactic sugar for 
	        owl::command("COMMAND foo");
	Added perlwrap.pm to contain perl code to be compiled into 
	        the binary.  This is transformed into perlwrap.c by
		encapsulate.pl.
	Renamed readconfig.c to perlconfig.c and changed variables accordingly.
	Minor bugfixes in cmd.c and commands.c
	Improved intro doc

2.0.7
	Idletimes now appear in the buddylisting
	Failed AIM logins are now correctly reported
	Owl will build now without zephyr, enabling it to act as a
	  standalone AIM client.
	There is now a zcrypt command
	Replies to zcrypted messages now work
	Don't allow zwrite if zephyr isn't present
	Cleaned up some warnings from linux gcc.
	Fixed bug that can cause response stuff to crash
	Improved status command
	Fixed bug in buddy stuff
	
2.0.6
	aimlogin will now accept the screenname without a password and ask
	   for the password such that it is not echo'd to the terminal
	'addbuddy aim' and 'delbuddy aim' now work
	Bug fix to make zwrite -m work with -c/-i
	Fixed documentation bug in aimwrite
	Initialze $owl::auth
	Fix in autoconf for des425
	Reformatted editwin.c and added capability of doing password-style
	   echoing
	
2.0.5
	Fix in finding des for building zcrypt
	Fixed description for alert_action variable
	More detailed usage from -h
	Special cased replies for webzephyr users on classes and
	  login notifications for webzephyr users
	Fixed bug that caused a crash on zpunt with '*' for an instance
	AIM logout and then login now works.
	Fixed bug causing view -d not to work.
	Added hostname and tty name to LOGIN/LOGOUT zephyrs on oneline
	  style
	
2.0.4
	Made command line option -n actually work
	Implemented styles, including the 'default' 'basic' and 'oneline'
	  styles.  A 'perl' style is available if a format_msg() function
	  is found in .owlconf
	Added the 'default_style' variable
	Added the 'toggle-oneline' command
	The 'o' key is bound to 'toggle-oneline'
	Internally, the one view now has a name, 'main', and message
	  recalcuations are done in place when its filter is changed.
	Added filter field 'login' which can take the values 'login'
	   'logout' or 'none'
	Added the perl variable $owl::login, just as above
	Updated the 'login' and 'trash' filters appropriately
	Fix for checking for DES in build system
	Bug fix in using makemsg when no curses window is present
	The variable $owl::auth now exists in perl
	Use new internal function to delete zephyr subs from file
	New 'sepbar_disable' variable can turn off sepbar info display
	Updated contributor info
	Added the 'show view' command
	Bug fix in owl_regex
	Fixed personal aim messages logging to class directory
	Log "LOGIN" or "LOGOUT" for AIM buddy messages
	zwrite -m now correctly displays an outgoing message and logs
	zwrite -s now works
	Strip spaces in AIM usernames on aimwrite send
	Removed libfaim/config.log from CVS
	Fixed some easy fixed-length buffers
	Wordwrap incoming AIM messages
	Fixed bug causing buddies not to be added to buddy list during
	  ingorelogin timer
	Translate &lt; &gt; &amp; &quot; &nbsp; &ensp, &emsp, &endash and
	   &emdash
	
2.0.3
	Don't ring the terminal bell on mail messages.
	Nuke <FONT>
	Make the build work a little better on OSX
	Fixed a bug in fmtext
	Expanded the size of the hostname buffer
	
2.0.2
	Fixed bug in 'startup' command.

2.0.1
	Moved newmsgproc stuff to a function procedure
	Added the 'newlinestrip' variable, on by default, that strips
	  leading and trailing newlines from incoming messages.
	Fixed a case sensitivity probelm in owl_message_is_personal and
	   owl_message_is_private
	The message object now uses a list of attributes internally, in
  	  prep. for supporting new messaging protocols
	owl_function_info now uses fmtext instead of one staticly sized
	  buffer
	in owl_message_get_cc() require that the colon be present after
	  cc.
	Added some defenses against resize crashes, and put in debug
	  messages if they're encountered
	In filters 'true' and 'false' are now valid tokens.
	The 'all' filter has been redefinied to be 'true' and there is a
	  'none' filter defined as 'false'
	Fixed bug in 'unsub' command that could cause file corruption
	In the zlist function, give a more detailed error message if
	  the file cannot be opened.
	Renamed old instances of zsig_exec in the code to zsigproc
	Don't print the stderr from zsigproc
	Added a 'loadloginsubs' command to load login subscriptions from a
	  file
	Added a 'loadsubs' command to eventually phase out the 'load-subs'
	  command
	Made M-n work on classes and instances with spaces in them
	Zaway now obeys the smart strip variable
	Hacked the build system to not have the -E link problem on Athena
	Added ZResetAuthentication in a number of places to fix problems
	  with stale tickets
	Added some hooks for malloc debugging
	M-p is bound to 'view personal' by default
	loadsubs and loadloginsubs only print messages if in interactive
	  mode
	added the 'alert_filter' variable, defaults to 'none'.
	added the 'alert_action' variable, which is an owl command that
	  will be executed when new messages arive that match the
	  alert_filter
	added the 'term' command which takes the 'raise' and 'deiconify'
	  options.  It assumes xterm for now.
	only 'make distclean' will nuke core and ~ files now
	fixes to owl_function_do_newmsgproc from Stephen
	converted functions.c to new code style, which I'm giving a shot
	Makefile.in: define DATADIR, for default owlconf.
	Makefile.in: provide "all" and "install" rules.
	configure.in: try also libdes and libkrb4, for people using heimdal
	configure.in: see if des_ecb_encrypt is already prototyped.
	configure.in: minor changes to work with new autoconf without needing acconfig.h.
        configure.in: find the install program.
	configure.in: test for use_default_colors since some versions of
	  solaris don't have it, so we can at least compile something
	  vaguely working there.
	keypress.c: ifdefs for keys not defined on at least some solarises.
	owl.c: don't call use_default_colors if we don't have it
	readconfig.c: added *commented out* code to try to find a
	  system-default owlconf if the user doesn't have one.  Have to
	  ponder if I want this
	zcrypt.c: don't prototype des_ecb_encrypt if there is a prototype in
	  des.h.
	zcrypt.c: include owl.h so we get the configure-generated config.h
	Change to codelist.pl to deal with new code style
	Remove some ancient stuff from zcrypt.c
	General cleanup to Makefile.in
	CTRL and META are now OWL_CTRL and OWL_META.  OWL_CTRL moved to
	  keypress.c
	do_encrypt declaired static
	if we don't have des functions, do not try to build in zcrypt
	kill the newmsgproc function on exit
	Added libfaim
	Added basic AIM support, including the "aimlogin", "aimwrite" and
	   "aimlogout" commands
	New built-in filters 'aim' and 'zephyr'.
	Do ZResetAuthentication() before zlog_in and zlog_out as well.
	Print AIM login / logout notifications
	The 'alist' command prints a list of aim buddies logged in
	The 'blist' command prints users from all protocols
	The 'l' key is now bound to 'blist' instead of 'zlist'
	Started work on 'addbuddy' and 'delbuddy' command but they DO NOT
	  WORK yet
	Removed a bit of faim code that allowed commands to be executed.
	The 'B' key is now bound to 'alist'
	Added the 'startup' and 'unstartup' commands
	The $HOME/.owl directory is created on startup if it does not exist
	Added the 'aim_ingorelogin_timer' variable
	'addbuddy zephyr <user>' and 'delbuddy zephyr <user>' now work.
	'isloginout' and 'isprivate' are now message attributes
	improved 'info' function lists seperate info for zephyr, aim and
	   also prints all message attributes
	AIM logging (both in and out) now works
	Disabled 'addbuddy' and 'delbuddy' for aim since it doesn't work yet
	Hacked the Perl build stuff not to link with iconv
	
1.2.8
	Class pings are displayed differently now
	Updated owlconf.simple example to format outgoing messages.
	
1.2.7
	Outgoing messages now go through the config for formatting
	Zaway now makes an outgoing message, instead of an admin message
	The 'zlocate' command can now handle multiple users
	The simple user format for "To:" is in effect again
	Prettyed up the zwrite line for using 'reply' on a zaway
	Added a workaround for a libzephyr bug that caused zwrites to fail
  	  if zephyrs were sent just before and just after renewing tickets
	Fixed a memory bug in getsubs
	Added receive support for zcrypt messages
	Added the 'zcrypt' variable which controls whether or not zcrypt
  	  messages are decrypted
	'reply' is disabled for zcrypt until sending zcrypt works
	Started implementing zcrypt command
	More updates to the intro doc
	
1.2.6
	Started adding code for newmsgproc.  It doesn't fully work yet!
	  Don't use it.
	Added search, '/' and '?' to basic help.
	Will attempt to keep the current message as close as possible
	     to the previous current message after an expunge.
	"set <variable>" and "unset <variable>" now work for boolean variables.
	Fixed a bug in owl_function_calculate_topmsg_normal that caused a
	  segfault
	Fixed some typos in the intro doc
	Removed old zlog functions from zephyr.c
	Implemented the dump command
	New startup message
	
1.2.5
	Patch to fix memory bug in replying to CC messages
	If we're on Athena and have static krb (or other) libraries, use
	  them
	Added "athstatic" program to the release, which handles the above
	Cast to an int for isspace, to make gcc -Wall quiet
	Added 'zlist' and 'l' to basic help.
	
1.2.4
	'zlog in' will now take an optional thrid argument to set the
	     'tty' variable before setting the zlocation
	There is now a 'zlist' command that acts like 'znol -l'
	'l' is bound to 'zlist'
	Fixed memory leak uninitialzed memory read in fmtext
	viewwin will now say "End" instead of "More" when at the end
	Added a debugging message indicating the result of topmsg
	  calculations
	You can now use %me% in filters
	The built-in personal filter is updated to do so
	Fixed a bug in moving the pointer after an expunge
	Fixed up the normal scrolling code.  Now it should always
	  land on a message, but it's still not optimal.
	Added the variable 'smartstrip' which will strip kerberos
	  instances out for the 'reply' command.
	Added -R/usr/athena/lib to the build for Athena
	Started updating the intro document
	Small changes to help / about
	The 'subscribe' and 'unsubscribe' commands (and their aliases) now
	  update .zephyr.subs by default.  If either is given the '-t'
	  (for "temporary") option the .zephyr.subs will not be updated
	Turned off beeping for hitting the top or bottom of the list of
	  messages
	Made daemon.webzephyr a special case for smartstrip
	Added 'out' as a default filter for outgoing messages
	
1.2.3
	Added filters "ping", "auto" and "login" by default.
	Added "body" as a valid field to match on in a filter.
	Temporary fix to bug where C-SPACE would cause the key handler to
	     lock up.
	Messages now have a direciton (in, out or none).  Filters can
	     match on this direction
	Outbound messages are no longer type 'admin' but are of the
	     appropriate message type (i.e. 'zephyr') and are direction
	     'out'.
	Smartnarrow now works on outgoing messages
	'info' updated to show more information for admin and outgoing
	     messages
	Renamed pretty_sender to short_zuser and renamed long_sender to
             long_zuser
	Moved zsig generation to the zwrite object
	Print the zsig used for outgoing messages
	The tty variable now controls the zephyr location tty name
	
1.2.2
	Added the 'search' command.
	'/' is a keybinding for 'search'
	'?' is a keybinding for 'search -r'
	Fixed stristr, which was completely broken
	renamed owl_fmtext_ztext_stylestrip to owl_function_ztext_styletsrip
	     and put it in functions.c
	Attempts to stay near the current message when switching views.
	     When switching from an empty view to one we've previously
	     been in, the new current message position will attempt
	     to be close to the current position from the last 
	     time we visited that view.
	Fixed bug in readconfig.c that prevented building under perl 5.005.
	Switched "C-x C-x" to only "startcommand quit"
	'getsubs' prints closer to the order you sub in.
	Modified the behavior of last so that "> >" will clear the screen.
	The new behavior of last is:
	      Moves the pointer to the last message in the view.
	      If we are already at the last message in the view,
	      blanks the screen and moves just past the end of the view
	      so that new messages will appear starting at the top
	      of the screen.
	Fixed a typo in the help for smartzpunt.
	Fixed functions to handle curmsg being past the end of the view.

1.2.1
        New framework for command handling.
        New framework for keymap handling.
        Added commands for everything that is bound 
             to a key (do 'show commands' to get the full list).
        Added 'multi' and '(' commands to allow multiple commands
             to be specified on a line.              
        Added user keybindings with bindkey command.
        Added command aliases (eg, "alias foo bar").
        Added undelete command that parallels the delete command.
        Added additional options to delete command.
        The reply command now takes arguments.
        Added 'edit:insert-text' command.
        Added 'show zpunts' to show active punt filters.
        Added 'show variable <name>' and 'show variables'.
        Added 'show command <name>' and 'show commands'.
        Added 'show keymap <name>' and 'show keymaps'.
        Added 'M-u' to undelete all messages in current view.
        Fixed dotsend so that the zephyr will still send if there
             is whitespace after the dot but not on the same line.
             This should resolve an issue where dotsend wouldn't work
             if you'd gone up and edited a zephyr.
	Bug in page down fixed
	C-t will transpose characters
        Fix the scrolling bug where we would sometimes fail to scroll
             the screen down, leaving the current message off 
             the bottom of the screen.
        Refixed 'login or login' typo in help
        Fixed M-u description
        Removed 'first' and 'last' from basic command help
        Added M-N to basic key help
        Added M-D, M-u to basic key help
        Fixed a quoting problem in configure.in
        Changed top of help to use 'show' instead of M-x
        Fixed a bug in the summary field for user-created aliases
        Added "reply zaway" which sends a zaway response to the current msg.
        Added "edit:delete-prev-word" command and bound M-BACKSPACE to it.
	Some buffer overruns fixed
        Variables now have a summary and a long description.
                Only the summary is shown with help.
                The long description is shown with "show variable foo".
        Added a 'scrollmode' variable which determines how the screen
             will scroll as the cursor moves.  The default behaves
             identically to previous versions of owl.
             The following modes are supported:
             normal      - This is the owl default.  Scrolling happens
                           when it needs to, and an attempt is made to
                           keep the current message roughly near
                           the middle of the screen.  (default)
             top         - The current message will always be the
                           the top message displayed.
             neartop     - The current message will be one down
                           from the top message displayed,
                           where possible.
             center      - An attempt is made to keep the current
                           message near the center of the screen.
             paged       - The top message displayed only changes
                           when user moves the cursor to the top
                           or bottom of the screen.  When it moves,
                           the screen will be paged up or down and
                           the cursor will be near the top or
                           the bottom.
             pagedcenter - The top message displayed only changes
                           when user moves the cursor to the top
                           or bottom of the screen.  When it moves,
                           the screen will be paged up or down and
                           the cursor will be near the center.
        Added owl_sprintf which returns the formatted string, or NULL.
                The caller must free this string.
                This will allocate enough memory and thus 
                avoid potential some buffer overrun situations.
        Simple implementation of 'zwrite -m' (doesn't yet log an outgoing
                message as having been sent.)
        The "Not logged in or subscribing to messages" error 
                now includes the name of the recipient.
        The "disable-ctrl-d" variable may also be set to "middle"
                which will result in ctrl-d only sending at the 
                end of the message.  This is now the default.
                This also added a command "editmulti:done-or-delete".
        Fixed a bug in the "reply -e" command.
        Always clear the command buffer before executing the command.
                (So that interactive commands can sanely do start-command.)
        Fixed preservation of e->dotsend across owl_editwin_clear().
        Added history for multiline edit windows (eg, for zephyr composition).
                The M-n and M-p keys will cycle through the history ring.
                In particular, it is now possible to edit the command line
                of a zephyr being composed:  C-c it and restart it 
                and then M-p to get the aborted composition back.
        Added owl::send_zwrite(command, message) to the perl glue
                to allow for the direct sending of multi-line messages.
                For example:  owl::send_zwrite("-c foo -i bar", "hello"); 
        Changed owl_fmtext_print_plain to return an alloc'd string to 
                avoid buffer overrun risks.
        Added owl::ztext_stylestrip("...") function to perlglue 
                 which returns the ztext with formatting stripped out.
        Added colorztext variable which can be used to disable @color()
                 strings arriving in messages after it is set.
                 (Currently, changing its value won't reformat messages).
        Outgoing zephyr logging now obeys the logpath variable.
        The '~' character in logpath and classlogpath now gets
                 replaced with the user's home directory.
        Added simple implementation of smartnarrow-to-admin that
                 creates a "type-admin" autofilter.
                 This was done mostly so that M-C-n and M-C-p do something
                 sane on admin messages.
        Added opera to the allowed options to the webbrowser variable.
        Fixed some buffer overruns in the "reply" command.
        When repying to "all" on a message that begins with "CC:" (eg, sent 
                 with "zwrite -C", the reply line will be constructed
                 from the sender and the usernames on the CC: line
                 of the message being replied to.
        There is no such thing as C-R, so left C-r as it is but added:
                 M-r --- edit reply to all
                 M-R --- edit reply to sender
        Added RCS Id strings to all files.
        'show keymaps' shows details of all keymaps after summary list.
        Added --no-move option to delete command.
                In particular, delete-and-always-move-down may now
                be implemented with 
                '( delete --no-move ; next --skip-deleted )'.
        Folded the nextmsg and prevmsg commands and functions together into 
                one command which takes arguments.
                Added '--filter <name>' option (eg, for next_personal),
                '--skip-deleted' option, and
                '--last-if-none'/'--first-if-none' options.
                Help updated accordingly.  
                In particular, the 'personal' filter is now used 
                for 'next personal'.  
	        Added --smart-filter and --smart-filter-instance options 
                to the next and prev commands.
        Updated examples/owlconf.erik with the above.
        Made owl_function_fast*filt return a string and not do the 
                narrowing, to make it more general.
        Added a smartfilter command that creates a filter
                based on the current message and returns the name
                of the filter.
        Added M-C-n and M-C-p keybindings to "move to next message 
                matching current" and "move to previous message 
                matching current"
        Added variables edit:maxfillcols and edit:maxwrapcols which 
                will limit how wide editing paragraphs may get before
                they get wrapped.  This is a max and may be narrower
                depending on the current size of the window.
                If 0, the max is unlimited.  Default is 70 columns for
                edit:maxfillcols and unlimited for edit:maxwrapcols.
        Added smartzpunt command with key binding of "C-x k".
                This starts a zpunt command filled in with 
                the proposed zpunt.
        Fixed a memory reference bug in delete and undelete commands.
        Added support for perl to call directly back into owl.
        Changed the implementation of owl::command("...") to immediately
                call back into owl.  This allows perl to get the return
                value of strings returned by owl commands.
        Added the getview command which returns the name of the current 
                view's filter.  
        Added the getvar command which returns the value of a variable.
        Added an example to examples/owlconf.erik which uses TAB to 
                narrow and restore the view.  
        Added an example to examples/owlconf.erik which uses M-c to 
                color messages matching the current one green.
        Integrated change to fix problem with popup blinking on new zephyrs.
        C-l and resizes will now refresh an open viewwin (eg, help).
        Updated doc/code.txt to include info about filters, commands,
                contexts, and keybindings.
        Exec commands cleaned up to not have buffer-size limitations
                and to not mess up spaces.  exec also returns a string
                of the output now.
        Integrated changes from 1.1.3, and added docs for "zlocate -d"
                and new show commands.
        Show with arguments produces help on show.
        Fix a bug in readconfig caught by efence (where we'd try to read before 
                the beginning of a string if it was empty).
        The perl command doesn't do makemsg directly, but instead
             returns the string and it will get printed if it 
             was run interactively.
	
1.1.3
	'show subs' and 'show subscriptions' are now the same as 'getsubs'
	zlocate now takes an optional -d argument
	'show terminal' / 'show term'
	'>' / last doesn't set the last message at the top of the screen now
	implemented _followlast as an unsupported feature
	include 'default' in the 'show colors' list
	added help for 'zpunt' and 'zunpunt'
	changed the bug address in the startup message
	can now do 'show status'
	can now do 'show version'
	'status' / 'show status' includes the owl version number now
	'show terminal' includes whether the terminal can change colors
	fixed off by one bugs in paging / scrolling viewwin
	don't downcase the sender when getting the log name for personals
	support @owl::fields as well as @fields
	downcase class/inst filter names in auto filters

1.1.2
	Fixed memory mishandling bug
	Fixed bug in redfining the filter attached to the current view
	M-n will narrow to message, instance on non-personal, class
	     MESSAGE messages
	M-N behavies like M-n except that on class messages it narrows
	    to class and instance
	line wrap earlier, to account for tabbing
	fixed typo in help
	'status' command now displays info on terminal color support
	zephyr @ formatting is now case independant
	added support for color terminals
	zephyr @color(foo) now works
	'D' for deleted messages is now not bold, unless it's the current
  	  message
	F1 displays the help screen
	added filter colors
	added the 'colorview' command
	added the 'show colors' command
	users who don't have a .zephyr.subs get a simpler format for
  	  incoming messages
        If colors are available 'show filters' will show a filter in the
	  color associated with it.
	Added the zpunt and zunpunt commands
	Lines in the subs file starting with '-' are zpunted
	Include login/logout messages in auto user filters
	'V' changes to the home view ('all' by default)
	
1.1.1
	Fixed perl, aperl, and pperl commands to deal with quoting 
	      and spaces in a saner manner.
	Removed all owl_get_* methods for booleans and switched
	      cases where they were used to owl_is_* 
	Changes to owlconf.erik to use some new features.
	Increased the size of the help buffer (as it 
	      was overflowing and truncating the help message).
	Variables prefixed with a _ are not shown in help
	      or by printallvars (and prefixed Not Yet Implemented 
	      variables with this).
	Fix typo in help
	include stdio.h in functions.c
	remove stale "q to quit" from bottom of info message
	fix downward scrolling more than a page
	use authentication for zlocate, by default
	fixed buffer over run in info command on long messages
	call 'perl <file>' from Makefile to avoid hardcoding perl paths
	in Makefile don't build owl_prototypes.h unless necessary
	store the time for admin messages
	display admin message time in 'info' command
	fixed an editwin M-> last character bug
		
1.1
	reply is a normal function now
	'R' does reply to sender
	'T' tells you how many messages were marked for deletion
	local realm removed from login / logout messages
	added command history
	better runtime / starttime reporting in 'status' command
	leave the pointer near the current message after expunge
	C-l recenters editwin
	implemented zlocate
	@italic works the same as @i
	on reply only quote class / instance when necessary
	C-r allows you to edit the reply line
	don't use unecessary options in reply line
	display 'info' errors in msgwin, not popup
	impelemnted aexec, pexec commands
	the zsig now goes through ztext formatting
	messages have id numbers now
	'info' prints the msgid
	added the 'filter' command
	added the 'view' command
	added the 'show filter' command
	added the 'viewclass' (and 'vc') commands
	added the 'viewuser' (and 'vu') commands
	M-n will filter to the current class or user
	'v' starts a view command
	M-D will delete all messages in current view
	added the 'delete' (and 'del') command
	load-subs with no argument loads the default subs file
	'<truncated>' is now when the *current* message is truncated
	the reply-lockout filter (with default) specifices messages that
           cannot be replied to.
	in the configfile owl::receive_msg is run whenever a message is
	  received
	added the beep command
	added the contributors file
	declare ZGetSubscriptions and ZGetLocations since the includes
          don't seem to
	fixed bug in displaying last line in popwin if no final '\n'
	'T' uses the 'trash' filter now
	zaway_msg, zaway_msg_default and zaway are all user variables now.
	zsig variable overrides zsigproc
	If there's no appendtosepbar don't interfear with the sepbar
	Changed: owl_message_get_numlines will return 0 of m is NULL
	Added login messages to messages marked by owl_function_delete_automsgs
	Added owl_function_delete_by_id(id) which acts independent of view
	Added "-id <id>" option to delete command
	Fixed an arg checking bug in delete command
	Added owl::id to perl namespace with message id
	Fixed a memory corruption bug in readconfig.c (where right 
	      after the strdup to "out", we'd strcat a \n onto the end.
	      This would be triggered whenever owl::format_msg returned
	      a string not ending in a newline
	Added 'X' keybinding which expunges and then switches to 
	      a view defined by the variable "view_home" which defaults 
	      to "all"
	Consolidated readconfig.c somewhat to remove duplication.
	      owl_config_execute now returns a string.
	Added an example config file that does vt-style formatting.
	      (examples/owlconf.vtformat)
	Added the 'perl', 'aperl', and 'pperl' commands which will
	      evaluate perl expressions.
        Fixed bug where pclose zsigproc would cause zombies
	Can set zsigproc or zsig to "" to disable
	Added support for multiple browsers (galeon and none were added).
	      Configure with the "webbrowser" variable.
	Changing typewinsize height triggers resize event.
	Added zsig variable which will be used if no zsigproc and non-empty.
	Added "make test" rule to Makefile which will run regression tests,
	      and added regression testing framework to tester
	Fixed codelist.pl to ignore static declarations.
	Added dict.c which contains string->ptr dictionary routines
	      and the owl_dict type.
	      These include regression tests.
	Overhaul/rewrite of variable handling.  Variables are now managed
	      in an owl_vardict (in g.vars) which contains a dictionary
	      of owl_variable's.  Each owl_variable has dispatch functions
	      for validating values, setting it and getting it,
	      and for setting it to and from string values.
	      The variable.c file contains the list of variables.
	      Stubs for the owl_global_<varname>_get functions and friends
	      are generated from variable.c by stubgen.pl.
	      The help.c messages for variables now calls into variable.c
	      so all information about most variables is in one place.   
	Cleaned out code from global.c and command.c that was made obselete
	      by variable overhaul.
	The set command now takes a -q option to not log a message.
	Fixed a bug where set and print with no arguments would
	      print "Undefined variable" in addition 
	      to running owl_function_printallvars.
	debug is now a variable that can be turned on and off.
	Fixed mail,inbox message parsing in examples/owlconf.erik
	Made zaway_msg and zaway_msg_default into variables 
	Changed owl_function_makemsg and owl_function_debugmsg 
	       to use varargs (ie, so they can now take a format
	       string with args).
	Don't allow " and \ characters in URLs with the "w" command.
	Removed lots of build warnings.
	Popwins are wider by default so help messages fit better.
	Added an atokenize_free function.
        Fixes to work with an older version of libzephyr.
	Added dependencies on header files to Makefile.in
	Added pageup and pagedown key bindings to message list
	Added pageup and pagedown to viewwin
	Added configfile section to doc/intro.txt (from example config file)
	Added appendtosepbar variable which may contain text which will
	      be appended to the sepbar.  This allows the configfile
	      to put information about pings and logins into
	      the sepbar.  (It may be worth also providing a variable
	      which enables this by default, but for now this allows
	      for experimenting with what works well.)
	Added doc/code.txt which gives a brief overview of the code.
	Added tags makefile rule and added TAGS to distclean rule.
	
1.0.1
	fix frees in loadsubs and loadloginsubs
	don't return in owl_free
	
1.0
	'print' and 'set' with no arguments prints all variables
	Added the 'unsubscribe' and 'unsub' command
	Renamed the 'unsub' command to 'unsuball'
	Added the 'getsubs' command which is like zctl ret
	Fixed bug in logging messages sent to more than one recipient
	Support '-C', '-O', and '-n' options to zwrite
	Fixed bug in owl_editwin_delete_char when there are no later chars
	  after the cursor
	Make "more" and "truncated" work in the status bar
	enable printing of zsigproc and loginsubs variables
	only allow message scrolling if the message is actually off the
	  screen
	'T' will mark all automated message for deletion
	'P' will go to the next personal message
	'M-P' will go to the previous personal message
	replying to a login message goes to the user now
	added a status command
	added the intro doc to the release
	fixed off by one bug in viewwin
	added complete online help
	pass $owl::realm in configfile
	fixed editwin wordwrapping on the last line
	fixed editwin problem with key_right past the last char
	print an error and quit if the configfile can't be parsed
	got rid of owl_mainwin_calculate_topmsg
	fixed off by one error in calculating topmsg upwards
	you can now reply to an admin message
	don't display an error about keypress on window resize
	
0.11
	fixed bug in viewing messages longer than the screen
	indicate in the sepbar if there is a non zero vert offset
	send on '.' on a line by itself
	added disable-ctrl-d variable
	fixed bug where C-k did not delete the last \n in the buffer
	make non-character meta keys work
	use ZSendNotice instead of ZSendList
	implemented <, >, M-< and M-> in viewwin
	removed the spaces at the bottom of viewwin
	added 'about' command
	fixed bug using 'M' with no current message
	changed message object to use char *'s to save on memory
	change malloc, realloc, strdup and free to use owl hooks so that
	   debugging can be added
		
0.10.1
	fixed a trailing space bug in the parser
	impelemented the "burning ears" feature
	have admin messages do ztext parsing
	fixed bug in reporting which M- key was pressed
	C-g will now cancel commands like C-c
	
0.10
	implemented owl_function_full_redisplay().
	C-l uses owl_function_full_redisplay().
	when a popwin exists to a full redisplay.  (fixes bug)
	improved the owl_editwin_process_char logic
	removed all unnecessary wrefresh's and replaced with wnoutrefesh
	owl_editwin_redisplay now takes an argument to optionally doupdate()
	improved the cut-and-paste speed by not doing a usleep the first
	  time through the loop after getting a keypress.
	nuked typwin.c and associated stuff.  It's useless now.
	added viewwin code for paging windows
	curly braces work for zephyr formatting
	@i in zephyr formatting will be displayed as underlined text
	turned off idlok
	implemented viewwin
	implemented viewwi in popwin for pageable popwins
	help, info now use pageable popwins
	bound 'M' to bring the current message up in a popwin
	return, space bar, 'b' and backspace now scroll within a message
	turned off resize message
	C-v and M-v page the main window
	implemented owl_message_is_mail
	some build cleanup

	
0.9
	added owl_message_is_personal and have things use it
	added owl_message_is_private
	fixed 'print personalbell' and have 'set personalbell'
	   print a message
	bold only on message_is_personal
	display the realm if not local
	implemented M-f, M-b, M-d, M-<, M-> in editwin
	implemnted word wrapping in editwin
	implemented M-q (paragraph-fill) in editwin
	fixed bug that caused owl to segfault logging a 'weird' class
	M-x is a keysym for ':'
	added smart bolding and userclue
	fixed a bug causing pings to beep even if rxping is off
	
0.8.1
	fixed bug in logging code
	
0.8
	implemented personal logging
	implemented class logging
	implemented resize of typewin
	fixed the backspace problem
	-v command line option prints the version number
	
0.7
	load-subs will report error opening file
	skip comment lines in loadsubs and loadloginsubs
	changed internal references to rxping and txping
	fix replying to a blank instance
	added subscribe command
	subscribe to login messages from .anyone by default
	'loginsubs' variarble controlls automated login messages
	redisplay the editwin after a resize
	leave the cursor in the editwin if active
	fix problems in the build system
	added displayoutgoing variable
	temporarily removed error printing for zlog in / out
	
0.61
	fixed bug in "message sent to <foo>" for zwrite
	
0.6
	help updated
	zaway key set to caps A
	support zephyring other realms
	rxping variable for receiving pings
	txping variable for sending pings
	function in place to resize typwin
	C-l to refresh
	personal bell variable
	beta message now an admin message
	
0.5
	Added the debug command and flag
	Fixed bug in printing fields in info command
	Added owl_fmtext_append_ztext and use it
	Better formating for pings and login zephyrs
	make tester depends on proto
