From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23926 invoked by alias); 8 Oct 2018 08:24:22 -0000 Mailing-List: contact cygwin-help@cygwin.com; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner@cygwin.com Mail-Followup-To: cygwin@cygwin.com Received: (qmail 22284 invoked by uid 89); 8 Oct 2018 08:24:07 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_05,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.2 spammy=cygwin's, ole, cygwins, filed X-HELO: lb3-smtp-cloud9.xs4all.net Received: from lb3-smtp-cloud9.xs4all.net (HELO lb3-smtp-cloud9.xs4all.net) (194.109.24.30) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 08 Oct 2018 08:24:03 +0000 Received: from tmp.DhPi6EjnJG ([83.162.234.136]) by smtp-cloud9.xs4all.net with ESMTPSA id 9Qpbgmn33wD189Qpcg6h4E; Mon, 08 Oct 2018 10:24:01 +0200 Date: Mon, 08 Oct 2018 08:24:00 -0000 Message-ID: <4749b23a0374bf264ad46a0c7466e73e@smtp-cloud9.xs4all.net> From: Houder Reply-To: cygwin@cygwin.com To: cygwin@cygwin.com Subject: Re: grep < fifo fails References: <8100972155fcccd61852c0c9e48cd11b@smtp-cloud9.xs4all.net> In-Reply-to: <8100972155fcccd61852c0c9e48cd11b@smtp-cloud9.xs4all.net> Content-Type: text/plain; charset=UTF-8; format=fixed User-Agent: mua.awk 0.99 X-SW-Source: 2018-10/txt/msg00062.txt.bz2 On Fri, 05 Oct 2018 17:32:16, Houder wrote: > On Thu, 04 Oct 2018 18:02:03, Houder wrote: > > On Wed, 03 Oct 2018 20:46:11, Houder wrote: > > > On Wed, 3 Oct 2018 15:37:14, Ole Tange wrote: > > > > This works: > > > > > > > > $ mkfifo fifo > > > > $ echo > fifo & grep . fifo > > > > [1] 10232 > > > > [1]+ Done echo > fifo > > > > > > > > But this fails: > > > > > > > > $ echo > fifo & grep . < fifo > > > > [1] 11756 > > > > grep: (standard input): Invalid argument > > > > [1]+ Done echo > fifo > > > > > > > > I see the same behavior on MINGW, but I do not see the same behavior on GNU= > > > > /Linux. > > > > My apologies. Did not read your post as careful as I should have the first time. > > You are correct: grep is in error here. > > Filed this bug at bug-grep@gnu.org; it is filed under number 32943. > > - https://debbugs.gnu.org/cgi/bugreport.cgi?bug=32943 > grep fails on Cygwin because lseek() on Cygwin fails to recognize that it is applied to a FIFO. As result of that, it returns EINVAL in errno, where it should return ESPIPE. Receiving the wrong value in errno forces reset() (in src/grep.c) to return false, upon which grep fails. Before v2.27 of grep, a call to S_ISREG(st->st_mode) in reset() prevented the call of lseek() and made reset() return true. The call to S_ISREG() has been removed in v2.27 of grep. The solution would be either to correct Cygwin's executive or to insert a Cygwin-specific kludge in grep (in reset() ). Regards, Henri -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple