From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, T_SCC_BODY_TEXT_LINE,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 6366 invoked from network); 3 Mar 2022 09:39:44 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 3 Mar 2022 09:39:44 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1646300384; b=jVe9IeMvJ3sQcAWMp+BnDN+N+EyGf8YrQ9W1/iGUgY32c9SY+nKBP9aVBX6JMoa2B0CNtoU9Mr oT+41zKneBiTAoR45OMPg7aDFwz0/V0obys1s9LBlAekKsJO299SbH8CLwAQMW/A6kBpH188E2 NqXmDY8lyPJ7DSsB9iumKFHBve5EIoFYmorfoxusO3Y+r9Wj9zXJGamX5x02e6YBasuAdR1gMN hkcWV77aQSmzsgpotztCKZE7GVh8OdsTEpaijZv9o2xAmxu8j5RkDq8ot135WhhA42pAto+FcG 7wEiUTn6qORxRW9PocGTgQp5rKUKeFYF0FgSXnjuHZkFzQ==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (smtpq1.tb.ukmail.iss.as9143.net) smtp.remote-ip=212.54.57.96; dkim=pass header.d=ntlworld.com header.s=meg.feb2017 header.a=rsa-sha256; dmarc=pass header.from=ntlworld.com; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20210803; t=1646300384; bh=xiWn7BkCqirCadTOPE6D8DwANWRuvRgteYN7GrAyo6s=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject: References:In-Reply-To:Message-ID:To:From:Date:DKIM-Signature: DKIM-Signature; b=fXmxqkvzzWXjlnahm2j8q+9WCPdulMAzVU3xE2cAQuowQdXuS1TvMThhBfjy8FEZ4Fov6Py2y6 MyNVzum4Dke8W66q1VjrruABD8OwsT/RWXvHzmFN/lvgWHM6o4wYOr+i/HHuBjMLbTkwXUdiSW nDNOkMirvXKnqNPzbtMbSnhnLv9L+i6zmkU62QiCs6G3Pq7F0G6EUeCVQeh/Jx0wC6969NYSw2 NQUrLwgWVINpapA6ullYTkfDTzE8thxF8F9NsKut+Rl+Nb4Co/tPTrltL6HYDKOj/umKTWdly6 GqO+ntKCGGBRwNAoAc/oFwLwgsY2E+4jRMcnZlZlfWq4jA==; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org; s=rsa-20210803; h=List-Archive:List-Owner:List-Post:List-Unsubscribe: List-Subscribe:List-Help:List-Id:Sender:Content-Transfer-Encoding: Content-Type:MIME-Version:Subject:References:In-Reply-To:Message-ID:To:From: Date:Reply-To:Cc:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID; bh=G10dLQfZRDF1mmulNVRDfYPMJEUs8CqIdRjMSubTONM=; b=XWofQ7mjoE7rWphv70tb74ZNco TNHrPb5ce7z8BNM1h15Bd5tVGRIpyGFwH25garIDI9Mr3+deQ5erSZg+FJbPNb8YbHPIwv8zknubB Xyw2H5t9VM1R8/k+3HG2K39pFT9xzAGtH+pG3tUEE+mfiS5+q4d6GtLdyAFxavyguQO+RMEnxHUIU pOxaFUTZd3DFwUrQhHakj3d3d6xHtasJn4KYTe5/A8RFUHnRznPBoTYXZ9k4BrtyvYmnn3y//2PG8 d3KwmBgxoo7lY6vQd8rDGKcGAF30AbNWpjGuNqWoHo2xryl/pdzEA2XilQYHVOK7egAu27Hnhknde q81oHr1A==; Received: from authenticated user by zero.zsh.org with local id 1nPhvx-000PMg-Kj; Thu, 03 Mar 2022 09:39:41 +0000 Authentication-Results: zsh.org; iprev=pass (smtpq1.tb.ukmail.iss.as9143.net) smtp.remote-ip=212.54.57.96; dkim=pass header.d=ntlworld.com header.s=meg.feb2017 header.a=rsa-sha256; dmarc=pass header.from=ntlworld.com; arc=none Received: from smtpq1.tb.ukmail.iss.as9143.net ([212.54.57.96]:34138) by zero.zsh.org with esmtps (TLS1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1nPhvO-000P1i-Fr; Thu, 03 Mar 2022 09:39:07 +0000 Received: from [212.54.57.81] (helo=smtp2.tb.ukmail.iss.as9143.net) by smtpq1.tb.ukmail.iss.as9143.net with esmtp (Exim 4.90_1) (envelope-from ) id 1nPhvN-0006tG-Pi for zsh-workers@zsh.org; Thu, 03 Mar 2022 10:39:05 +0100 Received: from oxbe7.tb.ukmail.iss.as9143.net ([172.25.160.138]) by smtp2.tb.ukmail.iss.as9143.net with ESMTP id PhvNndbIlfHYvPhvNnh2Ur; Thu, 03 Mar 2022 10:39:05 +0100 X-Env-Mailfrom: p.w.stephenson@ntlworld.com X-Env-Rcptto: zsh-workers@zsh.org X-SourceIP: 172.25.160.138 X-CNFS-Analysis: v=2.4 cv=Wbkf1mtX c=1 sm=1 tr=0 ts=62208cb9 cx=a_exe a=fsVlV1GYKS3C/xnq+HX56g==:117 a=wbvTLvLwOfMA:10 a=IkcTkHD0fZMA:10 a=7H6ixmLU1AQA:10 a=20KFwNOVAAAA:8 a=Box14ztOUISBNmcZcqcA:9 a=QEXdDO2ut3YA:10 X-Authenticated-Sender: p.w.stephenson@ntlworld.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ntlworld.com; s=meg.feb2017; t=1646300345; bh=xiWn7BkCqirCadTOPE6D8DwANWRuvRgteYN7GrAyo6s=; h=Date:From:To:In-Reply-To:References:Subject; b=uQkgmV+eR2WytegVEtSqCTDUrKV/fhg4ZkGvQPB0xJDfzudowu/gMaXN7zhYxFRSY qde4xgLSuYTC5y69rrTPYj4YX6uG5SRAPV0tvQD6Ai9ZpSfPrNJYgif4+pMNwbF4RL wSEr/C75t7ylRb0U445D7XX9Z4h8fkZhbVzonucmf9mrMJecshS5EzvhnweUys0F5d 0BzL0YYwK5rNM3kBU1y4iAwmxSX3IJ2c/K0yFtcndwLgujAvox8bP78eUzMsjIrArH zFnam+Gkw5aC9WgDusNXzAynrO3Iw8ErXfUu9yDLTS3XWK3kZA4dIqZVcln1pYsQ3l UZKTV5dRYHmhg== Date: Thu, 3 Mar 2022 09:39:05 +0000 (GMT) From: Peter Stephenson To: Lyude Paul , zsh-workers@zsh.org Message-ID: <142189641.1163040.1646300345691@mail2.virginmedia.com> In-Reply-To: <5e9cdfc2b807bfc4aa4695938b70156742c2e120.camel@redhat.com> References: <5e9cdfc2b807bfc4aa4695938b70156742c2e120.camel@redhat.com> Subject: Re: Regression with stdin handling in non-interactive mode between 5.8 and 5.8.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Priority: 3 Importance: Medium X-Mailer: Open-Xchange Mailer v7.8.4-Rev72 X-Originating-IP: 147.161.167.85 X-Originating-Client: open-xchange-appsuite X-CMAE-Envelope: MS4xfGhBv6fET4Tko8GyAD4hS6MA+cIrtCRamht2hVGCY05P52CycDc4qBZ5IMbqfEXYUQdGnUY7V2QqidF5e8hFeIw2rLWjgG75yGTLL9o4KnyX6Cm3X8/X gpjicQIpirom9fj7IHk0GSZBqZ5GqwWw7Q7lGyU8HcsT6bY+fjOhEnCIF/h4rR6V10IArQKnD0nWJI9K3omKLxJhB/WTFOiOj7xEcBDkNndd2IlpSkJT6n68 +LdslnpsBwPjtsCDyETuPw== X-Seq: 49790 Archived-At: X-Loop: zsh-workers@zsh.org Errors-To: zsh-workers-owner@zsh.org Precedence: list Precedence: bulk Sender: zsh-workers-request@zsh.org X-no-archive: yes List-Id: List-Help: List-Subscribe: List-Unsubscribe: List-Post: List-Owner: List-Archive: > On 02 March 2022 at 22:38 Lyude Paul wrote: > > > Hi! I'm reporting this here because after some discussion in #zsh, it was > determined this is likely both a regression, and also isn't POSIX compliant. > Keep in mind I don't have as clear of an understanding of what's happening > below the hood here as I'd like, so I'm not 100% the subject line here is > correct. I've got plenty of examples to clarify though :) > > Basically, what seems to be happening is that since 5.8.1 zsh no longer seems > to correctly handle input from stdin unless the terminal is in interactive > mode. > > Here's a simple example script that demonstrates what I mean: > > printf '%s\n' 'echo Shell is $$' sh 'echo Shell is $$' | zsh > > Running on zsh 5.8 returns: > > Shell is 70 > Shell is 71 > > Running on zsh 5.8.1 however, returns: > > Shell is 86396 > Shell is 86396 Thanks for the nice simple test --- I'll try and concoct something similar but predictable for the shell tests. I hope it's as simple as the following. I can't think of any optimisation or a case where line buffering would be wrong. pws diff --git a/Src/input.c b/Src/input.c index caeaff0e3..50cd2cd78 100644 --- a/Src/input.c +++ b/Src/input.c @@ -223,13 +223,20 @@ shingetchar(void) return STOUC(*shinbufptr++); shinbufreset(); - do { + for (;;) { errno = 0; - nread = read(SHIN, shinbuffer, SHINBUFSIZE); - } while (nread < 0 && errno == EINTR); - if (nread <= 0) + nread = read(SHIN, shinbufendptr, 1); + if (nread > 0) { + /* Use line buffering (POSIX requirement) */ + if (*shinbufendptr++ == '\n') + break; + if (shinbufendptr == shinbuffer + SHINBUFSIZE) + break; + } else if (nread == 0 || errno != EINTR) + break; + } + if (shinbufendptr == shinbuffer) return -1; - shinbufendptr = shinbuffer + nread; return STOUC(*shinbufptr++); }