On Dec 5 08:02, Pierre A. Humblet wrote: > At 12:14 PM 12/5/2003 +0100, Corinna Vinschen wrote: > >Two questions: > > > >What is the advantage of using lseek(SEEK_END) and using that value > >for fcntl(F_SETLK, SEEK_SET) over just using fcntl(F_SETLK, SEEK_END)? > >Especially since lseek(SEEK_END) is then called afterwards anyway. > > fcntl(F_SETLK, SEEK_END) is extremely risky on Windows because you > don't know what region was actually locked, and an unlock must > correspond *exactly* to a previous lock. > Somebody else could write to the file between the time fcntl finds > how long it is and the moment it locks it. The unlock you make after > you write will then fail.
Ok. > >What is the advantage of using a finite loop with fcntl(F_SETLK) over > >using fcntl(F_SETLKW) just once? This seems potentially less secure > >than F_SETLKW and also less secure than the former Mutex solution. > > The only reason is that F_SETLKW doesn't work on 9X so you need > a loop there anyway. But thinking more about it, we should have both > F_SETLKW and a loop. On NT the loop will never kick in. On 9x F_SETLKW > works like F_SETLK and the loop is useful. The loop could also be made > much longer. I agree. Are you going to change your patch accordingly? Corinna -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Developer mailto:[EMAIL PROTECTED] Red Hat, Inc.
