From a79027743ab00911a839a76420e7e26a741ceee3 Mon Sep 17 00:00:00 2001 From: Jens Arnold Date: Mon, 16 Jan 2006 23:20:58 +0000 Subject: Model & version check for simulator plugins. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8356 a1c6a512-1295-4272-9138-f99709370657 --- uisimulator/common/io.c | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) (limited to 'uisimulator/common/io.c') diff --git a/uisimulator/common/io.c b/uisimulator/common/io.c index a5353af5e5..1871b29395 100644 --- a/uisimulator/common/io.c +++ b/uisimulator/common/io.c @@ -303,7 +303,7 @@ int sim_fsync(int fd) #include #endif -void *sim_codec_load_ram(char* codecptr, int size, +void *sim_codec_load_ram(char* codecptr, int size, void* ptr2, int bufwrap, int *pd_fd) { void *pd; @@ -372,22 +372,21 @@ void *sim_codec_load_ram(char* codecptr, int size, void sim_codec_close(int pd) { - dlclose((void *)pd); + dlclose((void *)pd); } void *sim_plugin_load(char *plugin, int *fd) { - void* pd; + void *pd, *hdr; char path[256]; - int (*plugin_start)(void * api, void* param); #ifdef WIN32 char buf[256]; #endif snprintf(path, sizeof path, "archos%s", plugin); - - *fd = -1; + *fd = 0; + pd = dlopen(path, RTLD_NOW); if (!pd) { DEBUGF("failed to load %s\n", plugin); @@ -402,16 +401,12 @@ void *sim_plugin_load(char *plugin, int *fd) return NULL; } - plugin_start = dlsym(pd, "plugin_start"); - if (!plugin_start) { - plugin_start = dlsym(pd, "_plugin_start"); - if (!plugin_start) { - dlclose(pd); - return NULL; - } - } + hdr = dlsym(pd, "__header"); + if (!hdr) + hdr = dlsym(pd, "___header"); + *fd = (int)pd; /* success */ - return plugin_start; + return hdr; /* maybe NULL if symbol not present */ } void sim_plugin_close(int pd) -- cgit v1.2.3