Manuel de la Pena <man...@canonical.com> added the comment:

Antoine,

What the MSDN is stating is that the Windows functions from COM will not 
normalize the path if it is prefixed by \\?\. That is, if a user wanted to do:

path = r'\\?\C:\Users\mandel\..\Desktop\test'
with open(path, 'w') as fd:
    fd.write('hello!')

he will get the following:

[Errorno 22] Invalid argument. r'\\?\C:\Users\mandel\..\Desktop\test'

The same think would happen if a C function is used, that is, open is doing the 
right thing. On the other hand, the same code without the \\?\ works.

This makes it even more important to allow the normpath users to normalize such 
paths, that is, a developer knows that the path has more than 260 chars and 
wants to make sure that the path can be written in the system:

May I ask you why you mention the symbolic links? I know that if one of the 
segments of the path is a symbolic link there are problems but this is not 
related to \\?\ or am I confused? Just curious :)

Brian,

The ntpath module is a little mess (look at my other patch 
http://bugs.python.org/issue15275) and I think there are more performance 
problems hidden there somewhere...

I imported string within the function because the same is done in expandvars 
(around line 430) and wanted to follow the style that was already in use in the 
file. I do agree that imports at the top are the way to go :)

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue15286>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to