[PATCH] PR21482: long paths on Windows

Aaron Ballman aaron.ballman at gmail.com
Mon Nov 10 14:47:27 PST 2014


On Mon, Nov 10, 2014 at 5:43 PM, Rafael EspĂ­ndola
<rafael.espindola at gmail.com> wrote:
> static std::error_code widen_path(const Twine &Path8,
>
> widenPath
>
> Using  '\\?\'  also disables using / as a path separator, no? Don't we
> have to check/assert that there is no / in Path8?
>
> +  size_t NLevels = ((248 - TmpLen) / 10) + 1;
> +  const char *OneDir = "\\123456789";
>
> Use the size of OneDir instead of hard codding the 10.
>
> Aaron, this only uses '\\?\' to create long paths. They can still be
> accessed by regular tools by changing the current directory, no?

Yes, relative paths aren't an issue. Just tools using absolute paths
that don't support the extended path namespace (which can happen if
the app assumes MAX_PATH is actually the max).

~Aaron

>
> On 10 November 2014 16:01, Robinson, Paul
> <Paul_Robinson at playstation.sony.com> wrote:
>> Support directory names longer than 248 characters on Windows.
>>
>> The normal Windows path limit is 260 characters; the limit for directory
>> names is 248, to leave room for an 8.3 filename at the end.  Adding the
>> '\\?\' prefix greatly expands these limits.  Intercept path names that
>> we are about to pass to the Windows APIs and add the prefix if necessary.
>>
>> Also correct the comment about the state of the temporary directory used
>> by the Support unittests.
>> --paulr
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>




More information about the llvm-commits mailing list