]>
Commit | Line | Data |
---|---|---|
1 | BASH PATCH REPORT | |
2 | ================= | |
3 | ||
4 | Bash-Release: 4.2 | |
5 | Patch-ID: bash42-008 | |
6 | ||
7 | Bug-Reported-by: Doug McMahon <mc2man@optonline.net> | |
8 | Bug-Reference-ID: <1299441211.2535.11.camel@doug-XPS-M1330> | |
9 | Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2011-03/msg00050.html | |
10 | ||
11 | Bug-Description: | |
12 | ||
13 | Bash-4.2 does not attempt to save the shell history on receipt of a | |
14 | terminating signal that is handled synchronously. Unfortunately, the | |
15 | `close' button on most X11 terminal emulators sends SIGHUP, which | |
16 | kills the shell. | |
17 | ||
18 | This is a very small patch to save the history in the case that an | |
19 | interactive shell receives a SIGHUP or SIGTERM while in readline and | |
20 | reading a command. | |
21 | ||
22 | The next version of bash will do this differently. | |
23 | ||
24 | Patch (apply with `patch -p0'): | |
25 | ||
26 | *** ../bash-4.2-patched/sig.c Tue Nov 23 08:21:22 2010 | |
27 | --- sig.c Tue Mar 8 21:28:32 2011 | |
28 | *************** | |
29 | *** 47,50 **** | |
30 | --- 47,51 ---- | |
31 | #if defined (READLINE) | |
32 | # include "bashline.h" | |
33 | + # include <readline/readline.h> | |
34 | #endif | |
35 | ||
36 | *************** | |
37 | *** 63,66 **** | |
38 | --- 64,68 ---- | |
39 | extern int history_lines_this_session; | |
40 | #endif | |
41 | + extern int no_line_editing; | |
42 | ||
43 | extern void initialize_siglist (); | |
44 | *************** | |
45 | *** 506,510 **** | |
46 | #if defined (HISTORY) | |
47 | /* XXX - will inhibit history file being written */ | |
48 | ! history_lines_this_session = 0; | |
49 | #endif | |
50 | terminate_immediately = 0; | |
51 | --- 508,515 ---- | |
52 | #if defined (HISTORY) | |
53 | /* XXX - will inhibit history file being written */ | |
54 | ! # if defined (READLINE) | |
55 | ! if (interactive_shell == 0 || interactive == 0 || (sig != SIGHUP && sig != SIGTERM) || no_line_editing || (RL_ISSTATE (RL_STATE_READCMD) == 0)) | |
56 | ! # endif | |
57 | ! history_lines_this_session = 0; | |
58 | #endif | |
59 | terminate_immediately = 0; | |
60 | *** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010 | |
61 | --- patchlevel.h Thu Feb 24 21:41:34 2011 | |
62 | *************** | |
63 | *** 26,30 **** | |
64 | looks for to find the patch level (for the sccs version string). */ | |
65 | ||
66 | ! #define PATCHLEVEL 7 | |
67 | ||
68 | #endif /* _PATCHLEVEL_H_ */ | |
69 | --- 26,30 ---- | |
70 | looks for to find the patch level (for the sccs version string). */ | |
71 | ||
72 | ! #define PATCHLEVEL 8 | |
73 | ||
74 | #endif /* _PATCHLEVEL_H_ */ |