summaryrefslogtreecommitdiff
path: root/system/pdksh/patches/109_mksh-delete_key.patch
diff options
context:
space:
mode:
Diffstat (limited to 'system/pdksh/patches/109_mksh-delete_key.patch')
-rw-r--r--system/pdksh/patches/109_mksh-delete_key.patch115
1 files changed, 0 insertions, 115 deletions
diff --git a/system/pdksh/patches/109_mksh-delete_key.patch b/system/pdksh/patches/109_mksh-delete_key.patch
deleted file mode 100644
index b061758114..0000000000
--- a/system/pdksh/patches/109_mksh-delete_key.patch
+++ /dev/null
@@ -1,115 +0,0 @@
-Patch from mksh to make delete key work (closes: #190566)
-Index: pdksh-5.2.14/emacs.c
-===================================================================
---- pdksh-5.2.14.orig/emacs.c 2009-09-15 20:59:29.000000000 +0200
-+++ pdksh-5.2.14/emacs.c 2009-09-15 21:06:50.000000000 +0200
-@@ -327,6 +327,26 @@
- { XFUNC_next_com, 2, 'B' },
- { XFUNC_mv_forw, 2, 'C' },
- { XFUNC_mv_back, 2, 'D' },
-+ /* These for ansi arrow keys: arguablely shouldn't be here by
-+ * default, but its simpler/faster/smaller than using termcap
-+ * entries.
-+ */
-+ { XFUNC_meta2, 1, '[' },
-+ { XFUNC_meta2, 1, 'O' },
-+ { XFUNC_prev_com, 2, 'A' },
-+ { XFUNC_next_com, 2, 'B' },
-+ { XFUNC_mv_forw, 2, 'C' },
-+ { XFUNC_mv_back, 2, 'D' },
-+ { XFUNC_mv_begin | 0x80, 2, '1' },
-+ { XFUNC_mv_begin | 0x80, 2, '7' },
-+ { XFUNC_mv_begin, 2, 'H' },
-+ { XFUNC_mv_end | 0x80, 2, '4' },
-+ { XFUNC_mv_end | 0x80, 2, '8' },
-+ { XFUNC_mv_end, 2, 'F' },
-+ { XFUNC_del_char | 0x80, 2, '3' },
-+ { XFUNC_prev_com | 0x80, 2, '5' },
-+ { XFUNC_next_com | 0x80, 2, '6' },
-+
- };
-
- int
-@@ -371,7 +391,14 @@
- return 0;
-
- f = x_curprefix == -1 ? XFUNC_insert
-- : x_tab[x_curprefix][c&CHARMASK];
-+ : x_tab[x_curprefix][c&CHARMASK] ;
-+
-+ if (f & 0x80) {
-+ f &= 0x7F;
-+ if ((i = x_e_getc()) != '~')
-+ x_e_ungetc(i);
-+ }
-+
-
- if (!(x_ftab[f].xf_flags & XF_PREFIX)
- && x_last_command != XFUNC_set_arg)
-@@ -1385,6 +1412,7 @@
- x_print(prefix, key)
- int prefix, key;
- {
-+ int f = x_tab[prefix][key];
- if (prefix == 1)
- shprintf("%s", x_mapout(x_prefix1));
- if (prefix == 2)
-@@ -1393,9 +1421,9 @@
- if (prefix == 3)
- shprintf("%s", x_mapout(x_prefix3));
- #endif /* OS2 */
-- shprintf("%s = ", x_mapout(key));
-- if (x_tab[prefix][key] != XFUNC_ins_string)
-- shprintf("%s\n", x_ftab[x_tab[prefix][key]].xf_name);
-+ shprintf("%s%s = ", x_mapout(key), (f & 0x80) ? "~" : "");
-+ if ((f & 0x7F) != XFUNC_ins_string)
-+ shprintf("%s\n", x_ftab[f & 0x7F].xf_name);
- else
- shprintf("'%s'\n", x_atab[prefix][key]);
- }
-@@ -1410,6 +1438,7 @@
- int prefix, key;
- char *sp = NULL;
- char *m1, *m2;
-+ char hastilde;
-
- if (x_tab == NULL) {
- bi_errorf("cannot bind, not a tty");
-@@ -1437,7 +1466,7 @@
- return 0;
- }
-
-- m1 = x_mapin(a1);
-+ m2 = m1 = x_mapin(a1);
- prefix = key = 0;
- for (;; m1++) {
- key = *m1 & CHARMASK;
-@@ -1453,6 +1482,19 @@
- break;
- }
-
-+ if (*++m1 && ((*m1 != '~') || *(m1+1))) {
-+ char msg[256] = "key sequence '";
-+ const char *c = a1;
-+ m1 = msg + strlen(msg);
-+ while (*c && m1 < (msg + sizeof(msg) - 3))
-+ strcat(msg, x_mapout(*c++));
-+ bi_errorf("%s' too long", msg);
-+ return (1);
-+ }
-+
-+ hastilde = *m1;
-+ afree(m2, ATEMP);
-+
- if (a2 == NULL) {
- x_print(prefix, key);
- return 0;
-@@ -1483,7 +1525,7 @@
-
- if (x_tab[prefix][key] == XFUNC_ins_string && x_atab[prefix][key])
- afree((void *)x_atab[prefix][key], AEDIT);
-- x_tab[prefix][key] = f;
-+ x_tab[prefix][key] = f | (hastilde ? 0x80 : 0);
- x_atab[prefix][key] = sp;
-
- /* Track what the user has bound so x_emacs_keys() won't toast things */