Mail Archives: djgpp-workers/2001/03/16/06:12:44
> From: "Tim Van Holder" <tim DOT van DOT holder AT pandora DOT be>
> Date: Thu, 15 Mar 2001 19:13:09 +0100
>
> 'stubify foo' works fine if foo.exe does not exist.
>
> 'stubify foo' fails if foo.exe exists:
> rename of foo.000 to foo.exe failed.
> The error was: Invalid argument (EINVAL)
>
> Afterwards, foo.exe is gone and foo.000 exists.
>
> Debugging (using sources from current CVS), I see that the int 21/43ff
> call leaves 0x3003 in flags (ax: 1, bx: 0, cx:7f56).
> Disabling the LFN version of this call in _rename (falling back on
> 21/56) makes it work.
So the time bomb I've put into v2.02 finally gets me...
AX=1 means "Function number invalid". Can you see if this special
branch always fails, no matter if the target file exists or not?
(From the fact that "stubify foo" succeeds when foo.exe doesn't exist,
it sounds like the existence of the target makes a difference.) Also,
what does _dosexterr return, if called immediately after the failed
Int 21h call?
If 43FFh always fails, I guess we should simply take that code out: it
looks like no version of DOS implements it, contrary to what RBIL
says.
There's a similar code in mkdir.c. Could you please set LFN=n and see
if mkdir then also fails on Windows ME?
TIA
- Raw text -