]> git.deb.at Git - pkg/abook.git/blobdiff - abook_rl.c
workarounds for readline problems
[pkg/abook.git] / abook_rl.c
index 43ab31a0fe7d45323a6d06c6834e334c9a9aace2..ff59db4685b9e3e4d18526597192bcda54c14f39 100644 (file)
@@ -12,6 +12,9 @@
 #include "abook.h"
 #include "abook_rl.h"
 
+#define KEYPAD_HACK 1 /* enable a keypad hack */
+#define CBREAK_HACK 1 /* enable cbreak hack */
+
 #ifdef HAVE_CONFIG_H
 #      include "config.h"
 #endif
@@ -118,11 +121,22 @@ abook_readline(WINDOW *w, int y, int x, char *s, int limit, bool use_completion)
        if(s && *s)
                add_history(s);
        
+#ifdef KEYPAD_HACK
+       keypad(w, FALSE);
+#endif
+#ifdef CBREAK_HACK
+       nocbreak();
+#endif
        ret = readline(NULL);
+#ifdef CBREAK_HACK
+       cbreak();
+#endif
+#ifdef KEYPAD_HACK
+       keypad(w, TRUE);
+#endif
 
-       if(rl_cancelled) {
-               if(ret)
-                       free(ret);
+       if(rl_cancelled && ret) {
+               free(ret);
                ret = NULL;
        }