* ttyio.c (tty_enable_completion, tty_disable_completion): Enable and
authorDavid Shaw <dshaw@jabberwocky.com>
Fri, 18 Mar 2005 20:17:38 +0000 (20:17 +0000)
committerDavid Shaw <dshaw@jabberwocky.com>
Fri, 18 Mar 2005 20:17:38 +0000 (20:17 +0000)
disable readline completion. (init_ttyfp): Completion is disabled by
default.

include/ChangeLog
include/ttyio.h
util/ChangeLog
util/ttyio.c

index dcd72c1..d922d6e 100644 (file)
@@ -1,3 +1,8 @@
+2005-03-18  David Shaw  <dshaw@jabberwocky.com>
+
+       * ttyio.h: Prototype tty_enable_completion(), and
+       tty_disable_completion().
+
 2005-02-09  David Shaw  <dshaw@jabberwocky.com>
 
        * cipher.h: Add a flag for a symmetric DEK.
index f3d83b9..85a7100 100644 (file)
@@ -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.
  *
 #ifndef G10_TTYIO_H
 #define G10_TTYIO_H
 
+#ifdef HAVE_LIBREADLINE
+#include <stdio.h>
+#include <readline/readline.h>
+#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*/
index 4248b25..52b9c31 100644 (file)
@@ -1,3 +1,9 @@
+2005-03-18  David Shaw  <dshaw@jabberwocky.com>
+
+       * 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  <wk@g10code.com>
 
        * miscutil.c (isotimestamp): New.
index b7dd471..5feab72 100644 (file)
@@ -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 )
 {