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