BASH PATCH REPORT ================= Bash-Release: 4.3 Patch-ID: bash43-019 Bug-Reported-by: John Lenton Bug-Reference-ID: Bug-Reference-URL: https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1317476 Bug-Description: The -t timeout option to `read' does not work when the -e option is used. Patch (apply with `patch -p0'): --- a/lib/readline/input.c +++ b/lib/readline/input.c @@ -534,8 +534,16 @@ rl_getc (stream) return (RL_ISSTATE (RL_STATE_READCMD) ? READERR : EOF); else if (_rl_caught_signal == SIGHUP || _rl_caught_signal == SIGTERM) return (RL_ISSTATE (RL_STATE_READCMD) ? READERR : EOF); + /* keyboard-generated signals of interest */ else if (_rl_caught_signal == SIGINT || _rl_caught_signal == SIGQUIT) RL_CHECK_SIGNALS (); + /* non-keyboard-generated signals of interest */ + else if (_rl_caught_signal == SIGALRM +#if defined (SIGVTALRM) + || _rl_caught_signal == SIGVTALRM +#endif + ) + RL_CHECK_SIGNALS (); if (rl_signal_event_hook) (*rl_signal_event_hook) (); --- a/builtins/read.def +++ b/builtins/read.def @@ -442,7 +442,10 @@ read_builtin (list) add_unwind_protect (reset_alarm, (char *)NULL); #if defined (READLINE) if (edit) - add_unwind_protect (reset_attempted_completion_function, (char *)NULL); + { + add_unwind_protect (reset_attempted_completion_function, (char *)NULL); + add_unwind_protect (bashline_reset_event_hook, (char *)NULL); + } #endif falarm (tmsec, tmusec); } @@ -1021,6 +1024,7 @@ edit_line (p, itext) old_attempted_completion_function = rl_attempted_completion_function; rl_attempted_completion_function = (rl_completion_func_t *)NULL; + bashline_set_event_hook (); if (itext) { old_startup_hook = rl_startup_hook; @@ -1032,6 +1036,7 @@ edit_line (p, itext) rl_attempted_completion_function = old_attempted_completion_function; old_attempted_completion_function = (rl_completion_func_t *)NULL; + bashline_reset_event_hook (); if (ret == 0) return ret; --- a/patchlevel.h +++ b/patchlevel.h @@ -25,6 +25,6 @@ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh looks for to find the patch level (for the sccs version string). */ -#define PATCHLEVEL 18 +#define PATCHLEVEL 19 #endif /* _PATCHLEVEL_H_ */