[Readline-specific changelog.  Descriptions of changes to the source are
 found in the bash changelog.]

				    6/9
				    ---
Makefile.in
	- quote value of ${INSTALL_DATA} when passing it to makes in
	  subdirectories

				    7/1
				    ---
Makefile.in
	- don't pass INSTALL_DATA to a make in the `doc' subdirectory; let
	  autoconf set the value itself in the Makefile
	- removed a stray `-' before $(RANLIB) in the `install' recipe

doc/Makefile.in
	- add a VPATH assignment so the documentation is not remade if it's
	  already up-to-date in the distribution

configure.in
	- call AC_SUBST(LOCAL_LDFLAGS), since Makefile.in contains
	  @LOCAL_LDFLAGS@

				    7/9
				    ---

config.h.in
	- add define lines for STRUCT_WINSIZE_IN_SYS_IOCTL and
	  STRUCT_WINSIZE_IN_TERMIOS

configure.in
	- call BASH_STRUCT_WINSIZE to look for the definition of
	  `struct winsize'

				   7/17
				   ----
configure.in
	- call AC_MINIX

config.h.in
	- add define line for AC_MINIX

				   7/18
				   ----
Makefile.in
	- add `install-shared' and `uninstall-shared' targets

				    8/4
				    ---
Makefile.in
	- install and uninstall libhistory.a in the `install' and
	  `uninstall' targets

				    9/4
				    ---
configure.in
	- bumped LIBVERSION up to 2.1.1, indicating that this is patch
	  level 1 to release 2.1


				   9/16
				   ----
Makefile.in
	- `make distclean' now descends into the `examples' subdir

doc/Makefile.in
	- the `distclean' and `maintainer-clean' targets should remove
	  Makefile

examples/Makefile.in
	- added the various clean targets

				    4/2
				    ---
configure.in
	- bumped LIBVERSION up to 2.2

				   4/18
				   ----
[readline-2.2 released]

				   4/20
				   ----
Makefile.in
	- make `libhistory.a' a dependency of `install'
	- fixed a typo in the recipe for `install' that copied libreadline.a
	  to libhistory.old right after installing it

				   4/27
				   ----
doc/Makefile.in
	- install {readline,history}.info out of the source directory if
	  they are not found in the current (build) directory -- only an
	  issue if the libraries are built in a different directory than
	  the source directory

				    5/1
				    ---
support/shobj-conf
	- script from the bash distribution to do shared object and library
	  configuration

shlib/Makefile.in
	- new directory and makefile to handle building shared versions of
	  libreadline and libhistory, controlled by support/shobj-conf

				    5/7
				    ---
doc/Makefile.in
	- set SHELL to /bin/sh, rather than relying on make to be correct

				   5/14
				   ----
savestring.c
	- new file, moved from shell.c, for backwards compatibility

Makefile.in, shlib/Makefile.in
	- make sure savestring.c is compiled and added to libreadline and
	  libhistory

[THERE ARE NO MORE #ifdef SHELL LINES IN THE C SOURCE FILES.]

				   5/15
				   ----
README
	- updated description of shared library creation for the new scheme

[THERE ARE NO MORE #ifdef SHELL LINES IN ANY OF THE SOURCE FILES.]

Makefile.in
	- bumped SHLIB_MAJOR up to 4 since we've augmented the library
	  API
	- rlconf.h is now one of the installed headers, so applications can
	  find out whether things like vi-mode are available in the installed
	  libreadline

				   5/20
				   ----
configure.in
	- changed RL_LIBRARY_VERSION to 4.0 to match the version of the
	  installed shared libraries

				    6/5
				    ---
rlstdc.h
	- new file

Makefile.in
	- rlstdc.h is now one of the installed headers

				    8/3
				    ---
shlib/Makefile.in
	- made the suffix rule that creates xx.so from xx.c write the
	  compiler output to `a.o', which is then mv'd to xx.so, because
	  some compilers (Sun WSpro 4.2, for example) don't allow any
	  suffixes other than `.o' for `cc -c' (not even `a.out')

				   9/15
				   ----

Makefile.in
	- AR and ARFLAGS are now substituted by configure, used in recipes
	  that build the libraries

configure.in
	- use AC_CHECK_PROG to check for ar
	- set ARFLAGS if it has not already been set in the environment

				   10/5
				   ----
Makefile.in
	- removed savestring.o from object file list

				   10/28
				   -----
shlib/Makefile.in
	- don't use a fixed filename in the .c.so suffix rule to avoid
	  problems with parallel makes

				   12/21
				   -----
support/shlib-install
	- new script to install shared readline and history libraries

shlib/Makefile.in
	- changed to call shlib-install for install and uninstall targets

[readline-4.0-beta1 frozen]

				   12/22
				   -----
