packages icon
   $Id: README,v 1.15 1998/10/20 21:34:26 vons Exp $


DESCRIPTION

   This is version 1.3 of 'vrl', a library that allows
   an application to read a line from the terminal, giving the user
   additional editing capabilities like cursor movement, filename
   completion and command history.

   It is a kind of a lightweight version of the GNU readline library,
   having the necessary functions but smaller and faster (like Rick Salz'
   editline library). It has been developed to work with the rc-shell,
   but may be useful for other things as well.

   Compared to editline, vrl lacks a number of editing cmds (the ones
   I never use :-), but adds the following:

    - the cmdline will scroll if it is longer than the screen is wide.
    - automatically lists all possible completions when given prefix
      is ambiguous.
    - history mgmnt has a no-dups mode (see manpage).
    - A .vrlrc allows the user to configure the auto-complete,
      history mgmnt, ... behavior.
    - knows about terminal's home/end/insert/delete keys

   For more information, see the vrl(1) manpage.

COPYRIGHT

   Vrl is copyright (C)1996-1998 by Gert-Jan Vons <vons@usa.net>.
   You can re-use this code if you want, as long as you give me credit.


BUILDING INSTRUCTIONS

   Vrl has been written using ANSI-C, but will compile with older non-ANSI
   compilers as well.

   Vrl should work fine on most UNIX systems, it is regularly tested
   on current FreeBSD, Linux, Solaris, and OpenBSD releases.

   Compilation is simple: run the configure script and type make.

	Gert-Jan

E-MAIL
	vons@usa.net

DEBUGGING

   Compiling with -DDEBUG will include assert()'s, verbose msgs, and some
   additional debugging code.

--------------------------------------------------------------------------
KNOWN PROBLEMS

- UnixWare 2.1.2 Terminal/xterm: first line of output of a started program
  seems to miss characters (i.e. the first line of an 'ls' is not ok). This
  is caused by a bug in their xterm which eats all space characters after
  receiving the keypad disable code, up to and including the first non-space.
  It works ok with TERM=xterm (the UnixWare xterm termcap entry no longer
  has the ks/ke entries), but fails with TERM=vt100 or when using an rlogin
  to another system (where xterm does have ks/ke).

--------------------------------------------------------------------------
CURRENT VERSION: 1.3

1.3  1998/10/20
    - bugfix: a crashing pthread application under FreeBSD 2.2.6 leaves
      the tty in non-blocking mode, resulting in EAGAIN on a read() in
      vrl, which caused the shell to die. Vrl now forces the tty to back
      to blocking I/O if needed.
    - bugfix: although doc says 1024 bytes should do for a termcap buffer,
      sometimes more is needed. Buffer size doubled.
    - bugfix: ospeed could overflow for high tty speeds.
    - added rltest.c to distrib.
    - Improved comments.

1.2  1998/07/20
    - changed library name from readline.a to libvrl.a

1.1  1998/02/15
    - fixed (from <broman@nosc.mil>): RANLIB was not correctly defined
      in Makefile.
    - fixed/changed (from <broman@nosc.mil>): ^D is now bound to the
      delete-char function, instead of acting like a return. A ^D on
      an empty line indicates EOF, provided that the last char typed
      just before was not a ^D.
    - fixed: vrl leaked memory during a filename completion that didn't
      match anything.
    - fixed: manpage mentioned tilde-expansion, but that isn't implemented.
    - added: ESC-? lists possible matches (like ESC-ESC)
    - added: ESC-* now puts _all_ matches on the cmdline
    - changed: "*.c[TAB]" will no longer match "config.cache", i.e. if
      the (last part of) the expression already contains a wildcard, it
      should match the whole filename and not just be a prefix of it.
    - changed: timeout for multi-byte keys/commands increased from 0.5
      to 1 second.
 
1.0  1998/01/04
    - changed: the backspace key was dead on ttys where it generated the
      code '\177' (e.g. vt220). Was the consequence of having '\177' bound
      to the delete-char function and thus not allowing it to be redefined,
      causing the tty's backspace key to remain un-bound.  Removed this
      association, delete-char function will be bound to tty's DEL key
      (and ^D). However, some termcap entries lack the DEL key entry.
      If it is missing, and \177 is not generated by another key, assume
      there is a DEL key after all, and that it generates '\177'.
    - configure: added lookup of lint program
    - configure: also look at curses lib for termcap stuff
    - configure: termcap var test now accesses variables, only linking
      using tgoto() was not enough.

