Release 3/25/05
* vi no longer dies with a segmentation fault if a line does not fit on the
  screen after an insertion.
* The 'p' command now works correctly if the buffer contains a partial line
  with multibyte characters.
* Traditional regular expressions sometimes failed to operate correctly
  since the last release.

Release 2/25/05
* Traditional regular expressions can now be used with multibyte characters.
* When the 'ignorecase' option is toggled, saved regular expressions are now
  updated accordingly. (P)
* If a line began with a tabulator and another tabulator was inserted with
  the cursor located on the first tabulator, the display was not updated
  appropriately since the last release (Bugreport by Matthew Fischer). (P)
* Fixed a segmentation fault that occured in multibyte locales when operation
  was continued after vi had been stopped by ^Z, with the cursor positioned
  in a line longer than the terminal width as the last line of the current
  screen.
* Made multicolumn characters work in lines longer than the screen width in
  visual mode (Bugreport by Matthew Fischer).
* Made it work for Big5 locales (Patches by Matthew Fischer).
* Fixed a problem with the 'r' command in EUC-JP and Big5 locales (Bugreport
  by Matthew Fischer).
* The insertion of multicolumn characters and tab characters in multibyte
  locales now works with terminals that have the 'ic' but no 'im' termcap
  capability (Bugreport by Matthew Fischer).
* The argument to the -w option is correctly recognized now.
* If the SHELL environment variable is set to the empty string, it is now
  ignored.
* A non-null exit status is now returned if a file could not be opened, if
  an invalid address is given for a command, or if a tag is not found.
* If the match for a substitution is of length zero, a line overflow is
  now avoided when compiled with the 'UNIX(R) Regular Expression Library'.
* When moving left while the cursor is positioned over a multicolumn
  character at the end of the line, the bell is rung now (Bugreport by
  Matthew Fischer).
* When moving up or down to a row with different column arrangement while
  the cursor is positioned over a multicolumn character, the leftmost
  character above the original position is chosen in the new row.
* If both the -t and the -c option are given, the -t option is now
  processed first, i.e. the command is executed at the position where
  the tag was found.
* The -w option now also sets the scroll size for the 'z' command.
* When the name of a nonexisting file is given with the 'edit' ex command,
  the command now succeeds and prints a "[New file]" message.
* If standard output is not a terminal, no '\r' is written at the end of
  printed lines anymore.
* The 'source' ex command now works if command input comes from a pipe or
  regular file.
* Ex does not exit on errors immediately anymore if standard input is not
  a terminal but a pipe or regular file.
* The 'substitute' ex command can now be abbreviated as 'sub', 'subst' etc.
* A new version of mapmalloc.c that is derived from Unix 7th Edition code
  has been introduced.
* If the 'next!' ex command is given and the autowrite option is set, the
  current file is not written anymore.

Release 1/19/05
* The last release erroneously made 'X' work like 'x' in visual mode. It now
  deletes the character before the cursor again as documented (Bugreport by
  Matthew Fischer). (P)
* When a multicolumn character was replaced by another multicolumn character
  in insert mode, the display was not updated appropriately with terminals
  other than xterm.
* Various rendering errors happened with multicolumn characters if they
  started at an even column (counting from 1 upwards).
* When a multicolumn character was inserted and then replaced, the visual
  screen representation was sometimes not updated accordingly.
* Undoing the replacement of a multicolumn character by a singlecolumn
  character twice made the singlecolumn character invisible.
* The 'cw' visual command with a multibyte character as last character of
  the affected word located at the end of the line left garbage bytes past
  the end of the new text.
* Visual 'U' followed by 'u' lead to garbage on the screen when multibyte
  characters were present on the changed line.
* The position of '$' when changing text was fixed for cases where the first
  changed character had multiple columns but the last one had not.
* The handling of multicolumn characters was fixed for terminals without the
  IM (insert mode) capability. It is unlikely that such terminals actually
  exist, but vi will use the corresponding code for open mode if a termcap
  entry is not available.
