macOS/Linux: Allow \ in file names (fix #212740) (#212810)

* macOS/Linux: Allow `\` in file names (fix #212740)

* fix tests

* bump salt
This commit is contained in:
Benjamin Pasero 2024-05-16 15:48:04 +02:00 committed by GitHub
parent c72bcdaa99
commit 6af31616a7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 5 additions and 3 deletions

View File

@ -1 +1 @@
2024-03-18T08:47:22.277Z
2024-05-16T08:47:22.277Z

View File

@ -164,7 +164,7 @@ export function isUNC(path: string): boolean {
// Reference: https://en.wikipedia.org/wiki/Filename
const WINDOWS_INVALID_FILE_CHARS = /[\\/:\*\?"<>\|]/g;
const UNIX_INVALID_FILE_CHARS = /[\\/]/g;
const UNIX_INVALID_FILE_CHARS = /[/]/g;
const WINDOWS_FORBIDDEN_NAMES = /^(con|prn|aux|clock\$|nul|lpt[0-9]|com[0-9])(\.(.*?))?$/i;
export function isValidBasename(name: string | null | undefined, isWindowsOS: boolean = isWindows): boolean {
const invalidFileChars = isWindowsOS ? WINDOWS_INVALID_FILE_CHARS : UNIX_INVALID_FILE_CHARS;

View File

@ -50,9 +50,9 @@ suite('Paths', () => {
assert.ok(!extpath.isValidBasename(''));
assert.ok(extpath.isValidBasename('test.txt'));
assert.ok(!extpath.isValidBasename('/test.txt'));
assert.ok(!extpath.isValidBasename('\\test.txt'));
if (isWindows) {
assert.ok(!extpath.isValidBasename('\\test.txt'));
assert.ok(!extpath.isValidBasename('aux'));
assert.ok(!extpath.isValidBasename('Aux'));
assert.ok(!extpath.isValidBasename('LPT0'));
@ -69,6 +69,8 @@ suite('Paths', () => {
assert.ok(!extpath.isValidBasename('test.txt\t'));
assert.ok(!extpath.isValidBasename('tes:t.txt'));
assert.ok(!extpath.isValidBasename('tes"t.txt'));
} else {
assert.ok(extpath.isValidBasename('\\test.txt'));
}
});