int p_unlink(const char *path)
{
- wchar_t buf[GIT_WIN_PATH];
- git__utf8_to_16(buf, GIT_WIN_PATH, path);
+ wchar_t buf[GIT_WIN_PATH_UTF16];
+ git__utf8_to_16(buf, GIT_WIN_PATH_UTF16, path);
_wchmod(buf, 0666);
return _wunlink(buf);
}
const char *file_name, struct stat *buf, int posix_enotdir)
{
WIN32_FILE_ATTRIBUTE_DATA fdata;
- wchar_t fbuf[GIT_WIN_PATH], lastch;
+ wchar_t fbuf[GIT_WIN_PATH_UTF16], lastch;
int flen;
- flen = git__utf8_to_16(fbuf, GIT_WIN_PATH, file_name);
+ flen = git__utf8_to_16(fbuf, GIT_WIN_PATH_UTF16, file_name);
/* truncate trailing slashes */
for (; flen > 0; --flen) {
* the length of the path pointed to, which we expect everywhere else
*/
if (S_ISLNK(fMode)) {
- char target[GIT_WIN_PATH];
+ char target[GIT_WIN_PATH_UTF8];
int readlink_result;
- readlink_result = p_readlink(file_name, target, GIT_WIN_PATH);
+ readlink_result = p_readlink(file_name, target, GIT_WIN_PATH_UTF8);
if (readlink_result == -1)
return -1;
static fpath_func pGetFinalPath = NULL;
HANDLE hFile;
DWORD dwRet;
- wchar_t link_w[GIT_WIN_PATH];
+ wchar_t link_w[GIT_WIN_PATH_UTF16];
wchar_t* target_w;
int error = 0;
}
}
- git__utf8_to_16(link_w, GIT_WIN_PATH, link);
+ git__utf8_to_16(link_w, GIT_WIN_PATH_UTF16, link);
hFile = CreateFileW(link_w, // file to open
GENERIC_READ, // open for reading
int p_open(const char *path, int flags, ...)
{
- wchar_t buf[GIT_WIN_PATH];
+ wchar_t buf[GIT_WIN_PATH_UTF16];
mode_t mode = 0;
- git__utf8_to_16(buf, GIT_WIN_PATH, path);
+ git__utf8_to_16(buf, GIT_WIN_PATH_UTF16, path);
if (flags & O_CREAT) {
va_list arg_list;
int p_creat(const char *path, mode_t mode)
{
- wchar_t buf[GIT_WIN_PATH];
- git__utf8_to_16(buf, GIT_WIN_PATH, path);
+ wchar_t buf[GIT_WIN_PATH_UTF16];
+ git__utf8_to_16(buf, GIT_WIN_PATH_UTF16, path);
return _wopen(buf, _O_WRONLY | _O_CREAT | _O_TRUNC | _O_BINARY, mode);
}
int p_stat(const char* path, struct stat* buf)
{
- char target[GIT_WIN_PATH];
+ char target[GIT_WIN_PATH_UTF8];
int error = 0;
error = do_lstat(path, buf, 0);
/* We need not do this in a loop to unwind chains of symlinks since
* p_readlink calls GetFinalPathNameByHandle which does it for us. */
if (error >= 0 && S_ISLNK(buf->st_mode) &&
- (error = p_readlink(path, target, GIT_WIN_PATH)) >= 0)
+ (error = p_readlink(path, target, GIT_WIN_PATH_UTF8)) >= 0)
error = do_lstat(target, buf, 0);
return error;
int p_chdir(const char* path)
{
- wchar_t buf[GIT_WIN_PATH];
- git__utf8_to_16(buf, GIT_WIN_PATH, path);
+ wchar_t buf[GIT_WIN_PATH_UTF16];
+ git__utf8_to_16(buf, GIT_WIN_PATH_UTF16, path);
return _wchdir(buf);
}
int p_chmod(const char* path, mode_t mode)
{
- wchar_t buf[GIT_WIN_PATH];
- git__utf8_to_16(buf, GIT_WIN_PATH, path);
+ wchar_t buf[GIT_WIN_PATH_UTF16];
+ git__utf8_to_16(buf, GIT_WIN_PATH_UTF16, path);
return _wchmod(buf, mode);
}
int p_rmdir(const char* path)
{
int error;
- wchar_t buf[GIT_WIN_PATH];
- git__utf8_to_16(buf, GIT_WIN_PATH, path);
+ wchar_t buf[GIT_WIN_PATH_UTF16];
+ git__utf8_to_16(buf, GIT_WIN_PATH_UTF16, path);
error = _wrmdir(buf);
int p_hide_directory__w32(const char *path)
{
- wchar_t buf[GIT_WIN_PATH];
- git__utf8_to_16(buf, GIT_WIN_PATH, path);
+ wchar_t buf[GIT_WIN_PATH_UTF16];
+ git__utf8_to_16(buf, GIT_WIN_PATH_UTF16, path);
return (SetFileAttributesW(buf, FILE_ATTRIBUTE_HIDDEN) != 0) ? 0 : -1;
}
char *p_realpath(const char *orig_path, char *buffer)
{
int ret;
- wchar_t orig_path_w[GIT_WIN_PATH];
- wchar_t buffer_w[GIT_WIN_PATH];
+ wchar_t orig_path_w[GIT_WIN_PATH_UTF16];
+ wchar_t buffer_w[GIT_WIN_PATH_UTF16];
- git__utf8_to_16(orig_path_w, GIT_WIN_PATH, orig_path);
+ git__utf8_to_16(orig_path_w, GIT_WIN_PATH_UTF16, orig_path);
/* Implicitly use GetCurrentDirectory which can be a threading issue */
- ret = GetFullPathNameW(orig_path_w, GIT_WIN_PATH, buffer_w, NULL);
+ ret = GetFullPathNameW(orig_path_w, GIT_WIN_PATH_UTF16, buffer_w, NULL);
/* According to MSDN, a return value equals to zero means a failure. */
- if (ret == 0 || ret > GIT_WIN_PATH)
+ if (ret == 0 || ret > GIT_WIN_PATH_UTF16)
buffer = NULL;
else if (GetFileAttributesW(buffer_w) == INVALID_FILE_ATTRIBUTES) {
int p_access(const char* path, mode_t mode)
{
- wchar_t buf[GIT_WIN_PATH];
- git__utf8_to_16(buf, GIT_WIN_PATH, path);
+ wchar_t buf[GIT_WIN_PATH_UTF16];
+ git__utf8_to_16(buf, GIT_WIN_PATH_UTF16, path);
return _waccess(buf, mode);
}
int p_rename(const char *from, const char *to)
{
- wchar_t wfrom[GIT_WIN_PATH];
- wchar_t wto[GIT_WIN_PATH];
+ wchar_t wfrom[GIT_WIN_PATH_UTF16];
+ wchar_t wto[GIT_WIN_PATH_UTF16];
- git__utf8_to_16(wfrom, GIT_WIN_PATH, from);
- git__utf8_to_16(wto, GIT_WIN_PATH, to);
+ git__utf8_to_16(wfrom, GIT_WIN_PATH_UTF16, from);
+ git__utf8_to_16(wto, GIT_WIN_PATH_UTF16, to);
return MoveFileExW(wfrom, wto, MOVEFILE_REPLACE_EXISTING | MOVEFILE_COPY_ALLOWED) ? 0 : -1;
}
char *cl_getenv(const char *name)
{
- wchar_t name_utf16[GIT_WIN_PATH];
+ wchar_t name_utf16[GIT_WIN_PATH_UTF16];
DWORD alloc_len;
wchar_t *value_utf16;
char *value_utf8;
- git__utf8_to_16(name_utf16, GIT_WIN_PATH, name);
+ git__utf8_to_16(name_utf16, GIT_WIN_PATH_UTF16, name);
alloc_len = GetEnvironmentVariableW(name_utf16, NULL, 0);
if (alloc_len <= 0)
return NULL;
- alloc_len = GIT_WIN_PATH;
+ alloc_len = GIT_WIN_PATH_UTF8;
cl_assert(value_utf16 = git__calloc(alloc_len, sizeof(wchar_t)));
GetEnvironmentVariableW(name_utf16, value_utf16, alloc_len);
int cl_setenv(const char *name, const char *value)
{
- wchar_t name_utf16[GIT_WIN_PATH];
- wchar_t value_utf16[GIT_WIN_PATH];
+ wchar_t name_utf16[GIT_WIN_PATH_UTF16];
+ wchar_t value_utf16[GIT_WIN_PATH_UTF16];
- git__utf8_to_16(name_utf16, GIT_WIN_PATH, name);
+ git__utf8_to_16(name_utf16, GIT_WIN_PATH_UTF16, name);
if (value) {
- git__utf8_to_16(value_utf16, GIT_WIN_PATH, value);
+ git__utf8_to_16(value_utf16, GIT_WIN_PATH_UTF16, value);
cl_assert(SetEnvironmentVariableW(name_utf16, value_utf16));
} else {
/* Windows XP returns 0 (failed) when passing NULL for lpValue when
* the source is a directory, a child of the source). */
int cl_rename(const char *source, const char *dest)
{
- wchar_t source_utf16[GIT_WIN_PATH];
- wchar_t dest_utf16[GIT_WIN_PATH];
+ wchar_t source_utf16[GIT_WIN_PATH_UTF16];
+ wchar_t dest_utf16[GIT_WIN_PATH_UTF16];
unsigned retries = 1;
- git__utf8_to_16(source_utf16, GIT_WIN_PATH, source);
- git__utf8_to_16(dest_utf16, GIT_WIN_PATH, dest);
+ git__utf8_to_16(source_utf16, GIT_WIN_PATH_UTF16, source);
+ git__utf8_to_16(dest_utf16, GIT_WIN_PATH_UTF16, dest);
while (!MoveFileW(source_utf16, dest_utf16)) {
/* Only retry if the error is ERROR_ACCESS_DENIED;