* When an illegal multibyte sequence is entered in vi insert mode, no garbage
  bytes are generated anymore when the insert mode is left.
* The '\u', '\l', '\U', and '\L' substitution sequences work with multibyte
  characters now.
* Handle character case conversions with the '~' vi command correctly if the
  length of the converted multibyte sequence is smaller than the original one.
* Multibyte sequences that correspond to an unprintable character are now
  printed as multiple octal escape sequences.
* Pressing the ^U (kill) character in insert mode with a multibyte character
  at the beginning of an insertion at the start of a line sometimes positioned
  the cursor at weird locations since the last revision.
* Fixed an old vi bug: If a vi command that yanked or deleted part of a line
  was followed by an ex command that also yanked or deleted some text, a
  following 'p' vi command pasted the text affected by the former vi command.
  It now pastes the text of the last yank or delete even if that was an ex
  command.
* Some build fixes for diet libc have been made.

Release 12/2/04
* Support for multibyte character locales was added.
* The code has been converted to ANSI C, and support for pre-POSIX systems has
  been dropped.
* When the end of the current line consists of blank characters and the 'w'
  visual command is given at this point, vi now advances to the start of the
  next line instead of ringing the bell. This is compatible with SVR4 vi and
  seems to be what POSIX specifies.
* If the replacement part of a substitute command consists of a single '%',
  as in ':s/foo/%/', the replacement part of the previous substitution is
  used. This is compatible with SVR4 vi and is specified by POSIX.
* Fixed a number of possible heap overflows, e.g. because of too long tag
  strings.

Release 6/5/04
* Some changes were made to the Makefile to support RPM builds. In particular,
  the meaning of the DESTDIR and PREFIX variables was changed.
* An insufficient size of a variable caused the window size set to 8 on
  FreeBSD if the terminal baud rate was 38400.

Release 1/3/04
* Changes to the included libterm only: Made multiple tc= capabilities in
  a termcap entry work; recognize tc= also if it is not the last capability
  in an entry (Bugreport by Andrew Minter).

Release 9/3/03
* The code did not check st_blksize from stat(2) at other points besides
  the one fixed in the last release.
* The keyboard input character with code 255 ("y in ISO-8859-1) was
  misinterpreted as end-of-file indicator.

Release 8/27/03
* Compile fixes for AIX and HP-UX (Mike Jetzer).
* Delete temporary file when preserving was successful after receiving
  SIGHUP or SIGTERM (Fix taken from 4.3BSD Reno).
* Set MAILRC to /dev/null in expreserve to avoid reading the user's
  mail initialization file.
* Optionally use Caldera's 'UNIX(R) Regular Expression Library' to
  get POSIX.2 compatible REs.
* Don't refuse to quit with 'No write since last change' if a line of a
  newly read input file is too long but no changes were made by the user.
* The POSIX_2 preprocessor define has been removed. The behavior previously
  enabled by this variable is now the default (except as noted below).
* Backslash inside RE bracket expresssions (as in [\]]) is now recognized
  as an escape character by default. This is not POSIX.2 compliant, but is
  compatible with historic vi behavior, is demanded by the some traditional
  standards such as the System V Interface definition, and is compatible
  with vim. To get POSIX.2 compliant behavior here, define NO_BE_BACKSLASH.
* The input buffer did overflow with large values of st_blksize from stat(2).

Release 4/3/02
* Option "showmode" has no effect on hardcopy or glass terminals (P).
* Fixed undo for :r! command.
* Interrupt character is not misinterpreted as DEL on insertion (P).
* Fixed interaction of <count>~ vi command with abbreviations and macros (P).
* Avoid horizontal scrolling of showmode string on wraparound to last line (P).
* No showmode string is printed when executing a macro.
* Recovery listing fixed not to mix characters from long filenames in
  /var/preserve with /var/tmp listing (P).
* Catch SIGXFSZ (file size limit exceeded).

