Date: Mon, 3 Sep 2001 07:22:16 +0400 From: "Andrey A. Chernov" <ache@nagual.pp.ru> To: Alfred Perlstein <bright@mu.org> Cc: cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: Re: cvs commit: src/lib/libc/stdio setvbuf.c Message-ID: <20010903072215.B97368@nagual.pp.ru> In-Reply-To: <20010903070334.A97368@nagual.pp.ru> References: <200109030235.f832ZAg46853@freefall.freebsd.org> <20010902214528.J81307@elvis.mu.org> <20010903070334.A97368@nagual.pp.ru>
next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Sep 03, 2001 at 07:03:37 +0400, Andrey A. Chernov wrote: > > > What are you validating these changes against? POSIX? Solaris? Linux? > > Stdio try to optimize seeks internally to keep file offset in memory > without additional fp->_seek, commonly lseek call (and use __SOFF for it). > It can be done correctly only for regular files and when fp->_seek not > changed to non-standard function. Character devices (f.e. normal stdio) > often move pointer by themselfs, so keeping offset in memory for them > leads to incorrect offset. Stdio try to detect regular files with fp->seek > set to standard __seek and set __SOPT flag for them. It means that file > can be optimized. __SOFF is one sort of optimizations, it means we have > valid file offset in memory. When setvbuf.c clears __SOPT, no > optimizations allowed including __SOFF, so __SOFF must be removed too. IMHO, there is no needs to keep offset in memory at all, it only cause problems. lseek is very light-weighted syscall, so avoiding it in some cases (like sequental reading) gains almost nothing. But if BSD stdio developers choose to keep it, lets do it, but do it correctly. -- Andrey A. Chernov http://ache.pp.ru/ To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010903072215.B97368>