From 69e29378915d53655d8fa8dc181b6cf526754569 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Fri, 11 Feb 2022 19:51:52 +0100 Subject: [PATCH] fix(updater): fix input check on non-interactive runs Reference: https://www.zsh.org/mla/users/2022/msg00067.html --- tools/check_for_upgrade.sh | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/tools/check_for_upgrade.sh b/tools/check_for_upgrade.sh index 33f30c85a..a36aecb84 100644 --- a/tools/check_for_upgrade.sh +++ b/tools/check_for_upgrade.sh @@ -95,13 +95,21 @@ function has_typed_input() { emulate -L zsh zmodload zsh/zselect + # Back up stty settings prior to disabling canonical mode + # Consider that no input can be typed if stty fails + # (this might happen if stdin is not a terminal) + local termios + termios=$(stty --save 2>/dev/null) || return 1 { - local termios=$(stty --save) + # Disable canonical mode so that typed input counts + # regardless of whether Enter was pressed stty -icanon + # Poll stdin (fd 0) for data ready to be read zselect -t 0 -r 0 return $? } always { + # Restore stty settings stty $termios } }