Request you advise : isValidFilename
Vino
akashvino79 at gmail.com
Fri Sep 22 17:44:50 UTC 2023
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
More information about the Digitalmars-d-learn
mailing list