Hi All,
Request you help in understanding why the below code is always returning true when it should return false as per the documentation.
Documentation
Checks that the given file or directory name is valid.
The maximum length of filename is given by the constant core.stdc.stdio.FILENAME_MAX. (On Windows, this number is defined as the maximum number of UTF-16 code points, and the test will therefore only yield strictly correct results when filename is a string of wchars.)
On Windows, the following criteria must be satisfied (source):
**************
filename must not contain any characters whose integer representation is in the range 0-31.
**************
filename must not contain any of the following reserved characters: <>:"/\|?*
filename may not end with a space (' ') or a period ('.').
On POSIX, filename may not contain a forward slash ('/') or the null character ('\0').
Code:
import std.stdio: writefln;
import std.path: baseName, isValidFilename;
import std.utf : byCodeUnit;
void main () {
string st1 = "C:\\Windows\\System32\\whoami1";
string st2 = "C:\\Windows\\System32\\whoami*";
string st3 = "C:\\Windows\\System32\\whoami.";
string st4 = "C:\\Windows\\System32\\whoami ";
writefln("(isValidFilename : %s)", isValidFilename(baseName(st1).byCodeUnit));
writefln("(isValidFilename : %s)", isValidFilename(baseName(st2).byCodeUnit));
writefln("(isValidFilename : %s)", isValidFilename(baseName(st3).byCodeUnit));
writefln("(isValidFilename : %s)", isValidFilename(baseName(st4).byCodeUnit));
}
Output:
(isValidFilename : true) // shouldn't it be false as it contain's the number whoami1
(isValidFilename : false)
(isValidFilename : false)
(isValidFilename : false)
From,
Vino