summaryrefslogtreecommitdiff
path: root/misc
diff options
context:
space:
mode:
authordavi <davi@13f79535-47bb-0310-9956-ffa450edef68>2007-07-22 16:29:26 +0000
committerdavi <davi@13f79535-47bb-0310-9956-ffa450edef68>2007-07-22 16:29:26 +0000
commit9cd59498fcf24de4305a190424d61d2a559ae7ab (patch)
treedeaa83d5fd7b0c183ed47bbed68942660023c33f /misc
parent1d7d6944f8de025d0df2434f695af5ef7af9e096 (diff)
downloadlibapr-9cd59498fcf24de4305a190424d61d2a559ae7ab.tar.gz
misc/win32/misc.c depends on _UNICODE not being set and all Windows API calls
being char* based. On WinCE, _UNICODE is forced to be set. This patch modifies the Windows version detection code to use TCHAR and adds the explicit "A" qualifier to LoadLibrary and GetProcAddress so the char* based versions are used regardless. Submitted by: Curt Arnold PR: 39889 git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@558506 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'misc')
-rw-r--r--misc/win32/misc.c28
1 files changed, 20 insertions, 8 deletions
diff --git a/misc/win32/misc.c b/misc/win32/misc.c
index 97b294711..9fc3e8422 100644
--- a/misc/win32/misc.c
+++ b/misc/win32/misc.c
@@ -19,6 +19,7 @@
#include "apr_arch_file_io.h"
#include "assert.h"
#include "apr_lib.h"
+#include "tchar.h"
APR_DECLARE_DATA apr_oslevel_e apr_os_level = APR_WIN_UNK;
@@ -33,13 +34,17 @@ apr_status_t apr_get_oslevel(apr_oslevel_e *level)
if (oslev.dwPlatformId == VER_PLATFORM_WIN32_NT)
{
static unsigned int servpack = 0;
- char *pservpack;
+ TCHAR *pservpack;
if (pservpack = oslev.szCSDVersion) {
while (*pservpack && !apr_isdigit(*pservpack)) {
pservpack++;
}
if (*pservpack)
+#ifdef _UNICODE
+ servpack = _wtoi(pservpack);
+#else
servpack = atoi(pservpack);
+#endif
}
if (oslev.dwMajorVersion < 3) {
@@ -100,22 +105,22 @@ apr_status_t apr_get_oslevel(apr_oslevel_e *level)
}
#ifndef WINNT
else if (oslev.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) {
- char *prevision;
+ TCHAR *prevision;
if (prevision = oslev.szCSDVersion) {
while (*prevision && !apr_isupper(*prevision)) {
prevision++;
}
}
- else prevision = "";
+ else prevision = _T("");
if (oslev.dwMinorVersion < 10) {
- if (*prevision < 'C')
+ if (*prevision < _T('C'))
apr_os_level = APR_WIN_95;
else
apr_os_level = APR_WIN_95_OSR2;
}
else if (oslev.dwMinorVersion < 90) {
- if (*prevision < 'A')
+ if (*prevision < _T('A'))
apr_os_level = APR_WIN_98;
else
apr_os_level = APR_WIN_98_SE;
@@ -163,14 +168,21 @@ static HMODULE lateDllHandle[DLL_defined] = {
FARPROC apr_load_dll_func(apr_dlltoken_e fnLib, char* fnName, int ordinal)
{
if (!lateDllHandle[fnLib]) {
- lateDllHandle[fnLib] = LoadLibrary(lateDllName[fnLib]);
+ lateDllHandle[fnLib] = LoadLibraryA(lateDllName[fnLib]);
if (!lateDllHandle[fnLib])
return NULL;
}
+#if defined(_WIN32_WCE)
+ if (ordinal)
+ return GetProcAddressA(lateDllHandle[fnLib], (char *) ordinal);
+ else
+ return GetProcAddressA(lateDllHandle[fnLib], fnName);
+#else
if (ordinal)
return GetProcAddress(lateDllHandle[fnLib], (char *) ordinal);
else
return GetProcAddress(lateDllHandle[fnLib], fnName);
+#endif
}
/* Declared in include/arch/win32/apr_dbg_win32_handles.h
@@ -198,10 +210,10 @@ APR_DECLARE_NONSTD(HANDLE) apr_dbg_log(char* fn, HANDLE ha, char* fl, int ln,
(TlsSetValue)(tlsid, sbuf);
sbuf[1023] = '\0';
if (!fh) {
- (GetModuleFileName)(NULL, sbuf, 250);
+ (GetModuleFileNameA)(NULL, sbuf, 250);
sprintf(strchr(sbuf, '\0'), ".%d",
(GetCurrentProcessId)());
- fh = (CreateFile)(sbuf, GENERIC_WRITE, 0, NULL,
+ fh = (CreateFileA)(sbuf, GENERIC_WRITE, 0, NULL,
CREATE_ALWAYS, 0, NULL);
(InitializeCriticalSection)(&cs);
}