On 7/26/07, Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote:
On Thu, 26 Jul 2007, Alex Riesen wrote: > > > > It's true that pread() is used much less than normal reads, and maybe the > > cygwin pread() is indeed broken. But it's intriguing how apparently both > > HP-UX and Cygwin are showing the same breakage. > > Maybe because neither _has_ POSIX pread? HP-UX? No pread()? It wouldn't link if it didn't have pread(). So it clearly has pread(), it's just somehow broken.
I remember it didn't and was emulated with lseek.
> This is cygwin's pread, I believe: > > http://cygwin.com/cgi-bin/cvsweb.cgi/src/winsup/cygwin/fhandler_disk_file.cc?rev=1.225&content-type=text/x-cvsweb-markup&cvsroot=src I'm not saying that's great programming, but the "git_pread()" that git will use in the absense of a real pread() is actually even *less* of a POSIX pread, since it doesn't even try to save/restore the old position (it knows that git doesn't care).
Not that. I meant the value read returned wasn't checked nor returned. Suppose read failed (on Windows it happens all the time, especially if you stress it a bit) - you'll never know it did and the buffer will contain either garbage or previous data. Now imagine we _did_ have a past-eof condition or bleeding into sign-bit (because of some 64-bit confusion)...
So I don't think that explains why git doesn't like cygwin's pread. I suspect an earlier version of cygwin had an even more broken version of pread at some point.
Yep, that could be another reason. - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html