[p4] Windows file name length issues

Patrick Bennett patrick.bennett at inin.com
Sun Aug 19 16:32:13 PDT 2007

If Perforce itself has this limitation (I guess I haven't run into it 
myself), it would be pretty trivial for them to support it.
I'd open a case with them over the issue if so.


Jeff Grills wrote:
> So if the perforce daemon/service was compiled against the Unicode API on
> Win32 (which, I think, would be independent of the server supporting
> unicode), then we might be able to use \\?\ in the depot root to get long
> files names?  I decided to try this:
> c:\Program Files\Perforce>p4d -r \\?\c:\tmp\p4depot
> Perforce server error:
>         Root directory (set with $P4ROOT or -r flag) invalid.
>         chdir: \\p4depot: The filename, directory name, or volume label
> syntax is incorrect.
> I was hoping that the root would be prefixed onto all the CreateFile calls
> for the depot, but since it's failing in a chdir() call, I suspect that all
> the file opens would be relative, so adjusting the server root wouldn't do
> the trick.  So then I thought I might be able to do it with the depot
> mapping.  So I set my depot to \\?\depot/..., and tried to submit a file:
> Change 1 created with 1 open file(s).
> Submitting change 1.
> Locking 1 files ...
> add //depot/size.txt#1
> Date 2007/08/19 18:13:45:
> Operation: dm-SubmitFile
> Operation 'mkdir' failed.
> Librarian checkin \\?\depot/size.txt failed.
> RCS can't make directory for \\?\depot/size.txt,v!
> mkdir: \\: The filename, directory name, or volume label syntax is
> incorrect.
> So that's not going to work either.  I suspect someone could make an API
> hooking DLL that would translate every CreateFileA() call to unicode, add
> the necessary path stuff, and it would then support long file names.  That
> would be a non-trivial amount of work.  That sure seems useful - I would
> think that it could be made to make every application support long file
> names.
> It's probably a lot easier to ask Perforce support to give us a Win32 p4
> server with the necessary changes to use \\?\.
> j
> -----Original Message-----
> From: perforce-user-bounces at perforce.com
> [mailto:perforce-user-bounces at perforce.com] On Behalf Of Patrick Bennett
> Sent: Friday, August 17, 2007 10:26 PM
> To: David Weintraub
> Cc: perforce-user at perforce.com; Robert Cowham; Albrecht, Matt
> Subject: Re: [p4] Windows file name length issues
> No, the Win32 APIs supports very long filenames (up to 32k), it's just 
> that it requires some programmatic contortions that very few programs 
> make, so the default 255 limit is still very commonly run into. To use long
> filenames, programs have to call the Unicode versions (the 
> 'W' versions - ie CreateFileW) with \\?\ prepended to the path. These longer
> paths have been supported since, I believe, the first 
> Windows NT version (3.5 as I vaguelly recall - it was a long time ago).  
> Windows 95/98/ME are limited to 255.
> Patrick Bennett


*Patrick Bennett* | Software Engineer
phone & fax +1.317.715.8302 | patrick.bennett at inin.com
*Interactive Intelligence Inc.*
Deliberately Innovative
www.inin.com <http://www.inin.com/>

More information about the perforce-user mailing list