0.92 1997/06/26
    - bugfix: MIN()/MAX() macros conflicted with system includes.
      Removed them, they were no longer used anyway.
    - updated configure.in for autoconf 2.12.
    - removed the BROKEN_TIOCGWINSZ test from configure.in, simply include
      the TIOCGWINSZ if it exists on the system. If it doesn't work at
      runtime, we'll deal with it then.
    - EINVAL from TIOCGWINSZ is now ignored. It happens all the time
      on a UnixWare console, where EINVAL means that the ioctl() is not
      supported by the tty driver (it does work in a Terminal/xterm window
      however).
    - change: VWERASE, VREPRINT, and VLNEXT are not available on all Unix
      systems (like SCO OpenServer, ...), they are now only included if
      they exist.
    - UnixWare cc doesn't like "cc -c foo.c -o foo.o"; removed all the 
      "-o foo.o" from the makefile, hoping it doesn't break on other systems.

0.91 1996/10/02
    - bugfix: rc specifies a NULL-ptr when it doesn't want a prompt,
      which caused a core-dump.

0.9  1996/10/02
    - bugfix: filename completion didn't work on dead symlinks (was bug
      in wildexp()).

0.8  1996/09/01
    - Removed msg about setting tty size under solaris. Problem only
      occurs when running Solaris 1.x binaries under Solaris 2.5, a
      native Solaris 2.5 binary will fix the problem (looks like
      a solaris bug though...)
    - Fixed problem when the screen was incorrectly updated when
      moving from a long to a short line in the cmd history.
    - integrated update of wildexp(), corrects bug where a symlink
      to a directory was treated as a file by the completion code,
      i.e. a space was added to it instead of a DIRSEP.
      

0.7  1996/08/07
    - fix: Under Solaris 2.5, the TIOCGWINSZ ioctl() apparently fails
      if the tty width/height are not correctly set with stty ?!?!?
      Anyway, vrl didn't handle this correctly, causing the shell to hang.
    - fix: version display looked bad when it overwrote a long line/prompt,
	   added a clr2eol()
    - replaced glob() with wildexp()

0.6  1996/05/22
    - use STDOUT_FILENO for tty writes
    - fix: error msgs no longer mess up the cmdline
    - fix: errors when parsing .vrlrc were detected, but the msgs
      were never generated
    - fix: ESC-ESC and ESC-v were missing from manpage

0.5  1996/05/20
    - fix: cursor-key type-ahead failed on vt100
    - fix: configure didn't test for memmove()
    - ESC-v will display version
    - lint fixes

0.4  1996/05/17
    - filename completion failed when curdir had only one file.
    - after completion, cursor position was not optimal if there already
      was a space after the expression.
    - some error msgs lacked the trailing \n.
    - added ^T (transpose chars).
    - added ^O (re-read the $HOME/.vrlrc file).
    - lot of improvements to screen update, prompt now stays in place.
    - ospeed takes Bxxx, not the actual value.
    - sigwinch was broken (include file was missing)
    - stayed up too late, the pushback in sym.c requires a lifo, not a fifo.
    - added ansicursorkeys option to enable type-ahead of cursor keys on
      some terminals (xterm, vt100, ...).
    - completed manpage

0.3  1996/05/13
    - tested on Sun, fixed number of lint-style warnings all over the place
    - added CC=@CC@ and CFLAGS=@CFLAGS@ to Makefile.in. latter defaults
      to -O if not set in env.
    - cleaned up history search stuff
    - configure tested for strerror(), but util.c didn't contain it
    - added test for strstr() to configure, and the code to util.c

0.2  1996/05/12
    - added code behind rl_reset_terminal().
    - SIGWINCH is now handled (and passed to the application just
      before readline() returns).
    - fixed some problems in the filename completion.
    - started work on manpage.
    - When completing or using word-delete, the word no longer
      ends at the cursor.
    - various other fixes.

0.1  1996/05/10
    - Initial revision. It works, doesn't crash, but the todo list
      is still quite long...