summaryrefslogtreecommitdiff
path: root/src/win_ascii.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/win_ascii.c')
-rw-r--r--src/win_ascii.c95
1 files changed, 95 insertions, 0 deletions
diff --git a/src/win_ascii.c b/src/win_ascii.c
new file mode 100644
index 0000000..d23dcd4
--- /dev/null
+++ b/src/win_ascii.c
@@ -0,0 +1,95 @@
+#include <windows.h>
+
+HANDLE WINAPI FindFirstFileA( LPCSTR path, LPWIN32_FIND_DATAA data ) {
+ WCHAR wbuffer[MAX_PATH];
+ HANDLE ret;
+ WIN32_FIND_DATAW wdata;
+
+ if( !MultiByteToWideChar( CP_ACP, 0, path, -1, wbuffer, MAX_PATH ) ) {
+ return INVALID_HANDLE_VALUE;
+ }
+
+ ret = FindFirstFileW( wbuffer, &wdata );
+ if( ret != INVALID_HANDLE_VALUE ) {
+ memcpy( data, &wdata, FIELD_OFFSET( WIN32_FIND_DATAA, cFileName ) );
+ WideCharToMultiByte( CP_ACP, 0, wdata.cFileName, -1, data->cFileName, MAX_PATH, NULL, NULL );
+ }
+
+ return ret;
+}
+
+BOOL WINAPI FindNextFileA( HANDLE handle, LPWIN32_FIND_DATAA data ) {
+ BOOL ret;
+ WIN32_FIND_DATAW wdata;
+
+ ret = FindNextFileW( handle, &wdata );
+ if( ret != FALSE ) {
+ memcpy( data, &wdata, FIELD_OFFSET( WIN32_FIND_DATAA, cFileName ) );
+ WideCharToMultiByte( CP_ACP, 0, wdata.cFileName, -1, data->cFileName, MAX_PATH, NULL, NULL );
+ }
+
+ return ret;
+}
+
+HINSTANCE WINAPI LoadLibraryA( LPCSTR path ) {
+ WCHAR wbuffer[MAX_PATH];
+
+ if( !MultiByteToWideChar( CP_ACP, 0, path, -1, wbuffer, MAX_PATH ) ) {
+ return NULL;
+ }
+
+ return LoadLibraryW( wbuffer );
+}
+
+int WINAPI MessageBoxA( HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType ) {
+ WCHAR wText[4096];
+ WCHAR wCaption[256];
+
+ if( !MultiByteToWideChar( CP_ACP, 0, lpText, -1, wText, 4096 ) ) {
+ return 0;
+ }
+ if( !MultiByteToWideChar( CP_ACP, 0, lpCaption, -1, wCaption, 256 ) ) {
+ return 0;
+ }
+
+ return MessageBoxW( hWnd, wText, wCaption, uType );
+}
+
+BOOL WINAPI CreateDirectoryA( LPCSTR lpPathName, LPSECURITY_ATTRIBUTES lpSecurityAttributes ) {
+ WCHAR wbuffer[MAX_PATH];
+
+ if( !MultiByteToWideChar( CP_ACP, 0, lpPathName, -1, wbuffer, MAX_PATH ) ) {
+ return FALSE;
+ }
+
+ return CreateDirectoryW( wbuffer, lpSecurityAttributes );
+}
+
+BOOL WINAPI GetFileAttributesExA( LPCSTR lpFileName, GET_FILEEX_INFO_LEVELS fInfoLevelId, LPVOID lpFileInformation ) {
+ WCHAR wbuffer[MAX_PATH];
+
+ if( !MultiByteToWideChar( CP_ACP, 0, lpFileName, -1, wbuffer, MAX_PATH ) ) {
+ return FALSE;
+ }
+
+ return GetFileAttributesExW( wbuffer, fInfoLevelId, lpFileInformation );
+}
+
+DWORD WINAPI GetModuleFileNameA( HMODULE hModule, LPSTR lpFileName, DWORD nSize ) {
+ WCHAR wbuffer[MAX_PATH];
+ DWORD ret;
+
+ if( nSize > MAX_PATH ) {
+ nSize = MAX_PATH;
+ }
+
+ ret = GetModuleFileNameW( hModule, wbuffer, nSize );
+ if( ret ) {
+ if( !WideCharToMultiByte( CP_ACP, 0, wbuffer, ret, lpFileName, ret, NULL, NULL ) ) {
+ return 0;
+ }
+ }
+
+ return ret;
+}
+