diff options
author | cvs2git <rtems-devel@rtems.org> | 2002-07-30 23:06:03 +0000 |
---|---|---|
committer | cvs2git <rtems-devel@rtems.org> | 2002-07-30 23:06:03 +0000 |
commit | eddcad37934ee3dbc8c6c50b55ae3c8c879eb564 (patch) | |
tree | 083bd0a76d5d8e8001d8a0832e4cbf466c93ab94 /readline-4.3/callback.c | |
parent | cbc2d8125987241306ba82aa853e3f6bb3069405 (diff) |
This commit was manufactured by cvs2svn to create tag 'rtems-addon-packages-rtems-addon-packages-20020730a
20020730a'.
Sprout from addons 2002-06-28 21:58:41 UTC Eric Norum <WENorum@lbl.gov> 'Useful add-on libraries'
Cherrypick from master 2002-07-30 23:06:02 UTC Joel Sherrill <joel.sherrill@OARcorp.com> '2002-07-30 Joel Sherrill <joel@OARcorp.com>':
ChangeLog
RTEMS_Makefiles/Makefile.readline-4.3
SUPPORT
VERSION
bit
readline-4.3.orig/CHANGELOG
readline-4.3.orig/CHANGES
readline-4.3.orig/COPYING
readline-4.3.orig/INSTALL
readline-4.3.orig/MANIFEST
readline-4.3.orig/Makefile.in
readline-4.3.orig/README
readline-4.3.orig/USAGE
readline-4.3.orig/aclocal.m4
readline-4.3.orig/ansi_stdlib.h
readline-4.3.orig/bind.c
readline-4.3.orig/callback.c
readline-4.3.orig/chardefs.h
readline-4.3.orig/compat.c
readline-4.3.orig/complete.c
readline-4.3.orig/config.h.in
readline-4.3.orig/configure
readline-4.3.orig/configure.in
readline-4.3.orig/display.c
readline-4.3.orig/doc/Makefile.in
readline-4.3.orig/doc/hist.texinfo
readline-4.3.orig/doc/history.0
readline-4.3.orig/doc/history.3
readline-4.3.orig/doc/history.dvi
readline-4.3.orig/doc/history.html
readline-4.3.orig/doc/history.info
readline-4.3.orig/doc/history.ps
readline-4.3.orig/doc/history_3.ps
readline-4.3.orig/doc/hstech.texinfo
readline-4.3.orig/doc/hsuser.texinfo
readline-4.3.orig/doc/manvers.texinfo
readline-4.3.orig/doc/readline.0
readline-4.3.orig/doc/readline.3
readline-4.3.orig/doc/readline.dvi
readline-4.3.orig/doc/readline.html
readline-4.3.orig/doc/readline.info
readline-4.3.orig/doc/readline.ps
readline-4.3.orig/doc/readline_3.ps
readline-4.3.orig/doc/rlman.texinfo
readline-4.3.orig/doc/rltech.texinfo
readline-4.3.orig/doc/rluser.texinfo
readline-4.3.orig/doc/rluserman.dvi
readline-4.3.orig/doc/rluserman.html
readline-4.3.orig/doc/rluserman.info
readline-4.3.orig/doc/rluserman.ps
readline-4.3.orig/doc/rluserman.texinfo
readline-4.3.orig/doc/texi2dvi
readline-4.3.orig/doc/texi2html
readline-4.3.orig/doc/texinfo.tex
readline-4.3.orig/emacs_keymap.c
readline-4.3.orig/examples/Inputrc
readline-4.3.orig/examples/Makefile.in
readline-4.3.orig/examples/excallback.c
readline-4.3.orig/examples/fileman.c
readline-4.3.orig/examples/histexamp.c
readline-4.3.orig/examples/manexamp.c
readline-4.3.orig/examples/readlinebuf.h
readline-4.3.orig/examples/rl.c
readline-4.3.orig/examples/rlcat.c
readline-4.3.orig/examples/rlfe.c
readline-4.3.orig/examples/rltest.c
readline-4.3.orig/examples/rlversion.c
readline-4.3.orig/funmap.c
readline-4.3.orig/histexpand.c
readline-4.3.orig/histfile.c
readline-4.3.orig/histlib.h
readline-4.3.orig/history.c
readline-4.3.orig/history.h
readline-4.3.orig/histsearch.c
readline-4.3.orig/input.c
readline-4.3.orig/isearch.c
readline-4.3.orig/keymaps.c
readline-4.3.orig/keymaps.h
readline-4.3.orig/kill.c
readline-4.3.orig/macro.c
readline-4.3.orig/mbutil.c
readline-4.3.orig/misc.c
readline-4.3.orig/nls.c
readline-4.3.orig/parens.c
readline-4.3.orig/posixdir.h
readline-4.3.orig/posixjmp.h
readline-4.3.orig/posixstat.h
readline-4.3.orig/readline.c
readline-4.3.orig/readline.h
readline-4.3.orig/rlconf.h
readline-4.3.orig/rldefs.h
readline-4.3.orig/rlmbutil.h
readline-4.3.orig/rlprivate.h
readline-4.3.orig/rlshell.h
readline-4.3.orig/rlstdc.h
readline-4.3.orig/rltty.c
readline-4.3.orig/rltty.h
readline-4.3.orig/rltypedefs.h
readline-4.3.orig/rlwinsize.h
readline-4.3.orig/savestring.c
readline-4.3.orig/search.c
readline-4.3.orig/shell.c
readline-4.3.orig/shlib/Makefile.in
readline-4.3.orig/signals.c
readline-4.3.orig/support/config.guess
readline-4.3.orig/support/config.sub
readline-4.3.orig/support/install.sh
readline-4.3.orig/support/mkdirs
readline-4.3.orig/support/mkdist
readline-4.3.orig/support/shlib-install
readline-4.3.orig/support/shobj-conf
readline-4.3.orig/support/wcwidth.c
readline-4.3.orig/tcap.h
readline-4.3.orig/terminal.c
readline-4.3.orig/text.c
readline-4.3.orig/tilde.c
readline-4.3.orig/tilde.h
readline-4.3.orig/undo.c
readline-4.3.orig/util.c
readline-4.3.orig/vi_keymap.c
readline-4.3.orig/vi_mode.c
readline-4.3.orig/xmalloc.c
readline-4.3.orig/xmalloc.h
readline-4.3/CHANGELOG-ReadLine
readline-4.3/CHANGES
readline-4.3/COPYING
readline-4.3/INSTALL
readline-4.3/MANIFEST
readline-4.3/Makefile.in
readline-4.3/README
readline-4.3/USAGE
readline-4.3/aclocal.m4
readline-4.3/ansi_stdlib.h
readline-4.3/bind.c
readline-4.3/callback.c
readline-4.3/chardefs.h
readline-4.3/compat.c
readline-4.3/complete.c
readline-4.3/config.h.in
readline-4.3/configure
readline-4.3/configure.in
readline-4.3/display.c
readline-4.3/doc/Makefile.in
readline-4.3/doc/hist.texinfo
readline-4.3/doc/history.3
readline-4.3/doc/hstech.texinfo
readline-4.3/doc/hsuser.texinfo
readline-4.3/doc/manvers.texinfo
readline-4.3/doc/readline.3
readline-4.3/doc/rlman.texinfo
readline-4.3/doc/rltech.texinfo
readline-4.3/doc/rluser.texinfo
readline-4.3/doc/rluserman.texinfo
readline-4.3/doc/texi2dvi
readline-4.3/doc/texi2html
readline-4.3/doc/texinfo.tex
readline-4.3/emacs_keymap.c
readline-4.3/examples/Inputrc
readline-4.3/examples/Makefile.in
readline-4.3/examples/excallback.c
readline-4.3/examples/fileman.c
readline-4.3/examples/histexamp.c
readline-4.3/examples/manexamp.c
readline-4.3/examples/readlinebuf.h
readline-4.3/examples/rl.c
readline-4.3/examples/rlcat.c
readline-4.3/examples/rlfe.c
readline-4.3/examples/rltest.c
readline-4.3/examples/rlversion.c
readline-4.3/funmap.c
readline-4.3/histexpand.c
readline-4.3/histfile.c
readline-4.3/histlib.h
readline-4.3/history.c
readline-4.3/history.h
readline-4.3/histsearch.c
readline-4.3/input.c
readline-4.3/isearch.c
readline-4.3/keymaps.c
readline-4.3/keymaps.h
readline-4.3/kill.c
readline-4.3/macro.c
readline-4.3/mbutil.c
readline-4.3/misc.c
readline-4.3/nls.c
readline-4.3/parens.c
readline-4.3/posixdir.h
readline-4.3/posixjmp.h
readline-4.3/posixstat.h
readline-4.3/readline.c
readline-4.3/readline.h
readline-4.3/rlconf.h
readline-4.3/rldefs.h
readline-4.3/rlmbutil.h
readline-4.3/rlprivate.h
readline-4.3/rlshell.h
readline-4.3/rlstdc.h
readline-4.3/rltty.c
readline-4.3/rltty.h
readline-4.3/rltypedefs.h
readline-4.3/rlwinsize.h
readline-4.3/savestring.c
readline-4.3/search.c
readline-4.3/shell.c
readline-4.3/shlib/Makefile.in
readline-4.3/signals.c
readline-4.3/support/config.guess
readline-4.3/support/config.sub
readline-4.3/support/install.sh
readline-4.3/support/mkdirs
readline-4.3/support/mkdist
readline-4.3/support/shlib-install
readline-4.3/support/shobj-conf
readline-4.3/support/wcwidth.c
readline-4.3/tcap.h
readline-4.3/terminal.c
readline-4.3/text.c
readline-4.3/tilde.c
readline-4.3/tilde.h
readline-4.3/undo.c
readline-4.3/util.c
readline-4.3/vi_keymap.c
readline-4.3/vi_mode.c
readline-4.3/xmalloc.c
readline-4.3/xmalloc.h
readline-doc-4.3/MANIFEST.doc
readline-doc-4.3/doc/history.0
readline-doc-4.3/doc/history.dvi
readline-doc-4.3/doc/history.html
readline-doc-4.3/doc/history.info
readline-doc-4.3/doc/history.ps
readline-doc-4.3/doc/history_3.ps
readline-doc-4.3/doc/readline.0
readline-doc-4.3/doc/readline.dvi
readline-doc-4.3/doc/readline.html
readline-doc-4.3/doc/readline.info
readline-doc-4.3/doc/readline.ps
readline-doc-4.3/doc/readline_3.ps
readline-doc-4.3/doc/rluserman.dvi
readline-doc-4.3/doc/rluserman.html
readline-doc-4.3/doc/rluserman.info
readline-doc-4.3/doc/rluserman.ps
Delete:
RTEMS_Makefiles/Makefile.readline
SendSrc.bash
readline-4.2/CHANGELOG
readline-4.2/CHANGES
readline-4.2/COPYING
readline-4.2/INSTALL
readline-4.2/MANIFEST
readline-4.2/Makefile.in
readline-4.2/README
readline-4.2/USAGE
readline-4.2/aclocal.m4
readline-4.2/ansi_stdlib.h
readline-4.2/bind.c
readline-4.2/callback.c
readline-4.2/chardefs.h
readline-4.2/compat.c
readline-4.2/complete.c
readline-4.2/config.h.in
readline-4.2/configure
readline-4.2/configure.in
readline-4.2/display.c
readline-4.2/doc/Makefile.in
readline-4.2/doc/hist.texinfo
readline-4.2/doc/history.0
readline-4.2/doc/history.3
readline-4.2/doc/history.dvi
readline-4.2/doc/history.html
readline-4.2/doc/history.info
readline-4.2/doc/history.ps
readline-4.2/doc/history_3.ps
readline-4.2/doc/hstech.texinfo
readline-4.2/doc/hsuser.texinfo
readline-4.2/doc/manvers.texinfo
readline-4.2/doc/readline.0
readline-4.2/doc/readline.3
readline-4.2/doc/readline.dvi
readline-4.2/doc/readline.html
readline-4.2/doc/readline.info
readline-4.2/doc/readline.ps
readline-4.2/doc/readline_3.ps
readline-4.2/doc/rlman.texinfo
readline-4.2/doc/rltech.texinfo
readline-4.2/doc/rluser.texinfo
readline-4.2/doc/rluserman.html
readline-4.2/doc/rluserman.info
readline-4.2/doc/rluserman.ps
readline-4.2/doc/rluserman.texinfo
readline-4.2/doc/texi2dvi
readline-4.2/doc/texi2html
readline-4.2/doc/texinfo.tex
readline-4.2/emacs_keymap.c
readline-4.2/examples/Inputrc
readline-4.2/examples/Makefile.in
readline-4.2/examples/excallback.c
readline-4.2/examples/fileman.c
readline-4.2/examples/histexamp.c
readline-4.2/examples/manexamp.c
readline-4.2/examples/rl.c
readline-4.2/examples/rlfe.c
readline-4.2/examples/rltest.c
readline-4.2/examples/rlversion.c
readline-4.2/funmap.c
readline-4.2/histexpand.c
readline-4.2/histfile.c
readline-4.2/histlib.h
readline-4.2/history.c
readline-4.2/history.h
readline-4.2/histsearch.c
readline-4.2/input.c
readline-4.2/isearch.c
readline-4.2/keymaps.c
readline-4.2/keymaps.h
readline-4.2/kill.c
readline-4.2/macro.c
readline-4.2/nls.c
readline-4.2/parens.c
readline-4.2/posixdir.h
readline-4.2/posixjmp.h
readline-4.2/posixstat.h
readline-4.2/readline.c
readline-4.2/readline.h
readline-4.2/rlconf.h
readline-4.2/rldefs.h
readline-4.2/rlprivate.h
readline-4.2/rlshell.h
readline-4.2/rlstdc.h
readline-4.2/rltty.c
readline-4.2/rltty.h
readline-4.2/rltypedefs.h
readline-4.2/rlwinsize.h
readline-4.2/savestring.c
readline-4.2/search.c
readline-4.2/shell.c
readline-4.2/shlib/Makefile.in
readline-4.2/signals.c
readline-4.2/support/config.guess
readline-4.2/support/config.sub
readline-4.2/support/install.sh
readline-4.2/support/mkdirs
readline-4.2/support/mkdist
readline-4.2/support/shlib-install
readline-4.2/support/shobj-conf
readline-4.2/tcap.h
readline-4.2/terminal.c
readline-4.2/tilde.c
readline-4.2/tilde.h
readline-4.2/undo.c
readline-4.2/util.c
readline-4.2/vi_keymap.c
readline-4.2/vi_mode.c
readline-4.2/xmalloc.c
readline-4.2/xmalloc.h
readline/CHANGES
readline/COPYING
readline/ChangeLog
readline/MANIFEST
readline/MANIFEST.doc
readline/Makefile.in
readline/Makefile.rtems
readline/README
readline/acconfig.h
readline/aclocal.m4
readline/ansi_stdlib.h
readline/bind.c
readline/callback.c
readline/chardefs.h
readline/complete.c
readline/config.guess
readline/config.h.bot
readline/config.h.in
readline/config.h.rtems
readline/config.sub
readline/configure
readline/configure.in
readline/configure_jnk
readline/configure_rtems
readline/cross-build/cygwin.cache
readline/display.c
readline/doc/ChangeLog
readline/doc/Makefile.in
readline/doc/hist.texinfo
readline/doc/hstech.texinfo
readline/doc/hsuser.texinfo
readline/doc/inc-hist.texi
readline/doc/readline.3
readline/doc/rlman.texinfo
readline/doc/rltech.texinfo
readline/doc/rluser.texinfo
readline/doc/texi2dvi
readline/doc/texi2html
readline/emacs_keymap.c
readline/examples/Inputrc
readline/examples/Makefile.in
readline/examples/fileman.c
readline/examples/histexamp.c
readline/examples/manexamp.c
readline/examples/rl.c
readline/examples/rltest.c
readline/funmap.c
readline/histexpand.c
readline/histfile.c
readline/histlib.h
readline/history.c
readline/history.h
readline/histsearch.c
readline/input.c
readline/install
readline/install-sh
readline/install.sh
readline/isearch.c
readline/keymaps.c
readline/keymaps.h
readline/kill.c
readline/macro.c
readline/mkdirs
readline/mkdist
readline/nls.c
readline/parens.c
readline/posixdir.h
readline/posixjmp.h
readline/posixstat.h
readline/readline.c
readline/readline.h
readline/rlconf.h
readline/rldefs.h
readline/rltty.c
readline/rltty.h
readline/rlwinsize.h
readline/search.c
readline/shell.c
readline/signals.c
readline/support/config.guess
readline/support/config.sub
readline/support/install.sh
readline/support/mkdirs
readline/support/mkdist
readline/tcap.h
readline/terminal.c
readline/tilde.c
readline/tilde.h
readline/undo.c
readline/util.c
readline/vi_keymap.c
readline/vi_mode.c
readline/xmalloc.c
Diffstat (limited to 'readline-4.3/callback.c')
-rw-r--r-- | readline-4.3/callback.c | 156 |
1 files changed, 156 insertions, 0 deletions
diff --git a/readline-4.3/callback.c b/readline-4.3/callback.c new file mode 100644 index 0000000..a8f4323 --- /dev/null +++ b/readline-4.3/callback.c @@ -0,0 +1,156 @@ +/* callback.c -- functions to use readline as an X `callback' mechanism. */ + +/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library, a library for + reading lines of text with interactive input and history editing. + + The GNU Readline Library is free software; you can redistribute it + and/or modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2, or + (at your option) any later version. + + The GNU Readline Library is distributed in the hope that it will be + useful, but WITHOUT ANY WARRANTY; without even the implied warranty + of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + The GNU General Public License is often shipped with GNU software, and + is generally kept in a file called COPYING or LICENSE. If you do not + have a copy of the license, write to the Free Software Foundation, + 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ +#define READLINE_LIBRARY + +#if defined (HAVE_CONFIG_H) +# include <config.h> +#endif + +#include "rlconf.h" + +#if defined (READLINE_CALLBACKS) + +#include <sys/types.h> + +#ifdef HAVE_STDLIB_H +# include <stdlib.h> +#else +# include "ansi_stdlib.h" +#endif + +#include <stdio.h> + +/* System-specific feature definitions and include files. */ +#include "rldefs.h" +#include "readline.h" +#include "rlprivate.h" + +/* **************************************************************** */ +/* */ +/* Callback Readline Functions */ +/* */ +/* **************************************************************** */ + +/* Allow using readline in situations where a program may have multiple + things to handle at once, and dispatches them via select(). Call + rl_callback_handler_install() with the prompt and a function to call + whenever a complete line of input is ready. The user must then + call rl_callback_read_char() every time some input is available, and + rl_callback_read_char() will call the user's function with the complete + text read in at each end of line. The terminal is kept prepped and + signals handled all the time, except during calls to the user's function. */ + +rl_vcpfunc_t *rl_linefunc; /* user callback function */ +static int in_handler; /* terminal_prepped and signals set? */ + +/* Make sure the terminal is set up, initialize readline, and prompt. */ +static void +_rl_callback_newline () +{ + rl_initialize (); + + if (in_handler == 0) + { + in_handler = 1; + + (*rl_prep_term_function) (_rl_meta_flag); + +#if defined (HANDLE_SIGNALS) + rl_set_signals (); +#endif + } + + readline_internal_setup (); +} + +/* Install a readline handler, set up the terminal, and issue the prompt. */ +void +rl_callback_handler_install (prompt, linefunc) + const char *prompt; + rl_vcpfunc_t *linefunc; +{ + rl_set_prompt (prompt); + rl_linefunc = linefunc; + _rl_callback_newline (); +} + +/* Read one character, and dispatch to the handler if it ends the line. */ +void +rl_callback_read_char () +{ + char *line; + int eof; + + if (rl_linefunc == NULL) + { + fprintf (stderr, "readline: readline_callback_read_char() called with no handler!\r\n"); + abort (); + } + + eof = readline_internal_char (); + + /* We loop in case some function has pushed input back with rl_execute_next. */ + for (;;) + { + if (rl_done) + { + line = readline_internal_teardown (eof); + + (*rl_deprep_term_function) (); +#if defined (HANDLE_SIGNALS) + rl_clear_signals (); +#endif + in_handler = 0; + (*rl_linefunc) (line); + + /* If the user did not clear out the line, do it for him. */ + if (rl_line_buffer[0]) + _rl_init_line_state (); + + /* Redisplay the prompt if readline_handler_{install,remove} + not called. */ + if (in_handler == 0 && rl_linefunc) + _rl_callback_newline (); + } + if (rl_pending_input) + eof = readline_internal_char (); + else + break; + } +} + +/* Remove the handler, and make sure the terminal is in its normal state. */ +void +rl_callback_handler_remove () +{ + rl_linefunc = NULL; + if (in_handler) + { + in_handler = 0; + (*rl_deprep_term_function) (); +#if defined (HANDLE_SIGNALS) + rl_clear_signals (); +#endif + } +} + +#endif |