Mercurial > mxe-octave
annotate src/readline-0-006-fix-for-callback-signal-handlin.patch @ 7220:d3087afece14 default tip @
* src/gdal.mk, src/xcb.mk: disable doxygen docs
author | John Donoghue <john.donoghue@ieee.org> |
---|---|
date | Wed, 22 May 2024 10:31:54 -0400 |
parents | 142471155843 |
children |
rev | line source |
---|---|
6989
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
1 From 93a6afa50f953246f7c0f93b219a1e4010ba704b Mon Sep 17 00:00:00 2001 |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
2 From: Chet Ramey <chet.ramey@case.edu> |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
3 Date: Fri, 17 Nov 2023 16:05:13 -0500 |
7042
142471155843
readline: update to 8.2 patch level 10
Markus Mützel <markus.muetzel@gmx.de>
parents:
6989
diff
changeset
|
4 Subject: [PATCH 06/10] Readline-8.2 patch 6: fix for callback signal handling |
6989
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
5 when a signal arrives before readline calls rl_getc and handling it changes |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
6 callback state |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
7 |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
8 --- |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
9 input.c | 28 +++++++++++++++++++++++++++- |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
10 patchlevel | 2 +- |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
11 2 files changed, 28 insertions(+), 2 deletions(-) |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
12 |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
13 diff --git a/input.c b/input.c |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
14 index 68d418c..f68fcac 100644 |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
15 --- a/input.c |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
16 +++ b/input.c |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
17 @@ -804,7 +804,7 @@ rl_read_key (void) |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
18 int |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
19 rl_getc (FILE *stream) |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
20 { |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
21 - int result; |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
22 + int result, ostate, osig; |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
23 unsigned char c; |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
24 int fd; |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
25 #if defined (HAVE_PSELECT) || defined (HAVE_SELECT) |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
26 @@ -815,8 +815,22 @@ rl_getc (FILE *stream) |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
27 fd = fileno (stream); |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
28 while (1) |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
29 { |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
30 + osig = _rl_caught_signal; |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
31 + ostate = rl_readline_state; |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
32 + |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
33 RL_CHECK_SIGNALS (); |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
34 |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
35 +#if defined (READLINE_CALLBACKS) |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
36 + /* Do signal handling post-processing here, but just in callback mode |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
37 + for right now because the signal cleanup can change some of the |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
38 + callback state, and we need to either let the application have a |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
39 + chance to react or abort some current operation that gets cleaned |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
40 + up by rl_callback_sigcleanup(). If not, we'll just run through the |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
41 + loop again. */ |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
42 + if (osig != 0 && (ostate & RL_STATE_CALLBACK)) |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
43 + goto postproc_signal; |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
44 +#endif |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
45 + |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
46 /* We know at this point that _rl_caught_signal == 0 */ |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
47 |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
48 #if defined (__MINGW32__) |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
49 @@ -880,6 +894,9 @@ rl_getc (FILE *stream) |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
50 /* fprintf(stderr, "rl_getc: result = %d errno = %d\n", result, errno); */ |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
51 |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
52 handle_error: |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
53 + osig = _rl_caught_signal; |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
54 + ostate = rl_readline_state; |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
55 + |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
56 /* If the error that we received was EINTR, then try again, |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
57 this is simply an interrupted system call to read (). We allow |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
58 the read to be interrupted if we caught SIGHUP, SIGTERM, or any |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
59 @@ -920,8 +937,17 @@ handle_error: |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
60 RL_CHECK_SIGNALS (); |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
61 #endif /* SIGALRM */ |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
62 |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
63 +postproc_signal: |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
64 + /* POSIX says read(2)/pselect(2)/select(2) don't return EINTR for any |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
65 + reason other than being interrupted by a signal, so we can safely |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
66 + call the application's signal event hook. */ |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
67 if (rl_signal_event_hook) |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
68 (*rl_signal_event_hook) (); |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
69 +#if defined (READLINE_CALLBACKS) |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
70 + else if (osig == SIGINT && (ostate & RL_STATE_CALLBACK) && (ostate & (RL_STATE_ISEARCH|RL_STATE_NSEARCH|RL_STATE_NUMERICARG))) |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
71 + /* just these cases for now */ |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
72 + _rl_abort_internal (); |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
73 +#endif |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
74 } |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
75 } |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
76 |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
77 diff --git a/patchlevel b/patchlevel |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
78 index e0ba09d..6ebd6a5 100644 |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
79 --- a/patchlevel |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
80 +++ b/patchlevel |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
81 @@ -1,3 +1,3 @@ |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
82 # Do not edit -- exists only for use by patch |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
83 |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
84 -5 |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
85 +6 |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
86 -- |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
87 2.38.0.windows.1 |
5f2c92da4d9c
readline: update to 8.1 patch level 7
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
88 |