Win utf8 treatment for CreateFile.
Patch from Janne Hyvärinen <cse@sci.fi>.
This commit is contained in:
parent
92db3c951e
commit
52fab8ba7e
@ -10,7 +10,7 @@ extern "C" {
|
||||
#include <stdio.h>
|
||||
#include <sys/stat.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
int get_utf8_argv(int *argc, char ***argv);
|
||||
|
||||
@ -28,6 +28,7 @@ int rename_utf8(const char *oldname, const char *newname);
|
||||
size_t strlen_utf8(const char *str);
|
||||
int win_get_console_width(void);
|
||||
int print_console(FILE *stream, const wchar_t *text, uint32_t len);
|
||||
HANDLE WINAPI CreateFile_utf8(const char *lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
|
@ -127,8 +127,8 @@ FLAC__bool grabbag__file_are_same(const char *f1, const char *f2)
|
||||
BY_HANDLE_FILE_INFORMATION info1, info2;
|
||||
HANDLE h1, h2;
|
||||
BOOL ok = 1;
|
||||
h1 = CreateFile(f1, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||
h2 = CreateFile(f2, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||
h1 = CreateFile_utf8(f1, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||
h2 = CreateFile_utf8(f2, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||
if(h1 == INVALID_HANDLE_VALUE || h2 == INVALID_HANDLE_VALUE)
|
||||
ok = 0;
|
||||
ok &= GetFileInformationByHandle(h1, &info1);
|
||||
|
@ -307,3 +307,16 @@ int rename_utf8(const char *oldname, const char *newname)
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
HANDLE WINAPI CreateFile_utf8(const char *lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile)
|
||||
{
|
||||
wchar_t *wname;
|
||||
HANDLE handle = INVALID_HANDLE_VALUE;
|
||||
|
||||
if ((wname = wchar_from_utf8(lpFileName)) != NULL) {
|
||||
handle = CreateFileW(wname, dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile);
|
||||
free(wname);
|
||||
}
|
||||
|
||||
return handle;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user