X-Spam-Check-By: sourceware.org Date: Fri, 1 Sep 2006 10:47:13 -0700 From: clayne AT anodized DOT com To: cygwin AT cygwin DOT com Subject: Re: cygwin fork() Message-ID: <20060901174713.GE30633@ns1.anodized.com> References: <20060901100138 DOT GA7444 AT ns1 DOT anodized DOT com> <20060901153709 DOT GC7663 AT ns1 DOT anodized DOT com> <20060901155403 DOT GE5926 AT trixie DOT casa DOT cgf DOT cx> <20060901160911 DOT GA30633 AT ns1 DOT anodized DOT com> <20060901163415 DOT GB30633 AT ns1 DOT anodized DOT com> <20060901170451 DOT GC30633 AT ns1 DOT anodized DOT com> <20060901172457 DOT GA10511 AT trixie DOT casa DOT cgf DOT cx> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20060901172457.GA10511@trixie.casa.cgf.cx> User-Agent: Mutt/1.5.11 X-Assp-Spam-Prob: 0.00000 X-Assp-Whitelisted: Yes X-Assp-Envelope-From: clayne AT ns1 DOT anodized DOT com X-Assp-Intended-For: cygwin AT cygwin DOT com X-IsSubscribed: yes Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm Precedence: bulk List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com On Fri, Sep 01, 2006 at 01:24:57PM -0400, Christopher Faylor wrote: > >In regards to setting the fd to textmode as a way of stripping CRs. > >Only problem is that it's making 213,110 syscalls for a 213k libtool > >script. That cannot be an efficient way to remove CRs from input. > > Opening a file with O_TEXT should not, AFAIK, cause a bunch of one-byte > reads. > > A simple test case (tm) seems to confirm that. > > cgf You're right. I also verified this. I found the real culprit, which I had also ifdef'd out because it looked bogus and crufty: /* Return 1 if a seek on FD will succeed. */ #ifndef __CYGWIN__ # define fd_is_seekable(fd) (lseek ((fd), 0L, SEEK_CUR) >= 0) #else # define fd_is_seekable(fd) 0 #endif /* __CYGWIN__ */ /* Take FD, a file descriptor, and create and return a buffered stream corresponding to it. If something is wrong and the file descriptor is invalid, return a NULL stream. */ BUFFERED_STREAM * fd_to_buffered_stream (fd) int fd; { char *buffer; size_t size; struct stat sb; if (fstat (fd, &sb) < 0) { close (fd); return ((BUFFERED_STREAM *)NULL); } size = (fd_is_seekable (fd)) ? min (sb.st_size, MAX_INPUT_BUFFER_SIZE) : 1; if (size == 0) size = 1; buffer = (char *)xmalloc (size); return (make_buffered_stream (fd, buffer, size)); } -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/