You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by wr...@apache.org on 2002/02/12 02:14:15 UTC

cvs commit: apr/dso/win32 dso.c

wrowe       02/02/11 17:14:15

  Modified:    dso/win32 dso.c
  Log:
    I'm still drudging through the 36 files for WCE... sorry they are slow
    in coming :)
  
  Submitted by:	Mladen Turk <mt...@mappingsoft.com>
  
  Revision  Changes    Path
  1.28      +26 -2     apr/dso/win32/dso.c
  
  Index: dso.c
  ===================================================================
  RCS file: /home/cvs/apr/dso/win32/dso.c,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- dso.c	28 Jan 2002 15:56:08 -0000	1.27
  +++ dso.c	12 Feb 2002 01:14:15 -0000	1.28
  @@ -56,6 +56,7 @@
   #include "apr_strings.h"
   #include "apr_private.h"
   #include "fileio.h"
  +#include "i18n.h"
   
   #if APR_HAS_DSO
   
  @@ -86,7 +87,9 @@
   {
       HINSTANCE os_handle;
       apr_status_t rv;
  +#ifndef _WIN32_WCE
       UINT em;
  +#endif
   
   #if APR_HAS_UNICODE_FS
       IF_WIN_OS_IS_UNICODE 
  @@ -99,15 +102,19 @@
               return ((*res_handle)->load_error = rv);
           }
           /* Prevent ugly popups from killing our app */
  +#ifndef _WIN32_WCE
           em = SetErrorMode(SEM_FAILCRITICALERRORS);
  +#endif
           os_handle = LoadLibraryExW(wpath, NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
           if (!os_handle)
               os_handle = LoadLibraryExW(wpath, NULL, 0);
           if (!os_handle)
               rv = apr_get_os_error();
  +#ifndef _WIN32_WCE
           SetErrorMode(em);
  -    }
   #endif
  +    }
  +#endif /* APR_HAS_UNICODE_FS */
   #if APR_HAS_ANSI_FS
       ELSE_WIN_OS_IS_ANSI
       {
  @@ -134,6 +141,7 @@
           SetErrorMode(em);
       }
   #endif
  +
       *res_handle = apr_pcalloc(ctx, sizeof(**res_handle));
       (*res_handle)->cont = ctx;
   
  @@ -158,8 +166,24 @@
                            struct apr_dso_handle_t *handle, 
                            const char *symname)
   {
  -    *ressym = (apr_dso_handle_sym_t)GetProcAddress(handle->handle, symname);
  +#ifdef _WIN32_WCE
  +    apr_size_t symlen = strlen(symname) + 1;
  +    apr_size_t wsymlen = 256;
  +    apr_wchar_t wsymname[256];
  +    apr_status_t rv;
  +
  +    rv = apr_conv_utf8_to_ucs2(wsymname, &wsymlen, symname, &symlen);
  +    if (rv != APR_SUCCESS) {
  +        return rv;
  +    }
  +    else if (symlen) {
  +        return APR_ENAMETOOLONG;
  +    }
   
  +    *ressym = (apr_dso_handle_sym_t)GetProcAddressW(handle->handle, wsymname);
  +#else
  +    *ressym = (apr_dso_handle_sym_t)GetProcAddress(handle->handle, symname);
  +#endif
       if (!*ressym) {
           return apr_get_os_error();
       }