9.3.1 sic_repl.c

back: a sample shell application
forward: sic_syntax.c
up: a sample shell application
fastforward: introducing gnu libtool
top: autoconf, automake, and libtool
contents: table of contents
index: index
about: about this document

9.3.1 `sic_repl.c'

In `sic_repl.c' (13) there is a loop for reading strings typed by the user , evaluating them and printing the results. GNU readline is ideally suited to this, but it is not always available -- or sometimes people simply may not wish to use it.

With the help of GNU Autotools, it is very easy to cater for building with and without GNU readline. `sic_repl.c' uses this function to read lines of input from the user:

 static char * getline (FILE *in, const char *prompt) {   static char *buf = NULL;        /* Always allocated and freed                                    from inside this function.  */   XFREE (buf);   buf = (char *) readline ((char *) prompt); #ifdef HAVE_ADD_HISTORY   if (buf && *buf)     add_history (buf); #endif      return buf; } 

To make this work, I must write an Autoconf macro which adds an option to `configure' , so that when the package is installed, it will use the readline library if `--with-readline' is used:

 AC_DEFUN(SIC_WITH_READLINE, [AC_ARG_WITH(readline, [  --with-readline         compile with the system readline library], [if test x"${withval-no}" != xno; then   sic_save_LIBS=$LIBS   AC_CHECK_LIB(readline, readline)   if test x"${ac_cv_lib_readline_readline}" = xno; then     AC_MSG_ERROR(libreadline not found)   fi   LIBS=$sic_save_LIBS fi]) AM_CONDITIONAL(WITH_READLINE, test x"${with_readline-no}" != xno) ]) 

Having put this macro in the file `config/readline.m4' , I must also call the new macro ( SIC_WITH_READLINE ) from `configure.in' .

This document was generated by Gary V. Vaughan on May, 24 2001 using texi2html

GNU Autoconf, Automake and Libtool
GNU Autoconf, Automake, and Libtool
ISBN: 1578701902
EAN: 2147483647
Year: 2002
Pages: 290

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net