X-Recipient: archive-cygwin AT delorie DOT com DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 18011394EC17 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cygwin.com; s=default; t=1613292280; bh=YVwmEpx5ZCJYmTrglFMIrGcLldRbg2/K7QwtrkorrpU=; h=Date:To:Subject:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=JoA1KMFBkz9LSC8xZV1NAtNtYOwX6wFzZqVVbo2KZPOLR39qD8+cjuAS45I4qivoP byhiQuE8C1hdg3xOJ2ohJO2ln8VK0c4qPJ+tPOR/f924advk+Nv5RwZwzlvjFX7H+1 qOIAguLisO9CMsQKrH9EpOFl6JyyR0utR3AMK+iM= X-Original-To: cygwin AT cygwin DOT com Delivered-To: cygwin AT cygwin DOT com DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 25FEC394EC17 DKIM-Filter: OpenDKIM Filter v2.10.3 conssluserg-04.nifty.com 11E8hwjp031104 X-Nifty-SrcIP: [118.243.85.178] Date: Sun, 14 Feb 2021 17:43:58 +0900 To: cygwin AT cygwin DOT com Subject: Re: Cygwin doesn't handle SIGWINCH properly in Windows Terminal Message-Id: <20210214174358.f828f285a566846254c3c54a@nifty.ne.jp> In-Reply-To: References: X-Mailer: Sylpheed 3.7.0 (GTK+ 2.24.30; i686-pc-mingw32) Mime-Version: 1.0 X-Spam-Status: No, score=-3.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, NICE_REPLY_A, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: cygwin AT cygwin DOT com X-Mailman-Version: 2.1.29 Precedence: list List-Id: General Cygwin discussions and problem reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Takashi Yano via Cygwin Reply-To: Takashi Yano Cc: Alvin Seville Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: cygwin-bounces AT cygwin DOT com Sender: "Cygwin" On Sat, 13 Feb 2021 20:39:39 +1000 Alvin Seville wrote: > Windows build number: Win32NT 10.0.19042.0 Microsoft Windows NT 10.0.19042.0 > Windows Terminal version (if applicable): 1.5.10271.0 > > Script to reproduce this issue: > > #!/usr/bin/env bashfunction outputText() > { > local text=$1 > local -i textLength=${#text} > > local -i line="$(tput lines) / 2" > local -i col="$(tput cols) / 2 - $textLength / 2" > > clear > echo -en "\e[$line;${col}H$text" > } > trap "outputText 'Hello world!'" SIGWINCH > > outputText 'Hello world!'while truedo > :done This is because cygwin console handles SIGWINCH when the input messages is processed. If the process does not call either read() or select(), SIGWINCH will not be sent. This is the long standing problem of the implementation and hard to fix. Therefore, I expect the following code should work, however I have noticed it does not. #!/usr/bin/env bash function outputText() { local text=$1 local -i textLength=${#text} local -i line="$(tput lines) / 2" local -i col="$(tput cols) / 2 - $textLength / 2" clear echo -en "\e[$line;${col}H$text" } trap "outputText 'Hello world!'" SIGWINCH outputText 'Hello world!' while true do read # <- Call read here done This seems to be a bug of console code. I will submit a patch for this issue. -- Takashi Yano -- Problem reports: https://cygwin.com/problems.html FAQ: https://cygwin.com/faq/ Documentation: https://cygwin.com/docs.html Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple