]> granicus.if.org Git - mutt/commitdiff
This patch redoes yesterday's unbuffered input patch. Now it uses a
authorBrendan Cully <brendan@kublai.com>
Wed, 16 Jul 2003 11:17:31 +0000 (11:17 +0000)
committerBrendan Cully <brendan@kublai.com>
Wed, 16 Jul 2003 11:17:31 +0000 (11:17 +0000)
pseudo-option, which means less mess to carry down the call stack.
It also made it much easier to have the SSL certificate menu be
unbuffered, which it is now. So push commands won't annoy you when
entering passwords or accepting certificates.

curs_lib.c
enter.c
keymap.c
keymap.h
mutt.h
mutt_curses.h
mutt_ssl.c

index 5f5247c3a04a1812813dfc53f1231724599834b7..ff97d316b2d05d854c932b427ba2a14d7dd74fa3 100644 (file)
@@ -57,12 +57,12 @@ void mutt_refresh (void)
   refresh ();
 }
 
-event_t _mutt_getch (int flags)
+event_t mutt_getch (void)
 {
   int ch;
   event_t err = {-1, OP_NULL }, ret;
 
-  if (!(flags & M_KM_UNBUFFERED) && UngetCount)
+  if (!option(OPTUNBUFFEREDINPUT) && UngetCount)
     return (KeyEvent[--UngetCount]);
 
   SigInt = 0;
@@ -125,7 +125,9 @@ int mutt_get_password (char *msg, char *buf, size_t buflen)
   
   CLEARLINE (LINES-1);
   addstr (msg);
+  set_option (OPTUNBUFFEREDINPUT);
   rc = mutt_enter_string (buf, buflen, LINES - 1, mutt_strlen (msg), M_PASS);
+  unset_option (OPTUNBUFFEREDINPUT);
   CLEARLINE (LINES-1);
   return (rc);
 }
diff --git a/enter.c b/enter.c
index b96eadb279bbd25aa1f94be0187a60834f689710..bd436ba5c0c34b39d5a9c6060aee686946172544 100644 (file)
--- a/enter.c
+++ b/enter.c
@@ -256,7 +256,7 @@ int _mutt_enter_string (char *buf, size_t buflen, int y, int x,
     }
     mutt_refresh ();
 
-    if ((ch = _km_dokey (MENU_EDITOR, pass ? M_KM_UNBUFFERED : 0)) == -1)
+    if ((ch = km_dokey (MENU_EDITOR)) == -1)
     {
       rv = -1; 
       goto bye;
index f81af2b59cbeea0bf917ad169d6976bf4f9569de..6fa4729ecb626306c757f5cce0b9eefa9c41fa33 100644 (file)
--- a/keymap.c
+++ b/keymap.c
@@ -357,7 +357,7 @@ static int retry_generic (int menu, keycode_t *keys, int keyslen, int lastkey)
  *     OP_NULL         no function bound to key sequence
  *     -1              error occured while reading input
  */
-int _km_dokey (int menu, int flags)
+int km_dokey (int menu)
 {
   event_t tmp;
   struct keymap_t *map = Keymaps[menu];
@@ -374,7 +374,7 @@ int _km_dokey (int menu, int flags)
     if (menu != MENU_EDITOR)
       timeout ((Timeout > 0 ? Timeout : 60) * 1000);
 
-    tmp = _mutt_getch(flags);
+    tmp = mutt_getch();
 
     if (menu != MENU_EDITOR)
       timeout (-1); /* restore blocking operation */
index 392910a5db7ceee43447102f152bde18878fc013..bdbafae63c9f9bddc84f71d6c339099da36bcbb2 100644 (file)
--- a/keymap.h
+++ b/keymap.h
@@ -27,8 +27,7 @@ typedef short keycode_t;
 
 void km_bind (char *, int, int, char *, char *);
 void km_bindkey (char *, int, int);
-#define km_dokey(menu) _km_dokey(menu, 0)
-int _km_dokey (int, int);
+int km_dokey (int);
 
 /* entry in the keymap tree */
 struct keymap_t
diff --git a/mutt.h b/mutt.h
index d21d107e8c17b2669829c7e1ce0bc6ab37f3eddc..f708d091afe5155bc1f096d52a1f09a1a053794a 100644 (file)
--- a/mutt.h
+++ b/mutt.h
@@ -478,6 +478,7 @@ enum
   OPTREDRAWTREE,       /* (pseudo) redraw the thread tree */
   OPTPGPCHECKTRUST,    /* (pseudo) used by pgp_select_key () */
   OPTDONTHANDLEPGPKEYS,        /* (pseudo) used to extract PGP keys */
+  OPTUNBUFFEREDINPUT,   /* (pseudo) don't use key buffer */
 
   OPTMAX
 };
index 96668327f6880c5110a1ea5a60c3f52be67b61dd..b7b1a828950e35a3cf330b7de3f93ad14b5447a5 100644 (file)
@@ -87,8 +87,7 @@ void mutt_curs_set (int);
 #define CI_is_return(c) ((c) == '\r' || (c) == '\n')
 #endif
 
-#define mutt_getch() _mutt_getch(0)
-event_t _mutt_getch (int);
+event_t mutt_getch (void);
 
 void mutt_endwin (const char *);
 void mutt_flushinp (void);
index d5add0fefdfee08b1e92c7fc6df383487ccf97e5..289015afe114c2492f355a8e23511d7ee87dcc87 100644 (file)
@@ -629,6 +629,7 @@ static int ssl_check_certificate (sslsockdata * data)
   menu->help = helpstr;
 
   done = 0;
+  set_option(OPTUNBUFFEREDINPUT);
   while (!done)
   {
     switch (mutt_menuLoop (menu))
@@ -662,6 +663,7 @@ static int ssl_check_certificate (sslsockdata * data)
         break;
     }
   }
+  unset_option(OPTUNBUFFEREDINPUT);
   mutt_menuDestroy (&menu);
   return (done == 2);
 }