configure.in
	- call AC_SUBST for SHOBJ_XLDFLAGS and SHLIB_LIBS

shlib/Makefile.in
	- SHOBJ_XLDFLAGS and SHLIB_LIBS are now substituted by configure
	- add $(SHLIB_LIBS) at end of command line that builds the shared
	  libraries (currently needed only by AIX 4.2)

				   12/31
				   -----
MANIFEST, MANIFEST.doc
	- the TOC html files are no longer generated and no longer part of
	  the distribution

				 2/18/1999
				 ---------
configure.in
	- set MAKE_SHELL to /bin/sh and substitute into the Makefiles

Makefile.in,{doc,examples,shlib}/Makefile.in
	- set SHELL from @MAKE_SHELL@

[readline-4.0 released]

				   3/11
				   ----
doc/Makefile.in
	- removed references to HTMLTOC, since separate HTML table-of-contents
	  files are no longer created

examples/Makefile.in
	- remove `*.exe' in clean target for MS-DOS

Makefile.in
	- make `readline' target depend on ./libreadline.a
	- configure now substitutes TERMCAP_LIB into Makefile.in
	- use ${TERMCAP_LIB} instead of -ltermcap in recipe for `readline'
	- clean target now removes readline and readline.exe in case they
	  get built

configure.in
	- use `pwd.exe' to set BUILD_DIR on MS-DOS DJGPP

				   3/15
				   ----
support/shlib-install
	- Irix 5.x and Irix 6.x should install shared libraries like Solaris 2
	- changes for installing on hp-ux 1[01].x

				   3/23
				   ----
configure.in
	- make sure that the $CC argument to shobj-conf is quoted

				    4/8
				    ---

xmalloc.h, rlprivate.h, rlshell.h
	- new files

Makefile.in,shlib/Makefile.in
	- add dependencies on xmalloc.h, rlshell.h
	- add xmalloc.h, rlprivate.h, rlshell.h to list of header files

MANIFEST
	- add xmalloc.h, rlprivate.h, rlshell.h

				    4/9
				    ---
Makefile.in,shlib/Makefile.in
	- add dependencies on rlprivate.h

				   4/13
				   ----
doc/Makefile.in
	- add variable, PSDVI, which is the desired resolution of the
	  generated postscript files.  Set to 300 because I don't have
	  any 600-dpi printers
	- set LANGUAGE= before calling makeinfo, so messages are in English
	- add rluserman.{info,dvi,ps,html} to appropriate variables
	- add rules to create rluserman.{info,dvi,ps,html}
	- install and uninstall rluserman.info, but don't update the directory
	  file in $(infodir) yet

MANIFEST
	- add doc/rluserman.{texinfo,info,dvi,ps,html}

				   4/30
				   ----
configure.in
	- updated library version to 4.1

				    5/3
				    ---
configure.in
	- SHLIB_MAJOR and SHLIB_MINOR shared library version numbers are
	  constructed from $LIBRARY_VERSION and substituted into Makefiles

				    5/5
				    ---
support/shlib-install
	- OSF/1 installs shared libraries like Solaris

Makefile.in
	- broke the header file install and uninstall into two new targets:
	  install-headers and uninstall-headers
	- install and uninstall depend on install-headers and uninstall-headers
	  respectively
	- changed install-shared and uninstall-shared targets to depend on
	  install-headers and uninstall-headers, respectively, so users may
	  choose to install only the shared libraries.  I'm not sure about
	  the uninstall one yet -- maybe it should check whether or not
	  the static libraries are installed and not remove the header files
	  if they are

				    9/3
				    ---
configure.in, config.h.in
	- added test for memmove (for later use)
	- changed version to 4.1-beta1

				   9/13
				   ----
examples/rlfe.c
	- Per Bothner's `rlfe' readline front-end program

examples/Makefile.in
	- added rules to build rlfe

				   9/21
				   ----
support/shlib-install
	- changes to handle FreeBSD-3.x elf or a.out shared libraries, which
	  have different semantics and need different naming conventions

				 1/24/2000
				 ---------
doc/Makefile.in
	- remove *.bt and *.bts on `make clean'

				    2/4
				    ---


configure.in
	- changed LIBVERSION to 4.1-beta5

				 3/17/2000
				 ---------
[readline-4.1 released]

				   3/23
				   ----
Makefile.in
	- remove the `-t' argument to ranlib in the install recipe; some
	  ranlibs don't have it and attempt to create a file named `-t'

				   3/27
				   ----
support/shlib-install
	- install shared libraries unwritable by anyone on HP-UX
	- changed symlinks to relative pathnames on all platforms

