Re: [HACKERS] Should libedit be preferred to libreadline? - Mailing list pgsql-patches

From Bruce Momjian
Subject Re: [HACKERS] Should libedit be preferred to libreadline?
Date
Msg-id 200512040352.jB43qMn02416@candle.pha.pa.us
Whole thread Raw
In response to Re: [HACKERS] Should libedit be preferred to libreadline?  (Bruce Momjian <pgman@candle.pha.pa.us>)
List pgsql-patches
Patch applied.

---------------------------------------------------------------------------

Bruce Momjian wrote:
> Michael Paesold wrote:
> > Bruce Momjian wrote:
> >
> > > I wanted to distinguish libreadline from readline-functionality.  Why is
> > > it Readline?
> >
> > "The GNU Readline Library" is usually referred to as "Readline", not
> > "libreadline". The offical name for "libedit" is really "Libedit".
> >
> > See e.g.:
> > http://sourceforge.net/projects/libedit/
> > http://cnswww.cns.cwru.edu/~chet/readline/rltop.html
> >
> > IMHO libreadline does not sound good.
>
> OK, I call it GNU Readline now:
>
>   --with-bonjour          build with Bonjour support
>   --with-openssl          build with OpenSSL support
>   --with-libedit-preferred  prefer BSD Libedit over GNU Readline
>   --without-readline      do not use GNU Readline / BSD Libedit line editing
>   --without-zlib          do not use Zlib
>
> --
>   Bruce Momjian                        |  http://candle.pha.pa.us
>   pgman@candle.pha.pa.us               |  (610) 359-1001
>   +  If your life is a hard drive,     |  13 Roberts Road
>   +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

> Index: configure
> ===================================================================
> RCS file: /cvsroot/pgsql/configure,v
> retrieving revision 1.462
> diff -c -c -r1.462 configure
> *** configure    5 Nov 2005 16:42:00 -0000    1.462
> --- configure    3 Dec 2005 15:25:44 -0000
> ***************
> *** 890,896 ****
>     --with-pam              build with PAM support
>     --with-bonjour          build with Bonjour support
>     --with-openssl          build with OpenSSL support
> !   --without-readline      do not use Readline
>     --without-zlib          do not use Zlib
>     --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
>
> --- 890,897 ----
>     --with-pam              build with PAM support
>     --with-bonjour          build with Bonjour support
>     --with-openssl          build with OpenSSL support
> !   --with-libedit-preferred  prefer BSD Libedit over GNU Readline
> !   --without-readline      do not use GNU Readline / BSD Libedit line editing
>     --without-zlib          do not use Zlib
>     --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
>
> ***************
> *** 3772,3777 ****
> --- 3773,3809 ----
>
>
>   #
> + # Prefer libedit
> + #
> +
> +
> +
> + # Check whether --with-libedit-preferred or --without-libedit-preferred was given.
> + if test "${with_libedit_preferred+set}" = set; then
> +   withval="$with_libedit_preferred"
> +
> +   case $withval in
> +     yes)
> +       :
> +       ;;
> +     no)
> +       :
> +       ;;
> +     *)
> +       { { echo "$as_me:$LINENO: error: no argument expected for --with-libedit-preferred option" >&5
> + echo "$as_me: error: no argument expected for --with-libedit-preferred option" >&2;}
> +    { (exit 1); exit 1; }; }
> +       ;;
> +   esac
> +
> + else
> +   with_libedit_preferred=no
> +
> + fi;
> +
> +
> +
> + #
>   # Readline
>   #
>
> ***************
> *** 6490,6504 ****
>
>   if test "$with_readline" = yes; then
>
> - echo "$as_me:$LINENO: checking for readline" >&5
> - echo $ECHO_N "checking for readline... $ECHO_C" >&6
>
>   if test "${pgac_cv_check_readline+set}" = set; then
>     echo $ECHO_N "(cached) $ECHO_C" >&6
>   else
>     pgac_cv_check_readline=no
>   pgac_save_LIBS=$LIBS
> ! for pgac_rllib in -lreadline -ledit ; do
>     for pgac_lib in "" " -ltermcap" " -lncurses" " -lcurses" ; do
>       LIBS="${pgac_rllib}${pgac_lib} $pgac_save_LIBS"
>       cat >conftest.$ac_ext <<_ACEOF
> --- 6522,6540 ----
>
>   if test "$with_readline" = yes; then
>
>
>   if test "${pgac_cv_check_readline+set}" = set; then
>     echo $ECHO_N "(cached) $ECHO_C" >&6
>   else
>     pgac_cv_check_readline=no
>   pgac_save_LIBS=$LIBS
> ! if test x"$with_libedit_preferred" != x"yes"
> ! then    READLINE_ORDER="-lreadline -ledit"
> ! else    READLINE_ORDER="-ledit -lreadline"
> ! fi
> ! for pgac_rllib in $READLINE_ORDER ; do
> !   echo "$as_me:$LINENO: checking for ${pgac_rllib}" >&5
> ! echo $ECHO_N "checking for ${pgac_rllib}... $ECHO_C" >&6
>     for pgac_lib in "" " -ltermcap" " -lncurses" " -lcurses" ; do
>       LIBS="${pgac_rllib}${pgac_lib} $pgac_save_LIBS"
>       cat >conftest.$ac_ext <<_ACEOF
> ***************
> *** 6557,6563 ****
>         esac
>
>         pgac_cv_check_readline="${pgac_rllib}${pgac_lib}"
> !       break 2
>
>   else
>     echo "$as_me: failed program was:" >&5
> --- 6593,6599 ----
>         esac
>
>         pgac_cv_check_readline="${pgac_rllib}${pgac_lib}"
> !       break
>
>   else
>     echo "$as_me: failed program was:" >&5
> ***************
> *** 6567,6590 ****
>   rm -f conftest.err conftest.$ac_objext \
>         conftest$ac_exeext conftest.$ac_ext
>     done
>   done
>   LIBS=$pgac_save_LIBS
>
>   fi
>
>   if test "$pgac_cv_check_readline" != no ; then
>
>   cat >>confdefs.h <<\_ACEOF
>   #define HAVE_LIBREADLINE 1
>   _ACEOF
>
> -   LIBS="$pgac_cv_check_readline $LIBS"
> -   echo "$as_me:$LINENO: result: yes ($pgac_cv_check_readline)" >&5
> - echo "${ECHO_T}yes ($pgac_cv_check_readline)" >&6
> - else
> -   echo "$as_me:$LINENO: result: no" >&5
> - echo "${ECHO_T}no" >&6
>   fi
>     if test x"$pgac_cv_check_readline" = x"no"; then
>       { { echo "$as_me:$LINENO: error: readline library not found
>   If you have readline already installed, see config.log for details on the
> --- 6603,6631 ----
>   rm -f conftest.err conftest.$ac_objext \
>         conftest$ac_exeext conftest.$ac_ext
>     done
> +   if test "$pgac_cv_check_readline" != no ; then
> +     echo "$as_me:$LINENO: result: yes ($pgac_cv_check_readline)" >&5
> + echo "${ECHO_T}yes ($pgac_cv_check_readline)" >&6
> +     break
> +   else
> +     echo "$as_me:$LINENO: result: no" >&5
> + echo "${ECHO_T}no" >&6
> +   fi
>   done
>   LIBS=$pgac_save_LIBS
>
>   fi
>
>   if test "$pgac_cv_check_readline" != no ; then
> +   LIBS="$pgac_cv_check_readline $LIBS"
>
>   cat >>confdefs.h <<\_ACEOF
>   #define HAVE_LIBREADLINE 1
>   _ACEOF
>
>   fi
> +
> +
>     if test x"$pgac_cv_check_readline" = x"no"; then
>       { { echo "$as_me:$LINENO: error: readline library not found
>   If you have readline already installed, see config.log for details on the
> Index: configure.in
> ===================================================================
> RCS file: /cvsroot/pgsql/configure.in,v
> retrieving revision 1.432
> diff -c -c -r1.432 configure.in
> *** configure.in    5 Nov 2005 16:42:01 -0000    1.432
> --- configure.in    3 Dec 2005 15:25:45 -0000
> ***************
> *** 468,477 ****
>
>
>   #
>   # Readline
>   #
>   PGAC_ARG_BOOL(with, readline, yes,
> !               [  --without-readline      do not use Readline])
>   # readline on MinGW has problems with backslashes in psql and other bugs.
>   # This is particularly a problem with non-US code pages.
>   # Therefore disable its use until we understand the cause. 2004-07-20
> --- 468,484 ----
>
>
>   #
> + # Prefer libedit
> + #
> + PGAC_ARG_BOOL(with, libedit-preferred, no,
> +               [  --with-libedit-preferred  prefer BSD Libedit over GNU Readline])
> +
> +
> + #
>   # Readline
>   #
>   PGAC_ARG_BOOL(with, readline, yes,
> !               [  --without-readline      do not use GNU Readline / BSD Libedit line editing])
>   # readline on MinGW has problems with backslashes in psql and other bugs.
>   # This is particularly a problem with non-US code pages.
>   # Therefore disable its use until we understand the cause. 2004-07-20
> Index: config/programs.m4
> ===================================================================
> RCS file: /cvsroot/pgsql/config/programs.m4,v
> retrieving revision 1.18
> diff -c -c -r1.18 programs.m4
> *** config/programs.m4    2 Dec 2004 20:04:19 -0000    1.18
> --- config/programs.m4    3 Dec 2005 15:25:47 -0000
> ***************
> *** 78,89 ****
>
>   AC_DEFUN([PGAC_CHECK_READLINE],
>   [AC_REQUIRE([AC_CANONICAL_HOST])
> - AC_MSG_CHECKING([for readline])
>
>   AC_CACHE_VAL([pgac_cv_check_readline],
>   [pgac_cv_check_readline=no
>   pgac_save_LIBS=$LIBS
> ! for pgac_rllib in -lreadline -ledit ; do
>     for pgac_lib in "" " -ltermcap" " -lncurses" " -lcurses" ; do
>       LIBS="${pgac_rllib}${pgac_lib} $pgac_save_LIBS"
>       AC_TRY_LINK_FUNC([readline], [[
> --- 78,93 ----
>
>   AC_DEFUN([PGAC_CHECK_READLINE],
>   [AC_REQUIRE([AC_CANONICAL_HOST])
>
>   AC_CACHE_VAL([pgac_cv_check_readline],
>   [pgac_cv_check_readline=no
>   pgac_save_LIBS=$LIBS
> ! if test x"$with_libedit_preferred" != x"yes"
> ! then    READLINE_ORDER="-lreadline -ledit"
> ! else    READLINE_ORDER="-ledit -lreadline"
> ! fi
> ! for pgac_rllib in $READLINE_ORDER ; do
> !   AC_MSG_CHECKING([for ${pgac_rllib}])
>     for pgac_lib in "" " -ltermcap" " -lncurses" " -lcurses" ; do
>       LIBS="${pgac_rllib}${pgac_lib} $pgac_save_LIBS"
>       AC_TRY_LINK_FUNC([readline], [[
> ***************
> *** 98,117 ****
>         esac
>
>         pgac_cv_check_readline="${pgac_rllib}${pgac_lib}"
> !       break 2
>       ]])
>     done
>   done
>   LIBS=$pgac_save_LIBS
>   ])[]dnl AC_CACHE_VAL
>
>   if test "$pgac_cv_check_readline" != no ; then
> -   AC_DEFINE(HAVE_LIBREADLINE, 1, [Define if you have a function readline library])
>     LIBS="$pgac_cv_check_readline $LIBS"
> !   AC_MSG_RESULT([yes ($pgac_cv_check_readline)])
> ! else
> !   AC_MSG_RESULT(no)
> ! fi])# PGAC_CHECK_READLINE
>
>
>
> --- 102,126 ----
>         esac
>
>         pgac_cv_check_readline="${pgac_rllib}${pgac_lib}"
> !       break
>       ]])
>     done
> +   if test "$pgac_cv_check_readline" != no ; then
> +     AC_MSG_RESULT([yes ($pgac_cv_check_readline)])
> +     break
> +   else
> +     AC_MSG_RESULT(no)
> +   fi
>   done
>   LIBS=$pgac_save_LIBS
>   ])[]dnl AC_CACHE_VAL
>
>   if test "$pgac_cv_check_readline" != no ; then
>     LIBS="$pgac_cv_check_readline $LIBS"
> !   AC_DEFINE(HAVE_LIBREADLINE, 1, [Define if you have a function readline library])
> ! fi
> !
> ! ])# PGAC_CHECK_READLINE
>
>
>
> Index: doc/src/sgml/installation.sgml
> ===================================================================
> RCS file: /cvsroot/pgsql/doc/src/sgml/installation.sgml,v
> retrieving revision 1.249
> diff -c -c -r1.249 installation.sgml
> *** doc/src/sgml/installation.sgml    5 Nov 2005 00:04:04 -0000    1.249
> --- doc/src/sgml/installation.sgml    3 Dec 2005 15:25:49 -0000
> ***************
> *** 50,56 ****
>     <para>
>      In general, a modern Unix-compatible platform should be able to run
>      <productname>PostgreSQL</>.
> !     The platforms that had received specific testing at the
>      time of release are listed in <xref linkend="supported-platforms">
>      below. In the <filename>doc</> subdirectory of the distribution
>      there are several platform-specific <acronym>FAQ</> documents you
> --- 50,56 ----
>     <para>
>      In general, a modern Unix-compatible platform should be able to run
>      <productname>PostgreSQL</>.
> !    The platforms that had received specific testing at the
>      time of release are listed in <xref linkend="supported-platforms">
>      below. In the <filename>doc</> subdirectory of the distribution
>      there are several platform-specific <acronym>FAQ</> documents you
> ***************
> *** 107,122 ****
>         </indexterm>
>
>         The <acronym>GNU</> <productname>Readline</> library (for
> !       comfortable line editing and command history retrieval) will be
> !       used by default.  If you don't want to use it then you must
> !       specify the <option>--without-readline</option> option for
> !       <filename>configure</>.  (On <productname>NetBSD</productname>,
> !       the <filename>libedit</filename> library is
> !       <productname>Readline</productname>-compatible and is used if
> !       <filename>libreadline</filename> is not found.)  If you are using
> !       a package-based Linux distribution, be aware that you need both
> !       the <literal>readline</> and <literal>readline-devel</> packages,
> !       if those are separate in your distribution.
>        </para>
>       </listitem>
>
> --- 107,126 ----
>         </indexterm>
>
>         The <acronym>GNU</> <productname>Readline</> library (for
> !       simple line editing and command history retrieval) is
> !       used by default. If you don't want to use it then you must specify
> !       the <option>--without-readline</option> option for
> !       <filename>configure</>. As an alternative, you can often use the
> !       BSD-licensed <filename>libedit</filename> library, originally
> !       developed on <productname>NetBSD</productname>. The
> !       <filename>libedit</filename> library is
> !       GNU <productname>Readline</productname>-compatible and is used if
> !       <filename>libreadline</filename> is not found, or if
> !       <option>--with-libedit-preferred</option> is used as an
> !       option to <filename>configure</>. If you are using a package-based
> !       Linux distribution, be aware that you need both the
> !       <literal>readline</> and <literal>readline-devel</> packages, if
> !       those are separate in your distribution.
>        </para>
>       </listitem>
>
> ***************
> *** 858,863 ****
> --- 862,877 ----
>         </varlistentry>
>
>         <varlistentry>
> +        <term><option>--with-libedit-preferred</option></term>
> +        <listitem>
> +         <para>
> +          Favors the use of the BSD-licensed <application>libedit</> library
> +          rather than GPL-licensed <application>Readline</>.
> +         </para>
> +        </listitem>
> +       </varlistentry>
> +
> +       <varlistentry>
>          <term><option>--without-readline</option></term>
>          <listitem>
>           <para>

>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: Have you checked our extensive FAQ?
>
>                http://www.postgresql.org/docs/faq

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

pgsql-patches by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: Numeric 508 datatype
Next
From: Bruce Momjian
Date:
Subject: Re: return can contains any row or record functions