aboutsummaryrefslogtreecommitdiff
path: root/repos/core/busybox/lineedit-Handle-SIGWINCH-gracefully.patch
diff options
context:
space:
mode:
Diffstat (limited to 'repos/core/busybox/lineedit-Handle-SIGWINCH-gracefully.patch')
-rwxr-xr-xrepos/core/busybox/lineedit-Handle-SIGWINCH-gracefully.patch61
1 files changed, 0 insertions, 61 deletions
diff --git a/repos/core/busybox/lineedit-Handle-SIGWINCH-gracefully.patch b/repos/core/busybox/lineedit-Handle-SIGWINCH-gracefully.patch
deleted file mode 100755
index 43f48b12..00000000
--- a/repos/core/busybox/lineedit-Handle-SIGWINCH-gracefully.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 63bb934c9e48d3ba1dc7f8001d423ea84b9a00c2 Mon Sep 17 00:00:00 2001
-From: Marian Buschsieweke <marian.buschsieweke@ovgu.de>
-Date: Thu, 19 Jan 2023 17:18:18 +0100
-Subject: [PATCH] lineedit: Handle SIGWINCH gracefully
-
-Since 1.16.0 a resize of the terminal emulator resulted in ash printing
-a new command line. This fixes the issue by retrying read_key() in
-lineedit_read_key() on SIGWINCH, rendering reception of SIGWINCH
-transparent to callers of read_line_input().
-
-Fixes https://bugs.busybox.net/show_bug.cgi?id=15256
----
- libbb/lineedit.c | 11 +++++++++--
- 1 file changed, 9 insertions(+), 2 deletions(-)
-
-diff --git a/libbb/lineedit.c b/libbb/lineedit.c
-index d6b2e76ff..a47d9e508 100644
---- a/libbb/lineedit.c
-+++ b/libbb/lineedit.c
-@@ -2149,7 +2149,7 @@ static void cmdedit_setwidth(void)
- redraw((new_y >= cmdedit_y ? new_y : cmdedit_y), command_len - cursor);
- }
-
--static void win_changed(int nsig UNUSED_PARAM)
-+static void win_changed(int nsig)
- {
- if (S.ok_to_redraw) {
- /* We are in read_key(), safe to redraw immediately */
-@@ -2157,6 +2157,7 @@ static void win_changed(int nsig UNUSED_PARAM)
- cmdedit_setwidth();
- fflush_all();
- errno = sv_errno;
-+ bb_got_signal = nsig;
- } else {
- /* Signal main loop that redraw is necessary */
- S.SIGWINCH_count++;
-@@ -2186,7 +2187,9 @@ static int lineedit_read_key(char *read_key_buffer, int timeout)
- * Note: read_key sets errno to 0 on success.
- */
- for (;;) {
-- if ((state->flags & LI_INTERRUPTIBLE) && bb_got_signal) {
-+ if ((state->flags & LI_INTERRUPTIBLE) && bb_got_signal
-+ && (bb_got_signal != SIGWINCH)
-+ ) {
- errno = EINTR;
- return -1;
- }
-@@ -2197,6 +2200,10 @@ static int lineedit_read_key(char *read_key_buffer, int timeout)
- IF_FEATURE_EDITING_WINCH(S.ok_to_redraw = 0;)
- if (errno != EINTR)
- break;
-+ if (bb_got_signal == SIGWINCH) {
-+ bb_got_signal = 0;
-+ continue;
-+ }
- if (state->flags & LI_INTERRUPTIBLE) {
- /* LI_INTERRUPTIBLE bails out on EINTR,
- * but nothing really guarantees that bb_got_signal
---
-2.39.1
-