shlib/Makefile.in
	- added missing `includedir' assignment, substituted by configure

Makefile.in
	- added missing @SET_MAKE@ so configure can set $MAKE appropriately

configure.in
	- add call to AC_PROG_MAKE_SET

				   8/30
				   ----
shlib/Makefile.in
	- change the soname bound into the shared libraries, so it includes
	  only the major version number.  If it includes the minor version,
	  programs depending on it must be rebuilt (which may or may not be
	  a bad thing)

				    9/6
				    ---
examples/rlfe.c
	- add -l option to log input and output (-a option appends to logfile)
	- add -n option to set readline application name
	- add -v, -h options for version and help information
	- change a few things because getopt() is now used to parse arguments

				   9/12
				   ----
support/shlib-install
	- fix up the libname on HPUX 11

				   10/18
				   -----
configure.in
	- changed library version to 4.2-alpha

				   10/30
				   -----
configure.in
	- add -fsigned-char to LOCAL_CFLAGS for Linux running on the IBM
	  S/390

Makefile.in
	- added new file, rltypedefs.h, installed by default with `make install'

				   11/2
				   ----
compat.c
	- new file, with backwards-compatibility function definitions

Makefile.in,shlib/Makefile.in
	- make sure that compat.o/compat.so are built and linked apppropriately

support/shobj-conf
	- picked up bash version, which means that shared libs built on
	  linux and BSD/OS 4.x will have an soname that does not include
	  the minor version number

				   11/13
				   -----
examples/rlfe.c
	- rlfe can perform filename completion for relative pathnames in the
	  inferior process's context if the OS supports /proc/PID/cwd (linux
	  does it OK, Solaris is slightly warped, none of the BSDs have it)

				11/17/2000
				----------
[readline-4.2-alpha released]

				   11/27
				   -----
Makefile.in,shlib/Makefile.in
	- added dependencies for rltypedefs.h

shlib/Makefile.in
	- changed dependencies on histlib.h to $(topdir)/histlib.h

				   1/22
				   ----
configure.in
	- changed release version to 4.2-beta

				    2/2
				    ---
examples/Makefile.in
	- build histexamp as part of the examples

				    2/5
				    ---
doc/Makefile.in
	- don't remove the dvi, postscript, html, info, and text `objects'
	  on a `make distclean', only on a `make maintainer-clean'

				    3/6
				    ---
doc/history.{0,3}, doc/history_3.ps
	- new manual page for history library

doc/Makefile.in
	- rules to install and uninstall history.3 in ${man3dir}
	- rules to build history.0 and history_3.ps

				    4/2
				    ---
configure.in
	- changed LIBVERSION to `4.2'

				    4/5
				    ---
[readline-4.2 frozen]

				    4/9
				    ---
[readline-4.2 released]

				    5/2
				    ---
Makefile.in,{doc,examples,shlib}/Makefile.in
	- added support for DESTDIR installation root prefix, to support
	  building packages

doc/Makefile.in
	- add an info `dir' file entry for rluserman.info on `make install'
	- change man1ext to `.1' and man3ext to `.3'
	- install man pages with a $(man3ext) extension in the target directory
	- add support for installing html documentation if `htmldir' has a
	  value

Makefile.in
	- on `make install', install from the `shlib' directory, too
	- on `make uninstall', uninstall in the `doc' and `shlib'
	  subdirectories, too

support/shlib-install
	- add `freebsdelf*', `freebsdaout*', Hurd, `sysv4*', `sysv5*', `dgux*'
	  targets for symlink creation

				    5/7
				    ---
configure.in, config.h.in
	- check for <limits.h>, define HAVE_LIMITS_H if found

				    5/8
				    ---
aclocal.m4
	- pick up change to BASH_CHECK_LIB_TERMCAP that adds check for
	  libtinfo (termcap-specific portion of ncurses-5.2)

				    5/9
				    ---
configure.in
	- call AC_C_CONST to find out whether or not the compiler supports
	  `const'

config.h.in
	- placeholder for `const' define, if any

				   5/10
				   ----
configure.in
	- fix AC_CHECK_PROG(ar, ...) test to specify right value for the
	  case where ar is not found; should produce a better error message

				   5/14
				   ----
configure.in,config.h.in
	- check for vsnprintf, define HAVE_VSNPRINTF if found

				   5/21
				   ----
configure.in, config.h.in
	- add checks for size_t, ssize_t

				   5/30
				   ----
configure.in
	- update autoconf to version 2.50, use in AC_PREREQ
	- changed AC_INIT to new flavor
	- added AC_CONFIG_SRCDIR
	- AC_CONFIG_HEADER -> AC_CONFIG_HEADERS
	- call AC_C_PROTOTYPES
	- AC_RETSIGTYPE -> AC_TYPE_SIGNAL

				   8/22
				   ----
configure.in
	- updated the version number to 4.2a

Makefile.in,shlib/Makefile.in
	- make sure tilde.o is built -DREADLINE_LIBRARY when being built as
	  part of the standalone library, so it picks up the right include
	  files

				   8/23
				   ----
