summaryrefslogtreecommitdiff
path: root/navit/support
diff options
context:
space:
mode:
authormartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2011-05-09 12:41:42 +0000
committermartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2011-05-09 12:41:42 +0000
commit4ab9c940046989068689531fde072f920714f7bf (patch)
tree4751badd3d0432f1803ad76e8aee3da3fc729a18 /navit/support
parentabee08cd18cd82a1f0d8b34cddea8eaff7451c3e (diff)
downloadnavit-svn-4ab9c940046989068689531fde072f920714f7bf.tar.gz
Fix:support_libc:MSVC fixes
git-svn-id: http://svn.code.sf.net/p/navit/code/trunk/navit@4484 ffa7fe5e-494d-0410-b361-a75ebd5db220
Diffstat (limited to 'navit/support')
-rw-r--r--navit/support/libc/libc.c66
1 files changed, 66 insertions, 0 deletions
diff --git a/navit/support/libc/libc.c b/navit/support/libc/libc.c
index c56e96d0..c30a8ddf 100644
--- a/navit/support/libc/libc.c
+++ b/navit/support/libc/libc.c
@@ -4,6 +4,10 @@
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
+#ifdef PLATFORM_WINDOWS
+#include "windows.h"
+#endif
+
int errno;
#define MAXENV 32
@@ -179,4 +183,66 @@ intptr_t _get_osfhandle(int FileHandle)
return 0;
}
+#ifdef _MSC_VER
+
+HANDLE FindFirstFileA(char* pFileName, LPWIN32_FIND_DATAA pFindFileData)
+{
+ HANDLE hRetVal = INVALID_HANDLE_VALUE;
+ WIN32_FIND_DATAW wFindFileData;
+ wchar_t wFileName[MAX_PATH];
+
+ if (MultiByteToWideChar(CP_UTF8, MB_PRECOMPOSED, pFileName, -1, wFileName, MAX_PATH) != 0)
+ {
+ hRetVal = FindFirstFileW(wFileName, &wFindFileData);
+
+ pFindFileData->dwFileAttributes = wFindFileData.dwFileAttributes;
+ pFindFileData->ftCreationTime = wFindFileData.ftCreationTime;
+ pFindFileData->ftLastAccessTime = wFindFileData.ftLastAccessTime;
+ pFindFileData->ftLastWriteTime = wFindFileData.ftLastWriteTime;
+ pFindFileData->nFileSizeHigh = wFindFileData.nFileSizeHigh;
+ pFindFileData->nFileSizeLow = wFindFileData.nFileSizeLow;
+
+ if (WideCharToMultiByte(CP_UTF8, WC_SEPCHARS, wFileName, -1, pFindFileData->cFileName, MAX_PATH, NULL, NULL) == 0)
+ {
+ hRetVal = INVALID_HANDLE_VALUE;
+ }
+ }
+
+ return hRetVal;
+}
+
+BOOL FindNextFileA(HANDLE hFindFile, LPWIN32_FIND_DATAA pFindFileData)
+{
+ BOOL boRetVal = FALSE;
+ WIN32_FIND_DATAW wFindFileData;
+
+ wFindFileData.dwFileAttributes = pFindFileData->dwFileAttributes;
+ wFindFileData.ftCreationTime = pFindFileData->ftCreationTime;
+ wFindFileData.ftLastAccessTime = pFindFileData->ftLastAccessTime;
+ wFindFileData.ftLastWriteTime = pFindFileData->ftLastWriteTime;
+ wFindFileData.nFileSizeHigh = pFindFileData->nFileSizeHigh;
+ wFindFileData.nFileSizeLow = pFindFileData->nFileSizeLow;
+
+ if (MultiByteToWideChar(CP_UTF8, MB_PRECOMPOSED, pFindFileData->cFileName, -1, wFindFileData.cFileName, MAX_PATH) != 0)
+ {
+ boRetVal = FindNextFileW(hFindFile, &wFindFileData);
+
+ pFindFileData->dwFileAttributes = wFindFileData.dwFileAttributes;
+ pFindFileData->ftCreationTime = wFindFileData.ftCreationTime;
+ pFindFileData->ftLastAccessTime = wFindFileData.ftLastAccessTime;
+ pFindFileData->ftLastWriteTime = wFindFileData.ftLastWriteTime;
+ pFindFileData->nFileSizeHigh = wFindFileData.nFileSizeHigh;
+ pFindFileData->nFileSizeLow = wFindFileData.nFileSizeLow;
+
+ if (WideCharToMultiByte(CP_UTF8, WC_SEPCHARS, wFindFileData.cFileName, -1, pFindFileData->cFileName, MAX_PATH, NULL, NULL) == 0)
+ {
+ boRetVal = FALSE;
+ }
+ }
+
+ return boRetVal;
+}
+
+#endif
+
#endif