summaryrefslogtreecommitdiffstats
path: root/contrib/patch.slang-1.2.2.keypad.1
diff options
context:
space:
mode:
authorThomas Roessler <roessler@does-not-exist.org>1998-10-03 22:04:35 +0000
committerThomas Roessler <roessler@does-not-exist.org>1998-10-03 22:04:35 +0000
commitf852f40fd265d3981a0cf7ec931572a5b070053c (patch)
tree520b3f6d402c7f117bd57c4c4a73d5b71b9cab05 /contrib/patch.slang-1.2.2.keypad.1
parent533ff8e263b3ede5f2a8f450cad3e34a34a341c6 (diff)
Source tree and make process changes. make dist and make
maintainer-clean should now work as they are supposed to.
Diffstat (limited to 'contrib/patch.slang-1.2.2.keypad.1')
-rw-r--r--contrib/patch.slang-1.2.2.keypad.176
1 files changed, 76 insertions, 0 deletions
diff --git a/contrib/patch.slang-1.2.2.keypad.1 b/contrib/patch.slang-1.2.2.keypad.1
new file mode 100644
index 00000000..93df4d72
--- /dev/null
+++ b/contrib/patch.slang-1.2.2.keypad.1
@@ -0,0 +1,76 @@
+diff -ur slang.old/src/slcurses.c slang/src/slcurses.c
+--- slang.old/src/slcurses.c Fri Apr 24 09:16:46 1998
++++ slang/src/slcurses.c Sat Jul 4 07:30:31 1998
+@@ -134,7 +134,10 @@
+ }
+ else if (ch == 0xFFFF) return ERR;
+ SLang_ungetkey (ch);
+- return SLkp_getkey ();
++ if ((ch = SLkp_getkey ()) != SL_KEY_ERR)
++ return ch;
++ else
++ return SLang_getkey ();
+ }
+ return SLang_getkey ();
+ }
+diff -ur slang.old/src/slkeymap.c slang/src/slkeymap.c
+--- slang.old/src/slkeymap.c Fri Apr 24 09:16:47 1998
++++ slang/src/slkeymap.c Sat Jul 4 07:41:42 1998
+@@ -343,6 +343,8 @@
+
+ SLang_Key_Type *SLang_do_key(SLKeyMap_List_Type *kml, int (*getkey)(void))
+ {
++ unsigned char SLang_Undo_Buffer [SL_MAX_INPUT_BUFFER_LEN];
++ int SLang_Undo_Len = 0;
+ register SLang_Key_Type *key, *next, *kmax;
+ unsigned int len;
+ unsigned char input_ch;
+@@ -356,6 +358,7 @@
+ return NULL;
+
+ input_ch = (unsigned char) SLang_Last_Key_Char;
++ SLang_Undo_Buffer [SLang_Undo_Len++] = input_ch;
+
+ key = (SLang_Key_Type *) &((kml->keymap)[input_ch]);
+
+@@ -372,7 +375,11 @@
+
+ key = kml->keymap + input_ch;
+ if (key->type == 0)
++ {
++ if (getkey == (int (*)(void)) SLang_getkey)
++ SLang_ungetkey_string (SLang_Undo_Buffer, SLang_Undo_Len);
+ return NULL;
++ }
+ }
+
+ /* It appears to be a prefix character in a key sequence. */
+@@ -385,6 +392,7 @@
+ {
+ SLang_Key_TimeOut_Flag = 1;
+ SLang_Last_Key_Char = (*getkey)();
++ SLang_Undo_Buffer [SLang_Undo_Len++] = (unsigned char) SLang_Last_Key_Char;
+ SLang_Key_TimeOut_Flag = 0;
+
+ len++;
+@@ -458,6 +466,8 @@
+ kmax = next;
+ }
+
++ if (getkey == (int (*)(void)) SLang_getkey)
++ SLang_ungetkey_string (SLang_Undo_Buffer, SLang_Undo_Len);
+ return NULL;
+ }
+
+diff -ur slang.old/src/slkeypad.c slang/src/slkeypad.c
+--- slang.old/src/slkeypad.c Fri Apr 24 09:16:47 1998
++++ slang/src/slkeypad.c Sat Jul 4 07:30:31 1998
+@@ -110,7 +110,7 @@
+ key = SLang_do_key (Keymap_List, (int (*)(void)) SLang_getkey);
+ if ((key == NULL) || (key->type != SLKEY_F_KEYSYM))
+ {
+- SLang_flush_input ();
++ /* SLang_flush_input (); */
+ return SL_KEY_ERR;
+ }
+