On 6/3/07, Andris Pavenis <[EMAIL PROTECTED]> wrote:
kernel/int2f.asm generates reference to _nlsInfo which remains
unresolved. I had to rename it to NLSINFO there for linker to succeed.
2007/05/01 CVS version did not compiled "out of box". So this problem
has appeared after that.

This problem was fixed in SVN last weekend, not in CVS anymore.
It only happens with Borland compilers though, not with Open Watcom,
which is why it was there unnoticed.

Without LFN there is not such problem. I am however I myself am
interested only on system which support LFN.

'touch FOO' fails in exactly the same way. As far as debugging
showed it is DJGPP's utime() (or more exactly DOS Fn 0x5705, which
fails).

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 :)

Anyway, I attached a quick & dirty DOSEMU patch (probably applies to
all fairly recent sources incl 1.4.0) that works around it. It does
not actually modify the access time (that is more work, as DOSEMU will
need to get code to associate the DOS handle with an SFT, and then
look up an index into a file descriptor array in that SFT if DOSEMU
"own"s it; I'll do that later) -- it just pretends the call succeeds.

Bart
Index: src/dosext/mfs/lfn.c
===================================================================
--- src/dosext/mfs/lfn.c	(revision 1815)
+++ src/dosext/mfs/lfn.c	(working copy)
@@ -803,6 +803,18 @@
 	
 	d_printf("LFN: doing LFN!, AX=%x DL=%x\n", _AX, _DL);
 	NOCARRY;
+
+	if (_AH == 0x57) {
+		switch (_AL) {
+		case 0x04:
+		case 0x05:
+		case 0x06:
+		case 0x07:
+			return 1;
+		}
+		return 0;
+	}
+	/* else _AH == 0x71 */
 	switch (_AL) {
 	case 0x0D: /* reset drive, nothing to do */
 		break;
Index: src/base/async/int.c
===================================================================
--- src/base/async/int.c	(revision 1819)
+++ src/base/async/int.c	(working copy)
@@ -1143,7 +1143,7 @@
 
 static int int21lfnhook(void)
 {
-  if (HI(ax) != 0x71 || !mfs_lfn())
+  if (!(HI(ax) == 0x71 || HI(ax) == 0x57) || !mfs_lfn())
     fake_int_to(int21seg, int21off);
   return 1;
 }
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Freedos-kernel mailing list
Freedos-kernel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-kernel

Reply via email to