From 9c3484924bc23fe997699b79b7a68e73b7279533 Mon Sep 17 00:00:00 2001 From: David Shaw Date: Fri, 18 Mar 2005 20:17:38 +0000 Subject: [PATCH] * ttyio.c (tty_enable_completion, tty_disable_completion): Enable and disable readline completion. (init_ttyfp): Completion is disabled by default. --- include/ChangeLog | 5 +++++ include/ttyio.h | 17 ++++++++++++++++- util/ChangeLog | 6 ++++++ util/ttyio.c | 20 ++++++++++++++++++++ 4 files changed, 47 insertions(+), 1 deletion(-) diff --git a/include/ChangeLog b/include/ChangeLog index dcd72c1b3..d922d6eb8 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,8 @@ +2005-03-18 David Shaw + + * ttyio.h: Prototype tty_enable_completion(), and + tty_disable_completion(). + 2005-02-09 David Shaw * cipher.h: Add a flag for a symmetric DEK. diff --git a/include/ttyio.h b/include/ttyio.h index f3d83b9dc..85a7100a6 100644 --- a/include/ttyio.h +++ b/include/ttyio.h @@ -1,5 +1,5 @@ /* ttyio.h - * Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. + * Copyright (C) 1998, 1999, 2000, 2001, 2005 Free Software Foundation, Inc. * * This file is part of GNUPG. * @@ -20,6 +20,11 @@ #ifndef G10_TTYIO_H #define G10_TTYIO_H +#ifdef HAVE_LIBREADLINE +#include +#include +#endif + const char *tty_get_ttyname (void); int tty_batchmode( int onoff ); #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 5 ) @@ -39,5 +44,15 @@ void tty_kill_prompt(void); int tty_get_answer_is_yes( const char *prompt ); int tty_no_terminal(int onoff); +#ifdef HAVE_LIBREADLINE +void tty_enable_completion(rl_completion_func_t *completer); +void tty_disable_completion(void); +#else +/* Use a macro to stub out these functions since a macro has no need + to typedef a "rl_completion_func_t" which would be undefined + without readline. */ +#define tty_enable_completion(x) +#define tty_disable_completion() +#endif #endif /*G10_TTYIO_H*/ diff --git a/util/ChangeLog b/util/ChangeLog index 4248b2508..52b9c317b 100644 --- a/util/ChangeLog +++ b/util/ChangeLog @@ -1,3 +1,9 @@ +2005-03-18 David Shaw + + * ttyio.c (tty_enable_completion, tty_disable_completion): Enable + and disable readline completion. + (init_ttyfp): Completion is disabled by default. + 2005-03-14 Werner Koch * miscutil.c (isotimestamp): New. diff --git a/util/ttyio.c b/util/ttyio.c index b7dd47173..5feab726e 100644 --- a/util/ttyio.c +++ b/util/ttyio.c @@ -165,6 +165,7 @@ init_ttyfp(void) #ifdef HAVE_LIBREADLINE rl_catch_signals = 0; rl_instream = rl_outstream = ttyfp; + rl_inhibit_completion = 1; #endif #endif #ifdef HAVE_TCGETATTR @@ -173,6 +174,25 @@ init_ttyfp(void) initialized = 1; } +#ifdef HAVE_LIBREADLINE +void +tty_enable_completion(rl_completion_func_t *completer) +{ + if( !initialized ) + init_ttyfp(); + rl_attempted_completion_function=completer; + rl_inhibit_completion=0; +} + +void +tty_disable_completion(void) +{ + if( !initialized ) + init_ttyfp(); + rl_inhibit_completion=1; +} +#endif + int tty_batchmode( int onoff ) {