* 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>
*
* 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 );
* 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
* 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 );
* 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;
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
}