From e2e6f6fe07049f33cb6348780fa975162752e421 Mon Sep 17 00:00:00 2001 From: Adrian Dudau Date: Thu, 12 Dec 2013 13:38:32 +0100 Subject: initial commit of Enea Linux 3.1 Migrated from the internal git server on the dora-enea branch Signed-off-by: Adrian Dudau --- ...ly-enable-meta-key-for-a-single-call-read.patch | 114 +++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 meta/recipes-core/readline/readline-6.2/readline-only-enable-meta-key-for-a-single-call-read.patch (limited to 'meta/recipes-core/readline/readline-6.2/readline-only-enable-meta-key-for-a-single-call-read.patch') 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 + +Signed-off-by: Hongxu Jia +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 + -- cgit v1.2.3-54-g00ecf