Skip to content

Commit

Permalink
mingw: support UNC alternates
Browse files Browse the repository at this point in the history
Just like we support having alternates pointing to different drives, we
want to support alternates pointing to network shares, i.e. UNC paths.

Technically, what we do in this patch is not to support UNC alternates,
but to support UNC paths when normalizing paths. But the latter implies
the former, and the former really was the motivation for this patch.

Signed-off-by: Johannes Schindelin <[email protected]>
  • Loading branch information
dscho committed Aug 31, 2015
1 parent 78e3a23 commit 8b07530
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 1 deletion.
1 change: 1 addition & 0 deletions compat/mingw.h
Original file line number Diff line number Diff line change
Expand Up @@ -396,6 +396,7 @@ HANDLE winansi_get_osfhandle(int fd);
*/

#define has_dos_drive_prefix(path) (isalpha(*(path)) && (path)[1] == ':')
#define has_unc_prefix(path) (*(path) == '\\' && (path)[1] == '\\')
#define is_dir_sep(c) ((c) == '/' || (c) == '\\')
static inline char *mingw_find_last_dir_sep(const char *path)
{
Expand Down
8 changes: 8 additions & 0 deletions git-compat-util.h
Original file line number Diff line number Diff line change
Expand Up @@ -337,6 +337,14 @@ static inline int git_has_dos_drive_prefix(const char *path)
#define has_dos_drive_prefix git_has_dos_drive_prefix
#endif

#ifndef has_unc_prefix
static inline int git_has_unc_prefix(const char *path)
{
return 0;
}
#define has_unc_prefix git_has_unc_prefix
#endif

#ifndef is_dir_sep
static inline int git_is_dir_sep(int c)
{
Expand Down
2 changes: 1 addition & 1 deletion path.c
Original file line number Diff line number Diff line change
Expand Up @@ -666,7 +666,7 @@ int normalize_path_copy_len(char *dst, const char *src, int *prefix_len)
{
char *dst0;

if (has_dos_drive_prefix(src)) {
if (has_unc_prefix(src) || has_dos_drive_prefix(src)) {
*dst++ = *src++;
*dst++ = *src++;
}
Expand Down

0 comments on commit 8b07530

Please sign in to comment.