Release 3/3/02
* Separated terse/noterse messages for RE errors (P).
* The expreserve and exrecover commands work again (P).
* Passing beyond EOL in <count>~ vi command is not an error (P).
* Fixed segmentation violation on mdjc'd and related bugs (Sven Mascheck).
* Marks remain on lines changed in an undo operation.
* Close mapmalloc file descriptor for /dev/zero on exec() (P).
* Added -L and -V command line options as in SVr4 ex.
* POSIX.2: Processing EXINIT does not depend on stdin being a terminal.
* POSIX.2: No newline is appended to an empty file in visual mode.
* Fixed segmentation violation on :f^V^M^M and similar commands.
* Mapmalloc extended to allocate and release multiple memory pools.
* Exrecover lists /var/tmp in addition to /var/preserve.
* Have multiple attempts to create named buffer temporary file.
* Size limit for temporary file names removed.

Release 2/17/02
* POSIX.2: Backslash has no special meaning inside RE bracket expressions.
* RE cleanup; make it compile without POSIX_2 defined (P).
* Fixed $(CC) to "$(CC)" for libterm compilation (Felix von Leitner) (P).
* Support for LC_MESSAGES using catgets() added.
* Renamed POSIX define to POSIX_1.
* Renamed UNIX98 define to POSIX_2.
* POSIX.2: Fixed a conflict between -t tag and wrapscan option.
* POSIX.2: Take the initial value for the vi scroll command from scroll var.
* <count>~ vi command fixed to work with repeat and control chars in text (P).
* Fixed recursion on :ab abbreviations (Bugreport by Matthias Kopfermann).
* Fixed undo for :<addr>r command in visual mode.
* Made modelines compatible to SVr4 ex: The option name is "modelines" or
  "ml" now; a space or tab preceeding "ex:" or "vi:" is not required.
* Use O_EXCL and O_NOFOLLOW when creating temporary files, if possible.

Release 1/26/02
* Use mmap() for memory allocation if possible.
* POSIX.2: Added RE interval expressions \{m,n\} (taken from V7 expr).
* POSIX.2: Added backreferences \1 ... \9.
* Print one-character mode strings if both "showmode" and "terse" are set.
* Added the "flash" variable.
* POSIX.2: "~" visual command accepts a count.
* License notices added.

Release 5/21/01
* If compiled using BIT8, all characters except ASCII NUL can now be handled.
* Support larger files if LARGEF is defined.

Release 09/23/00
* POSIX locale support for 8bit character sets is enabled by -DBIT8.
* Regex code is 8bit clean.
* Smaller fixes for SVR4 systems.
* POSIX termios support including job control.
* POSIX sigaction support.
* Check for ELF executables and compressed files.
* Extended the pattern for temporary files from 5 to 10 digits.
* ANSI C stdarg function calling added, Linux/ia64 needs them.
* Reintegrated the UCVISUAL routines from 4.4BSD ex.
* Only use the "ic" termcap sequence if "im" is empty.
* POSIX.2: Command line options added and revised.
* POSIX.2: Added a "showmode" option for novices.
* POSIX.2: Ex respects the environment variables COLUMNS and LINES.
* POSIX.2: Added an "exrc" option like on POSIX.2 ex; arbitrary .exrc
  files are ignored unless it is set in EXINIT or ~/.exrc.
* POSIX.2: If .exrc files are world or group writeable, they are ignored
  unless "sourceany" is set.
* Ex now provides malloc routines. They are necessary since C library
  calls like setlocale could otherwise break the sbrk calls in ex. As
  an additional benefit, linking against ncurses is now possible.

Release 31/05/00
* String extraction using mkstr and xstr is not longer be done.
* An ANSI C preprocessor may be used.
* Changes of symbol names due to collisions on newer systems.
* Fixed a null pointer reference in ex_tty.c.
* Included the 2.11BSD termcap in a subdirectory. Ex could use any
  termcap library, however, that does not use malloc().
* Support of eight bit characters excluding the range 0200 to 0237 is
  enabled with -DISO8859_1. It does not include the regular expression code,
  but otherwise works well in practice with the ISO-8859-1 character set.

Fixes for problems that were introduced in this port are marked (P), unless
they only affect newly introduced parts (such as multibyte support).
