From: Bart O. <bar...@us...> - 2007-06-04 17:36:47
|
On 6/3/07, Andris Pavenis <and...@ik...> wrote: > Bart Oldeman wrote: > > Yes exactly, it is DOSEMU not implementing 0x5705 (and al=4,6,7). So > > last time you reported the GNU sed bug at the wrong place, and now > > this bug again :) > > It is not always easy to guess, which package is guilty... Hence the smiley... Anyway the handle functions are implemented in DOSEMU's SVN now (except for "set creation time" as that is not possible in Linux, it just pretends to succeed). > I reproduced however the same problem DJGPP touch.exe failing only when > LFN=Y) also under VMWare Server 1.0.2 (both with stable and latest 2036 > CVS kernel). I don't think that it can be blamed for not implementing > DOS calls. So maybe it is still also FreeDOS problem I looked at the DOSLFN sources and it does not implement the LFN handle calls either, neither 0x570x nor 0x71a6. It's just that DJGPP's fstat(), if 0x71a6 fails, falls back to the old method instead of error-ing out, whereas utime(), if 0x5705 fails it unconditionally returns EIO. Maybe DJGPP's utime function should unconditially try to use 0x7143 for utime()... as it is more logical than opening a file read-only and then changing its time via the file handle. Right now, according to: http://www.ludd.luth.se/~ams/djgpp/cvs/djgpp/src/libc/posix/utime/utime.c if ((_USE_LFN) && (_os_trueversion == 0x532)) /* LFN and NT (or 2000 or XP) */ { (uses 0x7143) } else open/57xx/close. I suggest just to get rid of that && (_os_trueversion == 0x532)) /* LFN and NT (or 2000 or XP) */ but there may be consequences I don't know about? Bart |