long paths on windows?
\\?\
MAX_PATH
limitations
- 260 characters
- -3: drive letter, colon, backslash: "
C:\
"
- -1: terminating
NUL
character
- -12: directory must allow for an "8.3 filename"
- ~244 characters for a directory structure
8.3 filename
- aka short filename
- up to 8 characters for filename
- up to 3 characters for extension
- shortened by use of
~
+ ordinal:
LONGFI~1.TXT
for longfilename.txt
enabling long paths
- via registry
HKLM\SYSTEM\CurrentControlSet\Control\FileSystem
LongPathsEnabled=1
- group policy
Computer Configuration
> Administrative Templates
> System
>
Filesystem
> Enable NTFS long paths
- may not apply to 32 bit programs
extended length paths
- prefix with
\\?\
- up to ~32,767 characters (may be subject to path expansion)
- do not go undergo usual path normalizations
- cannot use forward slashes as separators
"\\?\C:\very\long\path\..."
real world problem
pre-commit
is a multi-language git hooks framework
- multi-language multi-platform hooks
- must be able to install deeply nested
node_modules
- current
npm
requires 199 characters (!)