Implement complementary LoadLibraryA shim under WCE.
[openssl.git] / crypto / dso / dso_win32.c
index 317606ac5b301719754632a05634e6efdf5f9d9a..9c9412310543ab176553b2ad42c865af8e7bd621 100644 (file)
@@ -68,6 +68,49 @@ DSO_METHOD *DSO_METHOD_win32(void)
        }
 #else
 
+#ifdef _WIN32_WCE
+# if _WIN32_WCE < 300
+static FARPROC GetProcAddressA(HMODULE hModule,LPCSTR lpProcName)
+       {
+       WCHAR lpProcNameW[64];
+       int i;
+
+       for (i=0;lpProcName[i] && i<64;i++)
+               lpProcNameW[i] = (WCHAR)lpProcName[i];
+       if (i==64) return NULL;
+       lpProcNameW[i] = 0;
+
+       return GetProcAddressW(hModule,lpProcNameW);
+       }
+# endif
+# undef GetProcAddress
+# define GetProcAddress GetProcAddressA
+
+static HINSTANCE LoadLibraryA(LPCSTR *lpLibFileName)
+       {
+       WCHAR *fnamw;
+       size_t len_0=strlen(lpLibFileName)+1,i;
+
+#ifdef _MSC_VER
+       fname = (WCHAR *)_alloca (len_0*sizeof(WCHAR));
+#else
+       fnamw = (WCHAR *)alloca (len_0*sizeof(WCHAR));
+#endif
+       if (fnamw == NULL)
+               {
+               SetLastError(ERROR_NOT_ENOUGH_MEMORY);
+               return NULL;
+               }
+
+#if defined(_WIN32_WCE) && _WIN32_WCE>=101
+       if (!MultiByteToWideChar(CP_ACP,0,lpLibFileName,len_0,fnamw,len_0))
+#endif
+               for (i=0;i<len_0;i++) fnamw[i]=(WCHAR)lpLibFileName[i];
+
+       return LoadLibraryW(fnamw);
+       }
+#endif
+
 /* Part of the hack in "win32_load" ... */
 #define DSO_MAX_TRANSLATED_SIZE 256
 
@@ -289,8 +332,8 @@ static struct file_st *win32_splitter(DSO *dso, const char *filename,
        memset(result, 0, sizeof(struct file_st));
        position = IN_DEVICE;
 
-       if(filename[0] == '\\' && filename[1] == '\\'
-               || filename[0] == '/' && filename[1] == '/')
+       if((filename[0] == '\\' && filename[1] == '\\')
+               || (filename[0] == '/' && filename[1] == '/'))
                {
                position = IN_NODE;
                filename += 2;
@@ -597,22 +640,6 @@ static const char *openssl_strnchr(const char *string, int c, size_t len)
 
 #include <tlhelp32.h>
 #ifdef _WIN32_WCE
-# if _WIN32_WCE < 300
-static FARPROC GetProcAddressA(HMODULE hModule,LPCSTR lpProcName)
-       {
-       WCHAR lpProcNameW[64];
-       int i;
-
-       for (i=0;lpProcName[i] && i<64;i++)
-               lpProcNameW[i] = (WCHAR)lpProcName[i];
-       if (i==64) return NULL;
-       lpProcNameW[i] = 0;
-
-       return GetProcAddressW(hModule,lpProcNameW);
-       }
-# endif
-# undef GetProcAddress
-# define GetProcAddress GetProcAddressA
 # define DLLNAME "TOOLHELP.DLL"
 #else
 # ifdef MODULEENTRY32