mirror of https://code.videolan.org/videolan/vlc
. now we only try to open plugins which are existing files
This commit is contained in:
parent
50118171a9
commit
abcabca628
2
INSTALL
2
INSTALL
|
@ -11,7 +11,7 @@ A typical way to configure the vlc is :
|
|||
For a full compilation, you may try :
|
||||
|
||||
./configure --prefix=/usr --enable-mmx --enable-gnome --enable-fb \
|
||||
--enable-glide --enable-ggi --enable-mga --enable-esd --enable-alsa
|
||||
--enable-glide --enable-ggi --enable-sdl --enable-esd --enable-alsa
|
||||
|
||||
See `./configure --help' for more information.
|
||||
|
||||
|
|
|
@ -27,6 +27,10 @@
|
|||
#include <stdio.h> /* sprintf() */
|
||||
#include <string.h> /* strerror() */
|
||||
#include <errno.h> /* ENOMEM */
|
||||
#include <sys/types.h> /* open */
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h> /* close */
|
||||
|
||||
#if defined(HAVE_DLFCN_H) /* Linux, BSD, Hurd */
|
||||
#include <dlfcn.h> /* dlopen(), dlsym(), dlclose() */
|
||||
|
@ -135,7 +139,7 @@ void bank_Destroy( plugin_bank_t * p_bank )
|
|||
|
||||
char * TestPlugin ( plugin_id_t *p_plugin_id, char * psz_name )
|
||||
{
|
||||
int i_count, i_length;
|
||||
int i_count, i_length, i_fd;
|
||||
char * psz_plugin;
|
||||
char * psz_plugin_path[ ] =
|
||||
{
|
||||
|
@ -163,6 +167,15 @@ char * TestPlugin ( plugin_id_t *p_plugin_id, char * psz_name )
|
|||
psz_plugin = malloc( strlen(psz_plugin_path[i_count]) + i_length + 5 );
|
||||
sprintf( psz_plugin, "%s/%s.so", psz_plugin_path[i_count], psz_name );
|
||||
|
||||
/* Try to open the plugin before dlopen()ing it. */
|
||||
i_fd = open( psz_plugin, O_RDONLY );
|
||||
if( i_fd == -1 )
|
||||
{
|
||||
free( psz_plugin );
|
||||
continue;
|
||||
}
|
||||
close( i_fd );
|
||||
|
||||
*p_plugin_id = dlopen( psz_plugin, RTLD_NOW | RTLD_GLOBAL );
|
||||
#endif
|
||||
|
||||
|
@ -175,11 +188,9 @@ char * TestPlugin ( plugin_id_t *p_plugin_id, char * psz_name )
|
|||
/* plugin successfuly dlopened */
|
||||
return( psz_plugin );
|
||||
}
|
||||
|
||||
#ifndef SYS_BEOS
|
||||
else
|
||||
{
|
||||
intf_WarnMsg( 1, "dlerror: %s\n", dlerror() );
|
||||
}
|
||||
intf_WarnMsg( 1, "Plugin %s failed: %s\n", psz_plugin, dlerror() );
|
||||
#endif
|
||||
|
||||
free( psz_plugin );
|
||||
|
|
Loading…
Reference in New Issue