support/shlib-install
	- support for Darwin/MacOS X shared library installation

				   9/24
				   ----
examples/readlinebuf.h
	- a new file, a C++ streambuf interface that uses readline for I/O.
	  Donated by Dimitris Vyzovitis <vyzo@media.mit.edu>

				   10/9
				   ----
configure.in
        - replaced call to BASH_HAVE_TIOCGWINSZ with AC_HEADER_TIOCGWINSZ

[readline-4.2a-beta1 frozen]

				   10/15
				   -----
configure.in, config.h.in
	- check for <memory.h>, define HAVE_MEMORY_H if found
	- check for <strings.h>, define HAVE_STRINGS_H if found

				   10/18
				   -----
configure.in, config.h.in
	- check for isascii, define HAVE_ISASCII if found

configure.in
	- changed the macro names from bash as appropriate:
		BASH_SIGNAL_CHECK -> BASH_SYS_SIGNAL_VINTAGE
		BASH_REINSTALL_SIGHANDLERS -> BASH_SYS_REINSTALL_SIGHANDLERS
		BASH_MISC_SPEED_T -> BASH_CHECK_SPEED_T

				   10/22
				   -----
configure.in
	- check for isxdigit with AC_CHECK_FUNCS

config.h.in
	- new define for HAVE_ISXDIGIT

				   10/29
				   -----
configure.in, config.h.in
	- check for strpbrk with AC_CHECK_FUNCS, define HAVE_STRPBRK if found

				    11/1
				    ----
Makefile.in
	- make sure DESTDIR is passed to install and uninstall makes in
	  subdirectories
	- when saving old copies of installed libraries, make sure we use
	  DESTDIR for the old installation tree

[readline-4.2a-rc1 frozen]

				   11/2
				   ----
Makefile.in, shlib/Makefile.in
	- don't put -I$(includedir) into CFLAGS

				   11/15
				   -----
[readline-4.2a released]

				   11/20
				   -----
examples/rlcat.c
	- new file

examples/Makefile.in
	- changes for rlcat

				   11/28
				   -----
configure.in
	- default TERMCAP_LIB to -lcurses if $prefer_curses == yes (as when
	  --with-curses is supplied)

examples/Makefile.in
	- substitute @LDFLAGS@ in LDFLAGS assignment

				   11/29
				   -----
config.h.in
	- add necessary defines for multibyte include files and functions
	- add code to define HANDLE_MULTIBYTE if prerequisites are met

configure.in
	- call BASH_CHECK_MULTIBYTE

				   12/14
				   -----
config.h.in
	- add #undef PROTOTYPES, filled in by AC_C_PROTOTYPES

				   12/17
				   -----
config.h.in
	- moved HANDLE_MULTIBYTE code to rlmbutil.h

rlmbutil.h, mbutil.c
	- new files

Makefile.in, shlib/Makefile.in
	- added rules for mbutil.c

				   12/20
				   -----
configure.in
	- added --enable-shared, --enable-static options to configure to
	  say which libraries are built by default (both default to yes)
	- if SHLIB_STATUS == 'unsupported', turn off default shared library
	  building
	- substitute new STATIC_TARGET, SHARED_TARGET, STATIC_INSTALL_TARGET,
	  and SHARED_INSTALL_TARGET

Makefile.in
	- `all' target now depends on (substituted) @STATIC_TARGET@ and
	  @SHARED_TARGET@
	- `install' target now depends on (substituted) @STATIC_INSTALL_TARGET@
	  and @SHARED_INSTALL_TARGET@

INSTALL, README
	- updated with new info about --enable-shared and --enable-static

				 1/10/2002
				 ---------
configure.in
	- bumped the library version number to 4.3

				   1/24
				   ----
Makefile.in,shlib/Makefile.in
	- changes for new file, text.c, with character and text handling
	  functions from readline.c

				   2/20
				   ----
{configure.config.h}.in
	- call AC_C_CHAR_UNSIGNED, define __CHAR_UNSIGNED__ if chars are
	  unsigned by default

				   5/20
				   ----
doc/Makefile.in
	- new maybe-clean target that removes the generated documentation if
	  the build directory differs from the source directory
	- distclean target now depends on maybe-clean

				   7/17
				   ----
[readline-4.3 released]

				   7/18
				   ----
shlib/Makefile.in
	- fix bad dependency: text.so: terminal.c, make it depend on text.c

				    8/7
				    ---
