Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unreliable IF EXIST NUL #90

Closed
shidel opened this issue May 23, 2023 · 2 comments
Closed

Unreliable IF EXIST NUL #90

shidel opened this issue May 23, 2023 · 2 comments

Comments

@shidel
Copy link

shidel commented May 23, 2023

Hi,

Here are two separate issues when using IF EXIST ?:\NUL. I'm lazy and wrote up a info text file over at https://fd.lod.bz/redist/testing/devNUL/ that I will just paste in here. The test batch and result files referenced in the text can be found there as well.


NUL Device Existence Test

https://fd.lod.bz/redist/testing/devNUL/
2023-05-23

This test reveals two separate issues:

Issue 1:

Testing for the existence of a path by using the NUL device does not
work on CD/DVD drives or Network Shares. The result is always FALSE.

IF EXIST N:\NUL ECHO Drive N: exists.

See either result0.htm or result1.htm.

Although this behavior deviates from that of other drives,it is
consistent with the behavior of MS-DOS 6.22 using MSCDEX. There is
the possibility that correcting this issue has the potential to break
compatibility with any program that may rely on this behavior.

Issue 2:

Testing for the existence of a non-existing drive returns unreliable
results. This seems reproducible based on the current working directory
when the test is performed. For each test, a copy of the test.bat was
placed in the current working directory.

result0.htm was run with the current drive and directory on an internal
local drive (C:). It incorrectly shows that the non-existing drive (P:)
was found.

result1.htm was run with the current drive and directory on an remote
network share (N:). It correctly shows that the non-existing drive (P:)
was not found.

Switching back and forth between drive C: and N: and running the
TEST.BAT consistently produces the same results.

@PerditionC
Copy link
Contributor

this appears to be a kernel bug, but still doing some more verification.
IF EXISTS path command
essentially is
if findfirst(path) is successful (returns 0) then do command
where findfirst (SFN version) is essentially an INT21h with AX=0x4E00 and DS:DX=path returning AX

@PerditionC
Copy link
Contributor

closing this bug as not FreeCOM issue, but referring to it from kernel issue see FDOS/kernel#193

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants