Use Go rules for Windows filename components
This commit is contained in:
@@ -258,27 +258,16 @@ func validFilenameComponent(value string) bool {
|
||||
return false
|
||||
}
|
||||
if runtime.GOOS == "windows" {
|
||||
return validWindowsFilenameComponent(value)
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func validWindowsFilenameComponent(value string) bool {
|
||||
if strings.ContainsAny(value, `<>:"|?*`) || strings.HasSuffix(value, ".") || strings.HasSuffix(value, " ") {
|
||||
return false
|
||||
}
|
||||
for _, character := range value {
|
||||
if character < 32 {
|
||||
if !filepath.IsLocal(value) || strings.ContainsAny(value, `<>:"|?*`) || strings.HasSuffix(value, ".") || strings.HasSuffix(value, " ") {
|
||||
return false
|
||||
}
|
||||
for _, character := range value {
|
||||
if character < 32 {
|
||||
return false
|
||||
}
|
||||
}
|
||||
}
|
||||
base := strings.ToUpper(strings.TrimSuffix(value, filepath.Ext(value)))
|
||||
switch base {
|
||||
case "CON", "PRN", "AUX", "NUL", "COM1", "COM2", "COM3", "COM4", "COM5", "COM6", "COM7", "COM8", "COM9", "COM¹", "COM²", "COM³", "LPT1", "LPT2", "LPT3", "LPT4", "LPT5", "LPT6", "LPT7", "LPT8", "LPT9", "LPT¹", "LPT²", "LPT³":
|
||||
return false
|
||||
default:
|
||||
return true
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
var errUnixSystemPresetUnavailable = errors.New("Unix system directories are unavailable on this platform")
|
||||
|
||||
Reference in New Issue
Block a user