support/shlib-install
	- break `linux' out into its own stanza:  it seems that linux
	  distributions are all moving to the following scheme:

		libreadline.so.4.3	installed version
		libreadline.so.4 -> libreadline.so.4.3	symlink
		libreadline.so -> libreadline.so.4	symlink

				   10/29
				   -----
support/shlib-install
	- change INSTALL_LINK[12] to use `&&' instead of `;' so it only
	  tries the link if the cd succeeds; put ${echo} in there, too
	- use $LN instead of `ln -s' so it works on machines without symlinks
	- change special linux stanza to use cd before ln also
	- change to use $INSTALL_LINK1 and $INSTALL_LINK2 appropriately
	  instead of explicit commands in various stanzas

				    2/1
				    ---
config.h.in
	- add HAVE_MBRTOWC and HAVE_MBRLEN
	- add NO_MULTIBYTE_SUPPORT for new configure argument
	- add STDC_HEADERS

configure.in
	- new argument --enable-multibyte (enabled by default), allows
	  multibyte support to be turned off even on systems that support it
	- add check for ansi stdc headers with call to AC_HEADER_STDC

				    2/3
				    ---
configure.in
	- add call to BASH_FUNC_CTYPE_NONASCII

config.h.in
	- add CTYPE_NON_ASCII

				   2/20
				   ----

doc/manvers.texinfo
        - renamed to version.texi to match other GNU software
        - UPDATE-MONTH variable is now `UPDATED-MONTH'
        
doc/{hist,rlman,rluserman}.texinfo
        - include version.texi
        
doc/{rltech,rluser,hstech,hsuser}.texi
	- changed the suffix from `texinfo' to `texi'

doc/Makefile.in
	- made appropriate changes for {{rl,hs}tech,{rl,hs}user}.texi

doc/{rlman,rluserman}.texinfo
	- changed the suffix from `texinfo' to `texi'

doc/hist.texinfo
	- renamed to history.texi to be more consistent

				   6/11
				   ----
shlib/Makefile.in
	- have configure substitute value of `@LDFLAGS@' into the assignment
	  to SHLIB_XLDFLAGS

				   6/16
				   ----
configure.in
	- readline and history libraries are now at version 5.0

				   8/18
				   ----
support/shlib-install
	- support for FreeBSD-gnu (from Robert Millan)

				   12/4
				   ----
Makefile.in
	- add variables for localedir and the PACKAGE_* variables, auto-set
	  by configure

				   12/9
				   ----
Makefile.in
	- use mkinstalldirs instead of mkdirs

				   4/22
				   ----
Makefile.in
	- separate doc install/uninstall out into two new targets:
	  install-doc and uninstall-doc
	- make install-doc and uninstall-doc prerequisites of appropriate
	  install and uninstall targets

examples/rl-fgets.c
	- new example from Harold Levy that wraps fgets replacement functions
	  that call readline in a shared library that can be interposed with
	  LD_PRELOAD

				   7/27
				   ----
[readline-5.0 released]

				   11/15
				   -----
examples/rlfe/{ChangeLog,Makefile.in,README,config.h.in,configure,configure.in,extern.h,os.h,pty.c,rlfe.c,screen.h}
	- new version of rlfe, rlfe-0.4, from Per Bothner; now a standalone
	  application

				   11/16
				   -----
shlib/Makefile.in
	- substitute TERMCAP_LIB in from configure

configure.in
	- if SHLIB_LIBS doesn't include a termcap library (curses, ncurses,
	  termcap, termlib), append the value of $TERMCAP_LIB to it

				   11/30
				   -----
configure.in
	- take out change from 11/16; it doesn't work for some systems (e.g.,
	  SunOS 4.x and Solaris 2.6)
	- add support for --enable-purify configure argument
	- pass TERMCAP_LIB in environment when calling shobj-conf

examples/Makefile.in 
	- add support for building examples with purify

				 1/23/2005
				 ---------
configure.in
        - set BUILD_DIR to contain backslashes to escape any spaces in the
          directory name -- this is what make will accept in targets and
          prerequisites, so it's better than trying to use double quotes

				   2/25
				   ----
configure.in
	- change check for sys/ptem.h to include sys/stream.h if present, to
	  avoid the `present but cannot be compiled' messages on Solaris and
	  SVR4.2 (does anyone still use SVR4.2?)

				    5/7
				    ---
configure.in
	- add cross-compiling support from the bash configure.in, which cygwin
	  and mingw have apparently adopted
	- add check for pwd.h, fcntl.h
	- add checks for fcntl, kill system calls
	- add checks for getpw{ent,nam,uid} C library functions
	- pass a compile-time option through to Makefiles if cross-compiling

config.h.in
	- add HAVE_PWD_H for <pwd.h>, HAVE_FCNTL_H for <fcntl.h>
	- add HAVE_FCNTL, HAVE_KILL for respective system calls
	- add HAVE_GETPW{ENT,NAM,UID} for passwd functions

Makefile.in,shlib/Makefile.in
        - @CROSS_COMPILE@ is substituted into DEFS (equal to -DCROSS_COMPILING
	  if bash is being cross-compiled)

				    8/2
				    ---
