diff options
author | davi <davi@13f79535-47bb-0310-9956-ffa450edef68> | 2007-07-22 16:29:26 +0000 |
---|---|---|
committer | davi <davi@13f79535-47bb-0310-9956-ffa450edef68> | 2007-07-22 16:29:26 +0000 |
commit | 9cd59498fcf24de4305a190424d61d2a559ae7ab (patch) | |
tree | deaa83d5fd7b0c183ed47bbed68942660023c33f /misc | |
parent | 1d7d6944f8de025d0df2434f695af5ef7af9e096 (diff) | |
download | libapr-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.c | 28 |
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); } |