mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-05 13:38:27 +00:00
Make git_path_root() cope with windows network paths
Fix libgit2/libgit2sharp#125
This commit is contained in:
parent
e24fbba948
commit
7b93079b5b
@ -171,6 +171,15 @@ int git_path_root(const char *path)
|
||||
/* Does the root of the path look like a windows drive ? */
|
||||
if (isalpha(path[0]) && (path[1] == ':'))
|
||||
offset += 2;
|
||||
|
||||
/* Are we dealing with a network path? */
|
||||
else if (path[0] == '/' && path[1] == '/') {
|
||||
offset += 2;
|
||||
|
||||
/* Skip the computer name segment */
|
||||
while (*(path + offset) && *(path + offset) != '/')
|
||||
offset++;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (*(path + offset) == '/')
|
||||
|
@ -388,3 +388,18 @@ void test_core_path__11_walkup(void)
|
||||
|
||||
git_buf_free(&p);
|
||||
}
|
||||
|
||||
void test_core_path__12_offset_to_path_root(void)
|
||||
{
|
||||
cl_assert(git_path_root("non/rooted/path") == -1);
|
||||
cl_assert(git_path_root("/rooted/path") == 0);
|
||||
|
||||
#ifdef GIT_WIN32
|
||||
/* Windows specific tests */
|
||||
cl_assert(git_path_root("C:non/rooted/path") == -1);
|
||||
cl_assert(git_path_root("C:/rooted/path") == 2);
|
||||
cl_assert(git_path_root("//computername/sharefolder/resource") == 14);
|
||||
cl_assert(git_path_root("//computername/sharefolder") == 14);
|
||||
cl_assert(git_path_root("//computername") == -1);
|
||||
#endif
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user