summaryrefslogtreecommitdiff
path: root/src/win32/path_w32.c
Commit message (Collapse)AuthorAgeFilesLines
* git_path_diriter: use FindFirstFile in win32Edward Thomson2015-05-011-5/+0
| | | | | | | Using FindFirstFile and FindNextFile in win32 allows us to use the directory information that is returned, instead of us having to get the file attributes all over again, which is a distinct cost savings on win32.
* git_win32_path_dirload_with_stat: removedEdward Thomson2015-05-011-169/+0
|
* win32: keep full path for realpath usageEdward Thomson2015-04-281-8/+34
|
* win32: mimic git_path_dirload_with_stat closelyEdward Thomson2015-04-281-40/+28
|
* dirload: loop conditional; less path manglingEdward Thomson2015-04-281-59/+102
|
* win32 dirload: don't heap allocate DIR structureEdward Thomson2015-04-281-22/+18
|
* win32: abstract file attributes -> struct stat fnEdward Thomson2015-04-281-37/+8
|
* Improvements to status performance on Windows.J Wyman2015-04-281-0/+225
| | | | Changed win32/path_w32.c to utilize NTFS' FindFirst..FindNext data instead of doing an lstat per file. Avoiding unnecessary directory opens and file scans reduces IO, improving overall performance. Effect is magnified due to NTFS being a kernel mode file system (as opposed to user mode).
* checkout: disallow bad paths on win32Edward Thomson2014-12-161-0/+36
| | | | | | | | | | | | | | | Disallow: 1. paths with trailing dot 2. paths with trailing space 3. paths with trailing colon 4. paths that are 8.3 short names of .git folders ("GIT~1") 5. paths that are reserved path names (COM1, LPT1, etc). 6. paths with reserved DOS characters (colons, asterisks, etc) These paths would (without \\?\ syntax) be elided to other paths - for example, ".git." would be written as ".git". As a result, writing these paths literally (using \\?\ syntax) makes them hard to operate with from the shell, Windows Explorer or other tools. Disallow these.
* win32: use NT-prefixed "\\?\" pathsEdward Thomson2014-12-161-0/+269
When turning UTF-8 paths into UCS-2 paths for Windows, always use the \\?\-prefixed paths. Because this bypasses the system's path canonicalization, handle the canonicalization functions ourselves. We must: 1. always use a backslash as a directory separator 2. only use a single backslash between directories 3. not rely on the system to translate "." and ".." in paths 4. remove trailing backslashes, except at the drive root (C:\)