examples/Makefile.in
	- use $(READLINE_LIB) instead of -lreadline to get around MacOS X 10.4's
	  preference for (incompatible) shared libraries over static libraries
	  in the load path

				   8/11
				   ----
support/shobj-conf
	- new variable: SHLIB_LIBPREF, prefix for shared library name (defaults
	  to `lib'
	- new variable: SHLIB_DLLVERSION, used on Cygwin to set the library
	  version number
	- new variable: SHLIB_DOT, separator character between library name and
	  suffix and version information (defaults to `.')
	- new stanza for cygwin to generate windows-compatible dll

support/shlib-install
	- add new option `-b bindir' for systems like cygwin/windows that
	  require it
	- new stanza for cygwin that installs a dll into $bindir and an implied
	  link library into $libdir

configure.in
	- substitute new variables from shobj-conf

shlib/Makefile.in
	- substitute bindir, SHLIB_DOT, SHLIB_LIBPREF, SHLIB_DLLVERSION from
	  configure
	- pass `-b $(bindir)' to shlib-install for install and uninstall targets
	- library names now use $SHLIB_LIBPREF and $SHLIB_DOT

INSTALL,README
	- document new SHLIB_DOT, SHLIB_LIBPREF, and SHLIB_DLLVERSION variables

				   10/4
				   ----
[readline-5.1-beta1 frozen]

				   12/1
				   ----
configure.in
	- changed release status to `release'

[readline-5.1 frozen]

				   12/9
				   ----
[readline-5.1 released]

				   12/14
				   -----
examples/rlfe/Makefile.in
	- add @LIBS@ to LIBS assignment to pick up extra libraries from
	  configure

				 1/3/2006
				 --------
support/shlib-install
	- Install shared libraries with execute bit set on Linux

				    6/9
				    ---
[readline-5.2-alpha frozen]

				   6/26
				   ----
configure.in
	- set CROSS_COMPILE to the empty string by default, so we don't inherit
	  a random value from the environment

				    7/8
				    ---
[readline-5.2-alpha released]


[readline-5.2-beta released]

				   9/12
				   ----
config.h.in
        - add defines for wcscoll, iswctype, iswupper, iswlower, towupper,
          towlower functions
        - replace define for wctomb with one for wcrtomb
        - add defines for wchar_t, wint_t, wctype_t types

				   10/11
				   -----
[readline-5.2 released]

				   11/9
				   ----
examples/rlfe/{configure.in,Makefile.in,config.h.in,rlfe.c,pty.c}
	- portability fixes from Mike Frysinger <vapier@gentoo.org>

				   11/21
				   -----
Makefile.in
	- add `install-examples' and `uninstall-examples' targets

examples/Makefile.in
	- add correct variables to build examples on Windows
	- add appropriate rules to install and uninstall example sources in
	  $(datadir)/readline 

				   11/27
				   -----
config.h.in
	- move #undef of HAVE_STRCOLL out of config.h.in, since autoconf tries
	  to substitute it based on configure tests

				 4/27/2007
				 ---------
examples/autoconf
	- new directory with example autoconf macros to detect readline and
	  return information about the installed version

				   6/13
				   ----
support/shlib-install
	- changes to support AIX 5.x shared library installation

				 3/20/2008
				 ---------
support/shlib-install
	- add support for NetBSD and Interix shared library installation

				   4/22
				   ----
support/wcwidth.c
	- updated implementation from 2007-05

				   7/18
				   ----
support/shlib-install
	- support for mingw32, contributed by Carlo Bramix <carlo.bramix@libero.it>

				    8/4
				    ---
configure.in
	- changed to readline-6.0

				   8/18
				   ----
support/config.{guess,sub}
	- updated to newer versions from autoconf-2.62 distribution

				 3/5/2009
				 --------
support/shlib-install
	- take a new -V host_vendor argument
	- add ${host_vendor} to string tested in case statement for symlink
	  creation section
	- add support for FreeBSD/gentoo, which uses Linux library naming
	  scheme
	- change FreeBSD symlink rules, since FreeBSD 7+ has only ELF shared
	  libraries.  DragonflyBSD rules are the same.  Fix from Timothy
	  Redaelli <drizzt@gentoo.org>

shlib/Makefile.in
	- add definition of host_vendor, substituted by configure
	- add -V host_vendor argument to all invocations of shlib-install.
	  Fix from Timothy Redaelli <drizzt@gentoo.org>

				   3/10
				   ----
configure.in
	- add call to AC_SYS_LARGEFILE for readdir and largefile support on
	  Linux

config.h.in
	- add _FILE_OFFSET_BITS define

				   4/19
				   ----
Makefile.in
	- add targets for making and installing documentation required by GNU
	  coding standards.  Fix from Joseph Myers <joseph@codesourcery.com>

posixselect.h
	- pick up from bash.  Inspired by Mike Frysinger <vapier@gentoo.org>

				   10/28
				   -----
support/shlib-install
	- decrease the default version of FreeBSD that installs shared libraries
	  to 4.x.  Advice from Peter Jeremy <peterjeremy@acm.org>

				   12/18
				   -----
[readline-6.1-rc1 released]

				   12/23
				   -----
doc/Makefile.in
	- make sure $(topdir) is not ".." before removing all of the formatted
	  documentation in `make distclean'.  $(topdir) is set to `..' if
	  readline is being built in the source directory.  Fixes problem
	  noticed by THOUMIN Damien <thoumin@ipanematech.com>

				   12/29
				   -----
[readline-6.1 frozen]

				 2/5/2010
				 --------
examples/Makefile.in
        - make sure to install example C files using $(srcdir)/$$f in case
          we're building outside the source directory.  Bug report and fix
          from Peter Breitenlohner <peb@mppmu.mpg.de>

				   7/25
				   ----
xfree.c
	- new file with xfree() implementation, moved from xmalloc.c

				   12/28
				   -----
{examples,shlib}/Makefile.in
	- Cygwin-based changes from Eric Blake <eblake@redhat.com>

				 3/26/2011
				 ---------
Makefile.in
	- don't ignore failures when building, installing, or cleaning in
	  the shlib subdirectory.  Sample patch from Mike Frysinger
	  <vapier@gentoo.org>

shlib/Makefile.in
	- split the install and uninstall targets into install-supported and
	  install-unsupported targets that depend on the value of
	  SHLIB_STATUS

				    4/2
				    ---
{,shlib}/Makefile.in
	- add dependency for callback.o/callback.so on xmalloc.h.  From
	  Jan Kratochvil  <jan.kratochvil@redhat.com>

{,doc,examples,shlib}/Makefile.in
	- fix typo: htm target should be html.  From Jan Kratochvil
	  <jan.kratochvil@redhat.com>
	- remove `.' from VPATH.  From Jan Kratochvil
	   <jan.kratochvil@redhat.com>

examples/rlfe/configure.in
	- quote AC_PROGRAM_SOURCE.  From Jan Kratochvil
	   <jan.kratochvil@redhat.com>

				   5/17
				   ----
config.h.in
	- WCWIDTH_BROKEN: new define, picked up from bash, defined on systems
	  where wcwidth returns 1 for Unicode combining characters

				   11/28
				   -----
support/shlib-install
	- make sure solaris2 systems make the installed shared library
	  executable.  ldd warns about it otherwise.  Bug and fix from
	  Tim Mooney <tim.mooney@ndsu.edu>

examples/hist_erasedups.c
	- new example program, shows how to erase duplicates from the history
	  list

examples/hist_purgecmd.c
	- new example program, shows how to remove all entries matching a
	  string or pattern from the history list

				 1/12/2012
				 ---------
colors.[ch],parse-colors.[ch]}
	- new files, part of color infrastructure support

Makefile.in,shlib/Makefile.in
	- arrange to have colors.o and parse-colors.o added to library
	  (static and shared versions)

{configure,config.h}.in
	- check for stdbool.h, define HAVE_STDBOOL_H if found

rldefs.h
	- COLOR_SUPPORT: if defined, compile in colors.c and parse-colors.c
	  for color support

				   1/18
				   ----

{configure,config.h}.in
        - new check: check for AUDIT_USER_TTY defined in <linux/audit.h>,
          define HAVE_DECL_AUDIT_USER_TTY if both are found

				    8/7
				    ---
configure.in
	- AC_CANONICAL_BUILD: call to set the build_xxx variables
	- use $build_os instead of $host_os to decide when DJGPP should run
	  `pwd.exe' to figure out the build directory.  Report and fix from
	  Yao Qi <yao@codesourcery.com>

				   8/29
				   ----
configure.ac
	- new name for configure.in

MANIFEST,Makefile.in
	- configure.in -> configure.ac

				 1/5/2013
				 --------
configure.ac
	- move version number up to 6.3

				   1/31
				   ----
configure.ac
	- use AC_CHECK_TOOL instead of AC_CHECK_PROG to check for ar, since it
	  will find $host-prefixed versions of utilities.  Report and fix from
	  Mike Frysinger <vapier@gentoo.org>

				    3/4
				    ---
Makefile.in
        - PACKAGE_TARNAME, docdir: new variables substituted by autoconf
        - OTHER_DOCS,OTHER_INSTALLED_DOCS: new variables with auxiliary
	  documentation files to be installed into $(docdir)
        - install: add new rule to install $(OTHER_DOCS)
        - uninstall: add new rule to uninstall $(docdir)/$(OTHER_INSTALLED_DOCS)

				   4/29
				   ----
Makefile.in
	- installdirs: make sure to create $(DESTDIR)$(docdir).  Report from
	  <hiroo.hayashi@computer.org>

				 1/27/2014
				 ---------
Makefile.in
	- install-examples: should not depend on `shared', since the examples
	  themselves are not built using shared libraries.  Report from
	  <hiroo.hayashi@computer.org>

support/shobj-conf
	- [from bash] darwin: changed the install_name embedded into the
	  shared library to contain only the major version number, not the
	  minor one. The idea is that the minor versions should all be API/ABI
	  compatible, and it is better to link automatically with the latest
	  one.  Idea from Max Horn <max@quendi.de>

				 2/26/2014
				 ---------
[readline-6.3 released]

				   3/14
				   ----
shlib/Makefile.in
	- fix typo in dependency list for vi_mode.so: it should not depend on
	  just $(topdir). Report and fix from Natanael Copa
	  <ncopa@alpinelinux.org>

				   4/15
				   ----
{.,shlib,examples}/Makefile.in
	- make sure $(INCLUDES) appears before $(CPPFLAGS) in the various
	  CFLAGS assignments so readline looks in its own source and build
	  directories (INCLUDES) before some directories specified by the
	  user or builder (CPPFLAGS).  Report and fix from Max Horn
	  <max@quendi.de>

				    6/2
				    ---
config.h.in
	- use correct symbols: HAVE_STRUCT_DIRENT_D_INO, HAVE_STRUCT_DIRENT_D_FILENO
	  HAVE_STRUCT_DIRENT_D_NAMLEN.  They don't really matter, but they are
	  what posixdir.h looks for.  Report from Ross Burton <ross.burton@intel.com>

				   6/11
				   ----
readline.pc.in
	- new file, config file for pkgconfig. Patch to add from Jirka Klimes
	  <jklimes@redhat.com>

{MANIFEST,configure.ac,Makefile.in}
	- readline.pc: changes to create file for pkgconfig

				   10/13
				   -----
doc/Makefile.in
	- readline.pdf, history.pdf, rluserman.pdf: use texi2dvi --pdf to generate
	  these.  Suggestion from Siep Kroonenberg <siepo@cybercomm.nl>

				   11/29
				   -----
config.h.in
        - HAVE_PSELECT: define if pselect(2) available

configure.ac
        - check for pselect(2), define HAVE_PSELECT if found

				   12/29
				   -----
configure.ac
	- bump version number up to 6.4

				 1/6/2015
				 --------
configure.ac,config.h.in
	- look for ncurses/termcap.h, define HAVE_NCURSES_TERMCAP_H

				   4/20
				   ----
configure.ac
	- add template definitions set by AC_USE_SYSTEM_EXTENSIONS from a report
	  from Andreas Schwab <schwab@linux-m68k.org>

				   4/24
				   ----
configure.ac,config.h.in
	- add check for sys/ioctl.h to AC_CHECK_HEADERS, define HAVE_SYS_IOCTL_H
	  if found

				   5/29
				   ----
configure.ac
	- bump library version to 7.0 because of addition of rl_callback_sigcleanup

				   8/26
				   ----
configure.ac,Makefile.in,examples/Makefile.in
	- remove references to purify

				   11/21
				   -----
configure.ac,config.h.in
	- fnmatch: check for libc function, define HAVE_FNMATCH if found. Now
	  used by vi-mode history search functions

				   7/12
				   ----
Makefile.in,examples/Makefile.in
	- add support for building with address sanitizer, using new target
	  `asan'

				 4/23/2018
				 ---------
configure.ac
	- TERMCAP_PKG_CONFIG_LIB: new variable, defined from TERMCAP_LIB,
	  defaults to termcap

readline.pc.in
	- change Requires.private to use TERMCAP_PKG_CONFIG_LIB instead of
	  hardcoded `tinfo'. Report and fix from Thomas Petazzoni
	  <thomas.petazzoni@bootlin.com>

				    5/4
				    ---
Makefile.in
	- new targets to install and uninstall the `readline.pc' pkgconfig
	  file
	- install-{static,shared}: add install-pc to the list of prereqs
	- uninstall{,-shared}: add uninstall-pc to list of prereqs. Change
	  from Thomas Petazzoni <thomas.petazzoni@bootlin.com>

configure.ac,Makefile.in
	- add new configure option to optionally disable installing the
	  source code examples. From Thomas Petazzoni <thomas.petazzoni@bootlin.com>

				   5/23
				   ----
Makefile.in
	- install-pc: make sure we install readline.pc into an existing
	  pkgconfig directory. Report from ilove zfs <ilovezfs@icloud.com>

				   5/24
				   ----
Makefile.in
	- installdirs: create $(pkgconfigdir) if it doesn't exist
