]> git.sesse.net Git - vlc/blobdiff - src/misc/modules_plugin.h.in
* fixed several format string inconsistencies and deprecated C constructions.
[vlc] / src / misc / modules_plugin.h.in
index 5eb609b10dd9f243b8ef957b1699f6167ccb52fc..192b53ddd081f62642e83fd84d56a5c29c561576 100644 (file)
@@ -2,7 +2,7 @@
  * modules_plugin.h : Plugin management functions used by the core application.
  *****************************************************************************
  * Copyright (C) 2001 VideoLAN
- * $Id: modules_plugin.h.in,v 1.2 2002/08/04 12:18:41 sam Exp $
+ * $Id: modules_plugin.h.in,v 1.8 2002/12/06 10:10:39 sam Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *
@@ -10,7 +10,7 @@
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
  * (at your option) any later version.
- * 
+ *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * This function loads a dynamically linked library using a system dependant
  * method, and returns a non-zero value on error, zero otherwise.
  *****************************************************************************/
-static inline int module_load( const char * psz_filename,
-                               module_handle_t * handle )
+static int module_load( const MYCHAR * psz_filename, module_handle_t * handle )
 {
 #ifdef SYS_BEOS
     *handle = load_add_on( psz_filename );
     return( *handle < 0 );
 
-#elif defined(WIN32)
+#elif defined(WIN32) || defined(UNDER_CE)
     *handle = LoadLibrary( psz_filename );
-    return( *handle == NULL ); 
+    return( *handle == NULL );
 
 #elif defined(RTLD_NOW)
 #   if defined(SYS_LINUX)
     /* We should NOT open modules with RTLD_GLOBAL, or we are going to get
      * namespace collisions when two modules have common public symbols,
      * but ALSA is being a pest here. */
-    if( strstr( psz_filename, "alsa.so" ) )
+    if( strstr( psz_filename, "alsa" ) )
     {
         *handle = dlopen( psz_filename, RTLD_NOW | RTLD_GLOBAL );
         return( *handle == NULL );
@@ -70,12 +69,12 @@ static inline int module_load( const char * psz_filename,
  * using a system dependant method. No return value is taken in consideration,
  * since some libraries sometimes refuse to close properly.
  *****************************************************************************/
-static inline void module_unload( module_handle_t handle )
+static void module_unload( module_handle_t handle )
 {
 #ifdef SYS_BEOS
     unload_add_on( handle );
 
-#elif defined(WIN32)
+#elif defined(WIN32) || defined(UNDER_CE)
     FreeLibrary( handle );
 
 #else
@@ -92,32 +91,38 @@ static inline void module_unload( module_handle_t handle )
  * string, and returns a pointer to it. We don't check for dlerror() or
  * similar functions, since we want a non-NULL symbol anyway.
  *****************************************************************************/
-static inline void * _module_getsymbol( module_handle_t handle,
-                                        const char * psz_function )
+static void * _module_getsymbol( module_handle_t handle,
+                                 const char * psz_function )
 {
 #ifdef SYS_BEOS
     void * p_symbol;
     if( B_OK == get_image_symbol( handle, psz_function,
                                   B_SYMBOL_TYPE_TEXT, &p_symbol ) )
     {
-        return( p_symbol );
+        return p_symbol;
     }
     else
     {
-        return( NULL );
+        return NULL;
     }
 
-#elif defined(WIN32)
-    return( (void *)GetProcAddress( handle, psz_function ) );
+#elif defined( UNDER_CE )
+    wchar_t psz_real[256];
+    MultiByteToWideChar( CP_ACP, 0, psz_function, -1, psz_real, 256 );
+
+    return (void *)GetProcAddress( handle, psz_real );
+
+#elif defined( WIN32 )
+    return (void *)GetProcAddress( handle, (MYCHAR*)psz_function );
 
 #else
-    return( dlsym( handle, psz_function ) );
+    return dlsym( handle, psz_function );
 
 #endif
 }
 
-static inline void * module_getsymbol( module_handle_t handle,
-                                       const char * psz_function )
+static void * module_getsymbol( module_handle_t handle,
+                                const char * psz_function )
 {
     void * p_symbol = _module_getsymbol( handle, psz_function );
 
@@ -145,17 +150,42 @@ static inline void * module_getsymbol( module_handle_t handle,
  * function. psz_buffer can be used to store temporary data, it is guaranteed
  * to be kept intact until the return value of module_error has been used.
  *****************************************************************************/
-static inline const char * module_error( char *psz_buffer )
+static const char * module_error( char *psz_buffer )
 {
 #if defined(SYS_BEOS)
-    return( "failed" );
+    return "failed";
+
+#elif defined(UNDER_CE)
+    wchar_t psz_tmp[256];
+
+    int i, i_error = GetLastError();
+
+    FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
+                   NULL, i_error, MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT),
+                   (LPTSTR) psz_tmp, 256, NULL );
+
+    /* Go to the end of the string */
+    for( i = 0;
+         psz_tmp[i] && psz_tmp[i] != L'\r' && psz_tmp[i] != L'\n';
+         i++ ) {};
+
+    if( psz_tmp[i] )
+    {
+        swprintf( psz_tmp + i, L" (error %i)", i_error );
+        psz_tmp[ 255 ] = L'\0';
+    }
+
+    WideCharToMultiByte( CP_ACP, WC_DEFAULTCHAR, psz_tmp, -1,
+                         psz_buffer, 256, NULL, NULL );
+
+    return psz_buffer;
 
 #elif defined(WIN32)
     int i, i_error = GetLastError();
 
     FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
                    NULL, i_error, MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT),
-                   (LPTSTR) psz_buffer, 256, NULL);
+                   (LPTSTR) psz_buffer, 256, NULL );
 
     /* Go to the end of the string */
     for( i = 0;
@@ -165,13 +195,13 @@ static inline const char * module_error( char *psz_buffer )
     if( psz_buffer[i] )
     {
         snprintf( psz_buffer + i, 256 - i, " (error %i)", i_error );
-       psz_buffer[ 255 ] = '\0';
+        psz_buffer[ 255 ] = '\0';
     }
-    
+
     return psz_buffer;
 
 #else
-    return( dlerror() );
+    return dlerror();
 
 #endif
 }