diff options
Diffstat (limited to 'system/pdksh/patches/109_mksh-delete_key.patch')
-rw-r--r-- | system/pdksh/patches/109_mksh-delete_key.patch | 115 |
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 */ |