Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
git2
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
git2
Commits
abf37327
Commit
abf37327
authored
Aug 13, 2013
by
Vicent Marti
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
windows: Path conversion with better semantics
parent
0e26fca1
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
59 additions
and
60 deletions
+59
-60
src/fileops.c
+2
-2
src/path.c
+2
-2
src/transports/winhttp.c
+2
-2
src/win32/dir.c
+5
-5
src/win32/dir.h
+1
-1
src/win32/findfile.c
+6
-6
src/win32/posix_w32.c
+27
-27
src/win32/utf-conv.h
+3
-4
tests-clar/clar_libgit2.c
+11
-11
No files found.
src/fileops.c
View file @
abf37327
...
@@ -58,9 +58,9 @@ int git_futils_creat_locked(const char *path, const mode_t mode)
...
@@ -58,9 +58,9 @@ int git_futils_creat_locked(const char *path, const mode_t mode)
int
fd
;
int
fd
;
#ifdef GIT_WIN32
#ifdef GIT_WIN32
git_win32_path
_utf16
buf
;
git_win32_path
buf
;
git__win32_path_
utf8_to_16
(
buf
,
path
);
git__win32_path_
from_c
(
buf
,
path
);
fd
=
_wopen
(
buf
,
O_WRONLY
|
O_CREAT
|
O_TRUNC
|
fd
=
_wopen
(
buf
,
O_WRONLY
|
O_CREAT
|
O_TRUNC
|
O_EXCL
|
O_BINARY
|
O_CLOEXEC
,
mode
);
O_EXCL
|
O_BINARY
|
O_CLOEXEC
,
mode
);
#else
#else
...
...
src/path.c
View file @
abf37327
...
@@ -486,14 +486,14 @@ bool git_path_is_empty_dir(const char *path)
...
@@ -486,14 +486,14 @@ bool git_path_is_empty_dir(const char *path)
{
{
git_buf
pathbuf
=
GIT_BUF_INIT
;
git_buf
pathbuf
=
GIT_BUF_INIT
;
HANDLE
hFind
=
INVALID_HANDLE_VALUE
;
HANDLE
hFind
=
INVALID_HANDLE_VALUE
;
git_win32_path
_utf16
wbuf
;
git_win32_path
wbuf
;
WIN32_FIND_DATAW
ffd
;
WIN32_FIND_DATAW
ffd
;
bool
retval
=
true
;
bool
retval
=
true
;
if
(
!
git_path_isdir
(
path
))
return
false
;
if
(
!
git_path_isdir
(
path
))
return
false
;
git_buf_printf
(
&
pathbuf
,
"%s
\\
*"
,
path
);
git_buf_printf
(
&
pathbuf
,
"%s
\\
*"
,
path
);
git__win32_path_
utf8_to_16
(
wbuf
,
git_buf_cstr
(
&
pathbuf
));
git__win32_path_
from_c
(
wbuf
,
git_buf_cstr
(
&
pathbuf
));
hFind
=
FindFirstFileW
(
wbuf
,
&
ffd
);
hFind
=
FindFirstFileW
(
wbuf
,
&
ffd
);
if
(
INVALID_HANDLE_VALUE
==
hFind
)
{
if
(
INVALID_HANDLE_VALUE
==
hFind
)
{
...
...
src/transports/winhttp.c
View file @
abf37327
...
@@ -893,7 +893,7 @@ static int winhttp_connect(
...
@@ -893,7 +893,7 @@ static int winhttp_connect(
const
char
*
url
)
const
char
*
url
)
{
{
wchar_t
*
ua
=
L"git/1.0 (libgit2 "
WIDEN
(
LIBGIT2_VERSION
)
L")"
;
wchar_t
*
ua
=
L"git/1.0 (libgit2 "
WIDEN
(
LIBGIT2_VERSION
)
L")"
;
git_win32_path
_utf16
host
;
git_win32_path
host
;
int32_t
port
;
int32_t
port
;
const
char
*
default_port
=
"80"
;
const
char
*
default_port
=
"80"
;
int
ret
;
int
ret
;
...
@@ -920,7 +920,7 @@ static int winhttp_connect(
...
@@ -920,7 +920,7 @@ static int winhttp_connect(
return
-
1
;
return
-
1
;
/* Prepare host */
/* Prepare host */
git__win32_path_
utf8_to_16
(
host
,
t
->
host
);
git__win32_path_
from_c
(
host
,
t
->
host
);
/* Establish session */
/* Establish session */
t
->
session
=
WinHttpOpen
(
t
->
session
=
WinHttpOpen
(
...
...
src/win32/dir.c
View file @
abf37327
...
@@ -26,7 +26,7 @@ static int init_filter(char *filter, size_t n, const char *dir)
...
@@ -26,7 +26,7 @@ static int init_filter(char *filter, size_t n, const char *dir)
git__DIR
*
git__opendir
(
const
char
*
dir
)
git__DIR
*
git__opendir
(
const
char
*
dir
)
{
{
char
filter
[
GIT_WIN_PATH_UTF8
];
char
filter
[
GIT_WIN_PATH_UTF8
];
git_win32_path
_utf16
filter_w
;
git_win32_path
filter_w
;
git__DIR
*
new
=
NULL
;
git__DIR
*
new
=
NULL
;
if
(
!
dir
||
!
init_filter
(
filter
,
sizeof
(
filter
),
dir
))
if
(
!
dir
||
!
init_filter
(
filter
,
sizeof
(
filter
),
dir
))
...
@@ -40,7 +40,7 @@ git__DIR *git__opendir(const char *dir)
...
@@ -40,7 +40,7 @@ git__DIR *git__opendir(const char *dir)
if
(
!
new
->
dir
)
if
(
!
new
->
dir
)
goto
fail
;
goto
fail
;
git__win32_path_
utf8_to_16
(
filter_w
,
filter
);
git__win32_path_
from_c
(
filter_w
,
filter
);
new
->
h
=
FindFirstFileW
(
filter_w
,
&
new
->
f
);
new
->
h
=
FindFirstFileW
(
filter_w
,
&
new
->
f
);
if
(
new
->
h
==
INVALID_HANDLE_VALUE
)
{
if
(
new
->
h
==
INVALID_HANDLE_VALUE
)
{
...
@@ -80,7 +80,7 @@ int git__readdir_ext(
...
@@ -80,7 +80,7 @@ int git__readdir_ext(
if
(
wcslen
(
d
->
f
.
cFileName
)
>=
sizeof
(
entry
->
d_name
))
if
(
wcslen
(
d
->
f
.
cFileName
)
>=
sizeof
(
entry
->
d_name
))
return
-
1
;
return
-
1
;
git__win32_path_
utf16_to_8
(
entry
->
d_name
,
d
->
f
.
cFileName
);
git__win32_path_
from_c
(
entry
->
d_name
,
d
->
f
.
cFileName
);
entry
->
d_ino
=
0
;
entry
->
d_ino
=
0
;
*
result
=
entry
;
*
result
=
entry
;
...
@@ -102,7 +102,7 @@ struct git__dirent *git__readdir(git__DIR *d)
...
@@ -102,7 +102,7 @@ struct git__dirent *git__readdir(git__DIR *d)
void
git__rewinddir
(
git__DIR
*
d
)
void
git__rewinddir
(
git__DIR
*
d
)
{
{
char
filter
[
GIT_WIN_PATH_UTF8
];
char
filter
[
GIT_WIN_PATH_UTF8
];
git_win32_path
_utf16
filter_w
;
git_win32_path
filter_w
;
if
(
!
d
)
if
(
!
d
)
return
;
return
;
...
@@ -116,7 +116,7 @@ void git__rewinddir(git__DIR *d)
...
@@ -116,7 +116,7 @@ void git__rewinddir(git__DIR *d)
if
(
!
init_filter
(
filter
,
sizeof
(
filter
),
d
->
dir
))
if
(
!
init_filter
(
filter
,
sizeof
(
filter
),
d
->
dir
))
return
;
return
;
git__win32_path_
utf8_to_16
(
filter_w
,
filter
);
git__win32_path_
from_c
(
filter_w
,
filter
);
d
->
h
=
FindFirstFileW
(
filter_w
,
&
d
->
f
);
d
->
h
=
FindFirstFileW
(
filter_w
,
&
d
->
f
);
if
(
d
->
h
==
INVALID_HANDLE_VALUE
)
if
(
d
->
h
==
INVALID_HANDLE_VALUE
)
...
...
src/win32/dir.h
View file @
abf37327
...
@@ -11,7 +11,7 @@
...
@@ -11,7 +11,7 @@
struct
git__dirent
{
struct
git__dirent
{
int
d_ino
;
int
d_ino
;
char
d_name
[
260
*
4
+
1
];
char
d_name
[
GIT_WIN_PATH_UTF8
];
};
};
typedef
struct
{
typedef
struct
{
...
...
src/win32/findfile.c
View file @
abf37327
...
@@ -23,11 +23,11 @@ int git_win32__expand_path(struct git_win32__path *s_root, const wchar_t *templ)
...
@@ -23,11 +23,11 @@ int git_win32__expand_path(struct git_win32__path *s_root, const wchar_t *templ)
return
s_root
->
len
?
0
:
-
1
;
return
s_root
->
len
?
0
:
-
1
;
}
}
static
int
win32_path_
utf16_to_8
(
git_buf
*
path_utf8
,
const
wchar_t
*
path_utf16
)
static
int
win32_path_
to_8
(
git_buf
*
path_utf8
,
const
wchar_t
*
path
)
{
{
char
temp_utf8
[
GIT_PATH_MAX
];
char
temp_utf8
[
GIT_PATH_MAX
];
git__utf16_to_8
(
temp_utf8
,
GIT_PATH_MAX
,
path
_utf16
);
git__utf16_to_8
(
temp_utf8
,
GIT_PATH_MAX
,
path
);
git_path_mkposix
(
temp_utf8
);
git_path_mkposix
(
temp_utf8
);
return
git_buf_sets
(
path_utf8
,
temp_utf8
);
return
git_buf_sets
(
path_utf8
,
temp_utf8
);
...
@@ -61,7 +61,7 @@ int git_win32__find_file(
...
@@ -61,7 +61,7 @@ int git_win32__find_file(
return
GIT_ENOTFOUND
;
return
GIT_ENOTFOUND
;
}
}
win32_path_
utf16_
to_8
(
path
,
file_utf16
);
win32_path_to_8
(
path
,
file_utf16
);
git__free
(
file_utf16
);
git__free
(
file_utf16
);
return
0
;
return
0
;
...
@@ -113,7 +113,7 @@ static int win32_find_git_in_path(git_buf *buf, const wchar_t *gitexe)
...
@@ -113,7 +113,7 @@ static int win32_find_git_in_path(git_buf *buf, const wchar_t *gitexe)
/* replace "bin\\" or "cmd\\" with "etc\\" */
/* replace "bin\\" or "cmd\\" with "etc\\" */
wcscpy
(
&
root
.
path
[
root
.
len
-
4
],
L"etc
\\
"
);
wcscpy
(
&
root
.
path
[
root
.
len
-
4
],
L"etc
\\
"
);
win32_path_
utf16_
to_8
(
buf
,
root
.
path
);
win32_path_to_8
(
buf
,
root
.
path
);
return
0
;
return
0
;
}
}
}
}
...
@@ -146,7 +146,7 @@ static int win32_find_git_in_registry(
...
@@ -146,7 +146,7 @@ static int win32_find_git_in_registry(
wcscat
(
path16
.
path
,
L"etc
\\
"
);
wcscat
(
path16
.
path
,
L"etc
\\
"
);
path16
.
len
+=
4
;
path16
.
len
+=
4
;
win32_path_
utf16_
to_8
(
buf
,
path16
.
path
);
win32_path_to_8
(
buf
,
path16
.
path
);
}
}
RegCloseKey
(
hKey
);
RegCloseKey
(
hKey
);
...
@@ -168,7 +168,7 @@ static int win32_find_existing_dirs(
...
@@ -168,7 +168,7 @@ static int win32_find_existing_dirs(
path16
.
path
[
0
]
!=
L'%'
&&
path16
.
path
[
0
]
!=
L'%'
&&
!
_waccess
(
path16
.
path
,
F_OK
))
!
_waccess
(
path16
.
path
,
F_OK
))
{
{
win32_path_
utf16_
to_8
(
&
buf
,
path16
.
path
);
win32_path_to_8
(
&
buf
,
path16
.
path
);
if
(
buf
.
size
)
if
(
buf
.
size
)
git_buf_join
(
out
,
GIT_PATH_LIST_SEPARATOR
,
out
->
ptr
,
buf
.
ptr
);
git_buf_join
(
out
,
GIT_PATH_LIST_SEPARATOR
,
out
->
ptr
,
buf
.
ptr
);
...
...
src/win32/posix_w32.c
View file @
abf37327
...
@@ -16,8 +16,8 @@
...
@@ -16,8 +16,8 @@
int
p_unlink
(
const
char
*
path
)
int
p_unlink
(
const
char
*
path
)
{
{
git_win32_path
_utf16
buf
;
git_win32_path
buf
;
git__win32_path_
utf8_to_16
(
buf
,
path
);
git__win32_path_
from_c
(
buf
,
path
);
_wchmod
(
buf
,
0666
);
_wchmod
(
buf
,
0666
);
return
_wunlink
(
buf
);
return
_wunlink
(
buf
);
}
}
...
@@ -59,11 +59,11 @@ static int do_lstat(
...
@@ -59,11 +59,11 @@ static int do_lstat(
const
char
*
file_name
,
struct
stat
*
buf
,
int
posix_enotdir
)
const
char
*
file_name
,
struct
stat
*
buf
,
int
posix_enotdir
)
{
{
WIN32_FILE_ATTRIBUTE_DATA
fdata
;
WIN32_FILE_ATTRIBUTE_DATA
fdata
;
git_win32_path
_utf16
fbuf
;
git_win32_path
fbuf
;
wchar_t
lastch
;
wchar_t
lastch
;
int
flen
;
int
flen
;
flen
=
git__win32_path_
utf8_to_16
(
fbuf
,
file_name
);
flen
=
git__win32_path_
from_c
(
fbuf
,
file_name
);
/* truncate trailing slashes */
/* truncate trailing slashes */
for
(;
flen
>
0
;
--
flen
)
{
for
(;
flen
>
0
;
--
flen
)
{
...
@@ -166,7 +166,7 @@ int p_readlink(const char *link, char *target, size_t target_len)
...
@@ -166,7 +166,7 @@ int p_readlink(const char *link, char *target, size_t target_len)
static
fpath_func
pGetFinalPath
=
NULL
;
static
fpath_func
pGetFinalPath
=
NULL
;
HANDLE
hFile
;
HANDLE
hFile
;
DWORD
dwRet
;
DWORD
dwRet
;
git_win32_path
_utf16
link_w
;
git_win32_path
link_w
;
wchar_t
*
target_w
;
wchar_t
*
target_w
;
int
error
=
0
;
int
error
=
0
;
...
@@ -189,7 +189,7 @@ int p_readlink(const char *link, char *target, size_t target_len)
...
@@ -189,7 +189,7 @@ int p_readlink(const char *link, char *target, size_t target_len)
}
}
}
}
git__win32_path_
utf8_to_16
(
link_w
,
link
);
git__win32_path_
from_c
(
link_w
,
link
);
hFile
=
CreateFileW
(
link_w
,
// file to open
hFile
=
CreateFileW
(
link_w
,
// file to open
GENERIC_READ
,
// open for reading
GENERIC_READ
,
// open for reading
...
@@ -255,10 +255,10 @@ int p_symlink(const char *old, const char *new)
...
@@ -255,10 +255,10 @@ int p_symlink(const char *old, const char *new)
int
p_open
(
const
char
*
path
,
int
flags
,
...)
int
p_open
(
const
char
*
path
,
int
flags
,
...)
{
{
git_win32_path
_utf16
buf
;
git_win32_path
buf
;
mode_t
mode
=
0
;
mode_t
mode
=
0
;
git__win32_path_
utf8_to_16
(
buf
,
path
);
git__win32_path_
from_c
(
buf
,
path
);
if
(
flags
&
O_CREAT
)
{
if
(
flags
&
O_CREAT
)
{
va_list
arg_list
;
va_list
arg_list
;
...
@@ -273,8 +273,8 @@ int p_open(const char *path, int flags, ...)
...
@@ -273,8 +273,8 @@ int p_open(const char *path, int flags, ...)
int
p_creat
(
const
char
*
path
,
mode_t
mode
)
int
p_creat
(
const
char
*
path
,
mode_t
mode
)
{
{
git_win32_path
_utf16
buf
;
git_win32_path
buf
;
git__win32_path_
utf8_to_16
(
buf
,
path
);
git__win32_path_
from_c
(
buf
,
path
);
return
_wopen
(
buf
,
_O_WRONLY
|
_O_CREAT
|
_O_TRUNC
|
_O_BINARY
,
mode
);
return
_wopen
(
buf
,
_O_WRONLY
|
_O_CREAT
|
_O_TRUNC
|
_O_BINARY
,
mode
);
}
}
...
@@ -316,23 +316,23 @@ int p_stat(const char* path, struct stat* buf)
...
@@ -316,23 +316,23 @@ int p_stat(const char* path, struct stat* buf)
int
p_chdir
(
const
char
*
path
)
int
p_chdir
(
const
char
*
path
)
{
{
git_win32_path
_utf16
buf
;
git_win32_path
buf
;
git__win32_path_
utf8_to_16
(
buf
,
path
);
git__win32_path_
from_c
(
buf
,
path
);
return
_wchdir
(
buf
);
return
_wchdir
(
buf
);
}
}
int
p_chmod
(
const
char
*
path
,
mode_t
mode
)
int
p_chmod
(
const
char
*
path
,
mode_t
mode
)
{
{
git_win32_path
_utf16
buf
;
git_win32_path
buf
;
git__win32_path_
utf8_to_16
(
buf
,
path
);
git__win32_path_
from_c
(
buf
,
path
);
return
_wchmod
(
buf
,
mode
);
return
_wchmod
(
buf
,
mode
);
}
}
int
p_rmdir
(
const
char
*
path
)
int
p_rmdir
(
const
char
*
path
)
{
{
int
error
;
int
error
;
git_win32_path
_utf16
buf
;
git_win32_path
buf
;
git__win32_path_
utf8_to_16
(
buf
,
path
);
git__win32_path_
from_c
(
buf
,
path
);
error
=
_wrmdir
(
buf
);
error
=
_wrmdir
(
buf
);
...
@@ -348,18 +348,18 @@ int p_rmdir(const char* path)
...
@@ -348,18 +348,18 @@ int p_rmdir(const char* path)
int
p_hide_directory__w32
(
const
char
*
path
)
int
p_hide_directory__w32
(
const
char
*
path
)
{
{
git_win32_path
_utf16
buf
;
git_win32_path
buf
;
git__win32_path_
utf8_to_16
(
buf
,
path
);
git__win32_path_
from_c
(
buf
,
path
);
return
(
SetFileAttributesW
(
buf
,
FILE_ATTRIBUTE_HIDDEN
)
!=
0
)
?
0
:
-
1
;
return
(
SetFileAttributesW
(
buf
,
FILE_ATTRIBUTE_HIDDEN
)
!=
0
)
?
0
:
-
1
;
}
}
char
*
p_realpath
(
const
char
*
orig_path
,
char
*
buffer
)
char
*
p_realpath
(
const
char
*
orig_path
,
char
*
buffer
)
{
{
int
ret
;
int
ret
;
git_win32_path
_utf16
orig_path_w
;
git_win32_path
orig_path_w
;
git_win32_path
_utf16
buffer_w
;
git_win32_path
buffer_w
;
git__win32_path_
utf8_to_16
(
orig_path_w
,
orig_path
);
git__win32_path_
from_c
(
orig_path_w
,
orig_path
);
/* Implicitly use GetCurrentDirectory which can be a threading issue */
/* Implicitly use GetCurrentDirectory which can be a threading issue */
ret
=
GetFullPathNameW
(
orig_path_w
,
GIT_WIN_PATH_UTF16
,
buffer_w
,
NULL
);
ret
=
GetFullPathNameW
(
orig_path_w
,
GIT_WIN_PATH_UTF16
,
buffer_w
,
NULL
);
...
@@ -449,18 +449,18 @@ int p_setenv(const char* name, const char* value, int overwrite)
...
@@ -449,18 +449,18 @@ int p_setenv(const char* name, const char* value, int overwrite)
int
p_access
(
const
char
*
path
,
mode_t
mode
)
int
p_access
(
const
char
*
path
,
mode_t
mode
)
{
{
git_win32_path
_utf16
buf
;
git_win32_path
buf
;
git__win32_path_
utf8_to_16
(
buf
,
path
);
git__win32_path_
from_c
(
buf
,
path
);
return
_waccess
(
buf
,
mode
);
return
_waccess
(
buf
,
mode
);
}
}
int
p_rename
(
const
char
*
from
,
const
char
*
to
)
int
p_rename
(
const
char
*
from
,
const
char
*
to
)
{
{
git_win32_path
_utf16
wfrom
;
git_win32_path
wfrom
;
git_win32_path
_utf16
wto
;
git_win32_path
wto
;
git__win32_path_
utf8_to_16
(
wfrom
,
from
);
git__win32_path_
from_c
(
wfrom
,
from
);
git__win32_path_
utf8_to_16
(
wto
,
to
);
git__win32_path_
from_c
(
wto
,
to
);
return
MoveFileExW
(
wfrom
,
wto
,
MOVEFILE_REPLACE_EXISTING
|
MOVEFILE_COPY_ALLOWED
)
?
0
:
-
1
;
return
MoveFileExW
(
wfrom
,
wto
,
MOVEFILE_REPLACE_EXISTING
|
MOVEFILE_COPY_ALLOWED
)
?
0
:
-
1
;
}
}
...
...
src/win32/utf-conv.h
View file @
abf37327
...
@@ -13,20 +13,19 @@
...
@@ -13,20 +13,19 @@
#define GIT_WIN_PATH_UTF16 (260 + 1)
#define GIT_WIN_PATH_UTF16 (260 + 1)
#define GIT_WIN_PATH_UTF8 (260 * 4 + 1)
#define GIT_WIN_PATH_UTF8 (260 * 4 + 1)
typedef
wchar_t
git_win32_path_utf16
[
GIT_WIN_PATH_UTF16
];
typedef
wchar_t
git_win32_path
[
GIT_WIN_PATH_UTF16
];
typedef
char
git_win32_path_utf8
[
GIT_WIN_PATH_UTF8
];
// dest_size is the size of dest in wchar_t's
// dest_size is the size of dest in wchar_t's
int
git__utf8_to_16
(
wchar_t
*
dest
,
size_t
dest_size
,
const
char
*
src
);
int
git__utf8_to_16
(
wchar_t
*
dest
,
size_t
dest_size
,
const
char
*
src
);
// dest_size is the size of dest in char's
// dest_size is the size of dest in char's
int
git__utf16_to_8
(
char
*
dest
,
size_t
dest_size
,
const
wchar_t
*
src
);
int
git__utf16_to_8
(
char
*
dest
,
size_t
dest_size
,
const
wchar_t
*
src
);
GIT_INLINE
(
int
)
git__win32_path_
utf8_to_16
(
git_win32_path_utf16
dest
,
const
char
*
src
)
GIT_INLINE
(
int
)
git__win32_path_
from_c
(
git_win32_path
dest
,
const
char
*
src
)
{
{
return
git__utf8_to_16
(
dest
,
GIT_WIN_PATH_UTF16
,
src
);
return
git__utf8_to_16
(
dest
,
GIT_WIN_PATH_UTF16
,
src
);
}
}
GIT_INLINE
(
int
)
git__win32_path_
utf16_to_8
(
git_win32_path_utf8
dest
,
const
wchar_t
*
src
)
GIT_INLINE
(
int
)
git__win32_path_
to_c
(
char
*
dest
,
const
git_win32_path
*
src
)
{
{
return
git__utf16_to_8
(
dest
,
GIT_WIN_PATH_UTF8
,
src
);
return
git__utf16_to_8
(
dest
,
GIT_WIN_PATH_UTF8
,
src
);
}
}
...
...
tests-clar/clar_libgit2.c
View file @
abf37327
...
@@ -56,12 +56,12 @@ void cl_git_rewritefile(const char *filename, const char *new_content)
...
@@ -56,12 +56,12 @@ void cl_git_rewritefile(const char *filename, const char *new_content)
char
*
cl_getenv
(
const
char
*
name
)
char
*
cl_getenv
(
const
char
*
name
)
{
{
git_win32_path
_utf16
name_utf16
;
git_win32_path
name_utf16
;
DWORD
alloc_len
;
DWORD
alloc_len
;
wchar_t
*
value_utf16
;
wchar_t
*
value_utf16
;
char
*
value_utf8
;
char
*
value_utf8
;
git__win32_path_
utf8_to_16
(
name_utf16
,
name
);
git__win32_path_
from_c
(
name_utf16
,
name
);
alloc_len
=
GetEnvironmentVariableW
(
name_utf16
,
NULL
,
0
);
alloc_len
=
GetEnvironmentVariableW
(
name_utf16
,
NULL
,
0
);
if
(
alloc_len
<=
0
)
if
(
alloc_len
<=
0
)
return
NULL
;
return
NULL
;
...
@@ -72,7 +72,7 @@ char *cl_getenv(const char *name)
...
@@ -72,7 +72,7 @@ char *cl_getenv(const char *name)
GetEnvironmentVariableW
(
name_utf16
,
value_utf16
,
alloc_len
);
GetEnvironmentVariableW
(
name_utf16
,
value_utf16
,
alloc_len
);
cl_assert
(
value_utf8
=
git__malloc
(
alloc_len
));
cl_assert
(
value_utf8
=
git__malloc
(
alloc_len
));
git__
win32_path_utf16_to_8
(
value_utf8
,
value_utf16
);
git__
utf16_to_8
(
value_utf8
,
alloc_len
,
value_utf16
);
git__free
(
value_utf16
);
git__free
(
value_utf16
);
...
@@ -81,13 +81,13 @@ char *cl_getenv(const char *name)
...
@@ -81,13 +81,13 @@ char *cl_getenv(const char *name)
int
cl_setenv
(
const
char
*
name
,
const
char
*
value
)
int
cl_setenv
(
const
char
*
name
,
const
char
*
value
)
{
{
git_win32_path
_utf16
name_utf16
;
git_win32_path
name_utf16
;
git_win32_path
_utf16
value_utf16
;
git_win32_path
value_utf16
;
git__win32_path_
utf8_to_16
(
name_utf16
,
name
);
git__win32_path_
from_c
(
name_utf16
,
name
);
if
(
value
)
{
if
(
value
)
{
git__win32_path_
utf8_to_16
(
value_utf16
,
value
);
git__win32_path_
from_c
(
value_utf16
,
value
);
cl_assert
(
SetEnvironmentVariableW
(
name_utf16
,
value_utf16
));
cl_assert
(
SetEnvironmentVariableW
(
name_utf16
,
value_utf16
));
}
else
{
}
else
{
/* Windows XP returns 0 (failed) when passing NULL for lpValue when
/* Windows XP returns 0 (failed) when passing NULL for lpValue when
...
@@ -107,12 +107,12 @@ int cl_setenv(const char *name, const char *value)
...
@@ -107,12 +107,12 @@ int cl_setenv(const char *name, const char *value)
* the source is a directory, a child of the source). */
* the source is a directory, a child of the source). */
int
cl_rename
(
const
char
*
source
,
const
char
*
dest
)
int
cl_rename
(
const
char
*
source
,
const
char
*
dest
)
{
{
git_win32_path
_utf16
source_utf16
;
git_win32_path
source_utf16
;
git_win32_path
_utf16
dest_utf16
;
git_win32_path
dest_utf16
;
unsigned
retries
=
1
;
unsigned
retries
=
1
;
git__win32_path_
utf8_to_16
(
source_utf16
,
source
);
git__win32_path_
from_c
(
source_utf16
,
source
);
git__win32_path_
utf8_to_16
(
dest_utf16
,
dest
);
git__win32_path_
from_c
(
dest_utf16
,
dest
);
while
(
!
MoveFileW
(
source_utf16
,
dest_utf16
))
{
while
(
!
MoveFileW
(
source_utf16
,
dest_utf16
))
{
/* Only retry if the error is ERROR_ACCESS_DENIED;
/* Only retry if the error is ERROR_ACCESS_DENIED;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment