diff options
Diffstat (limited to 'meta')
-rw-r--r-- | meta/recipes-core/readline/readline-6.2/readline-only-enable-meta-key-for-a-single-call-read.patch | 114 | ||||
-rw-r--r-- | meta/recipes-core/readline/readline_6.2.bb | 1 |
2 files changed, 115 insertions, 0 deletions
diff --git a/meta/recipes-core/readline/readline-6.2/readline-only-enable-meta-key-for-a-single-call-read.patch b/meta/recipes-core/readline/readline-6.2/readline-only-enable-meta-key-for-a-single-call-read.patch new file mode 100644 index 0000000000..ccfdb9f8c9 --- /dev/null +++ b/meta/recipes-core/readline/readline-6.2/readline-only-enable-meta-key-for-a-single-call-read.patch @@ -0,0 +1,114 @@ +readline: only enable meta key for a single call readline(). + +terminal.c + - change _rl_enable_meta_key to set a flag indicating that it sent the + enable-meta sequence + - _rl_disable_meta_key: new function to turn off meta mode after we + turned it on with _rl_enable_meta_key + +rlprivate.h + - extern declaration for _rl_disable_meta_key + +readline.c +- _rl_internal_teardown: add call to _rl_disable_meta_key to make the + meta key active only for the duration of the call to readline() +- _rl_internal_setup: move call to _rl_enable_meta_key here from + readline_initialize_everything so the meta key is active only for + the duration of the call to readline(). Suggestion from Miroslav + Lichvar <mlichvar@redhat.com> + +Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> +Upstream-Status: backport +Imported patch from: http://git.savannah.gnu.org/cgit/bash.git/tag/?id=bash-4.3-alpha +--- + readline.c | 12 ++++++++---- + rlprivate.h | 1 + + terminal.c | 19 ++++++++++++++++++- + 3 files changed, 27 insertions(+), 5 deletions(-) + +diff --git a/readline.c b/readline.c +--- a/readline.c ++++ b/readline.c +@@ -369,6 +369,11 @@ readline_internal_setup () + _rl_in_stream = rl_instream; + _rl_out_stream = rl_outstream; + ++ /* Enable the meta key only for the duration of readline(), if this ++ terminal has one. */ ++ if (_rl_enable_meta) ++ _rl_enable_meta_key (); ++ + if (rl_startup_hook) + (*rl_startup_hook) (); + +@@ -437,6 +442,9 @@ readline_internal_teardown (eof) + if (rl_undo_list) + rl_free_undo_list (); + ++ /* Disable the meta key, if this terminal has one. */ ++ _rl_disable_meta_key (); ++ + /* Restore normal cursor, if available. */ + _rl_set_insert_mode (RL_IM_INSERT, 0); + +@@ -1091,10 +1099,6 @@ readline_initialize_everything () + /* Try to bind a common arrow key prefix, if not already bound. */ + bind_arrow_keys (); + +- /* Enable the meta key, if this terminal has one. */ +- if (_rl_enable_meta) +- _rl_enable_meta_key (); +- + /* If the completion parser's default word break characters haven't + been set yet, then do so now. */ + if (rl_completer_word_break_characters == (char *)NULL) +diff --git a/rlprivate.h b/rlprivate.h +index 384ff67..be2c2c6 100644 +--- a/rlprivate.h ++++ b/rlprivate.h +@@ -339,6 +339,7 @@ extern int _rl_output_character_function PARAMS((int)); + extern void _rl_output_some_chars PARAMS((const char *, int)); + extern int _rl_backspace PARAMS((int)); + extern void _rl_enable_meta_key PARAMS((void)); ++extern void _rl_disable_meta_key PARAMS((void)); + extern void _rl_control_keypad PARAMS((int)); + extern void _rl_set_cursor PARAMS((int, int)); + +diff --git a/terminal.c b/terminal.c +index f8c2f6e..21ee031 100644 +--- a/terminal.c ++++ b/terminal.c +@@ -683,12 +683,29 @@ rl_ding () + /* */ + /* **************************************************************** */ + ++static int enabled_meta = 0; /* flag indicating we enabled meta mode */ ++ + void + _rl_enable_meta_key () + { + #if !defined (__DJGPP__) + if (term_has_meta && _rl_term_mm) +- tputs (_rl_term_mm, 1, _rl_output_character_function); ++ { ++ tputs (_rl_term_mm, 1, _rl_output_character_function); ++ enabled_meta = 1; ++ } ++#endif ++} ++ ++void ++_rl_disable_meta_key () ++{ ++#if !defined (__DJGPP__) ++ if (term_has_meta && _rl_term_mo && enabled_meta) ++ { ++ tputs (_rl_term_mo, 1, _rl_output_character_function); ++ enabled_meta = 0; ++ } + #endif + } + +-- +1.8.1.2 + diff --git a/meta/recipes-core/readline/readline_6.2.bb b/meta/recipes-core/readline/readline_6.2.bb index 45fa4e7f3e..87636da4e3 100644 --- a/meta/recipes-core/readline/readline_6.2.bb +++ b/meta/recipes-core/readline/readline_6.2.bb @@ -6,6 +6,7 @@ SRC_URI += "${GNU_MIRROR}/readline/readline-6.2-patches/readline62-001;name=patc ${GNU_MIRROR}/readline/readline-6.2-patches/readline62-002;name=patch2;apply=yes;striplevel=0 \ ${GNU_MIRROR}/readline/readline-6.2-patches/readline62-003;name=patch3;apply=yes;striplevel=0 \ ${GNU_MIRROR}/readline/readline-6.2-patches/readline62-004;name=patch4;apply=yes;striplevel=0 \ +file://readline-only-enable-meta-key-for-a-single-call-read.patch \ " SRC_URI[archive.md5sum] = "67948acb2ca081f23359d0256e9a271c" |