C. Michael Pilato wrote:
>Stefano Spinucci <virgo977virgo@yahoo.it> writes:
>
>I've done recent searches around this too, and I'm afraid your
>information is incomplete. If you use the Unicode versions of the
>path-related functions we're discussing (CreateFile and friends), and
>are on a Win2k or better version of the OS, you can get a 32k path:
>
> In the ANSI version of this function, the name is limited to
> MAX_PATH characters. To extend this limit to 32,767 wide
> characters, call the Unicode version of the function and prepend
> "\\?\" to the path. For more information, see Naming a File[1]
>
>[1] http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/naming_a_file.asp
>
>
>
apr/file_io/win32/open.c: utf8_to_unicode_path
if (srcremains > MAX_PATH) {
if (srcstr[1] == ':' && (srcstr[2] == '/' || srcstr[2] == '\\')) {
wcscpy (retstr, L"\\\\?\\");
retlen -= 4;
t += 4;
}
else if ((srcstr[0] == '/' || srcstr[0] == '\\')
&& (srcstr[1] == '/' || srcstr[1] == '\\')
&& (srcstr[2] != '?')) {
/* Skip the slashes */
srcstr += 2;
srcremains -= 2;
wcscpy (retstr, L"\\\\?\\UNC\\");
retlen -= 8;
t += 8;
}
}
Looks like absolute and unc paths have \\?\ and \\?\UNC appended. This
function is called from all the correct places (apr_file_open, etc.)
I see two solutions to the problem:
a) use absolute paths in subversion
b) change the above code so that
- relative paths that are longer than MAX_PATH are special cased
- these paths are converted into absolute paths then have \\?\ prepended
I would be willing to prepare a patch for (b). What do you think?
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Thu Oct 28 11:32:47 2004