Commit e2557f56 authored by KO Myung-Hun's avatar KO Myung-Hun Committed by Rémi Denis-Courmont

Implement plugin support for OS/2

Signed-off-by: default avatarRémi Denis-Courmont <remi@remlab.net>
parent db9e83d7
...@@ -280,6 +280,7 @@ SOURCES_libvlc_os2 = \ ...@@ -280,6 +280,7 @@ SOURCES_libvlc_os2 = \
os2/dirs.c \ os2/dirs.c \
misc/atomic.c \ misc/atomic.c \
posix/filesystem.c \ posix/filesystem.c \
posix/plugin.c \
os2/thread.c \ os2/thread.c \
os2/specific.c \ os2/specific.c \
$(NULL) $(NULL)
......
...@@ -426,10 +426,17 @@ static void AllocatePluginDir (module_bank_t *bank, unsigned maxdepth, ...@@ -426,10 +426,17 @@ static void AllocatePluginDir (module_bank_t *bank, unsigned maxdepth,
static const char suffix[] = "_plugin"LIBEXT; static const char suffix[] = "_plugin"LIBEXT;
size_t len = strlen (file); size_t len = strlen (file);
#ifndef __OS2__
/* Check that file matches the "lib*_plugin"LIBEXT pattern */ /* Check that file matches the "lib*_plugin"LIBEXT pattern */
if (len > strlen (suffix) if (len > strlen (suffix)
&& !strncmp (file, prefix, strlen (prefix)) && !strncmp (file, prefix, strlen (prefix))
&& !strcmp (file + len - strlen (suffix), suffix)) && !strcmp (file + len - strlen (suffix), suffix))
#else
/* We load all the files ending with LIBEXT on OS/2,
* because OS/2 has a 8.3 length limitation for DLL name */
if (len > strlen (LIBEXT)
&& !strcasecmp (file + len - strlen (LIBEXT), LIBEXT))
#endif
AllocatePluginFile (bank, abspath, relpath, &st); AllocatePluginFile (bank, abspath, relpath, &st);
} }
else if (S_ISDIR (st.st_mode)) else if (S_ISDIR (st.st_mode))
...@@ -505,6 +512,13 @@ static int AllocatePluginFile (module_bank_t *bank, const char *abspath, ...@@ -505,6 +512,13 @@ static int AllocatePluginFile (module_bank_t *bank, const char *abspath,
return 0; return 0;
} }
#ifdef __OS2__
# define EXTERN_PREFIX "_"
#else
# define EXTERN_PREFIX
#endif
/** /**
* Loads a dynamically-linked plug-in into memory and initialize it. * Loads a dynamically-linked plug-in into memory and initialize it.
* *
...@@ -523,7 +537,7 @@ static module_t *module_InitDynamic (vlc_object_t *obj, const char *path, ...@@ -523,7 +537,7 @@ static module_t *module_InitDynamic (vlc_object_t *obj, const char *path,
return NULL; return NULL;
/* Try to resolve the symbol */ /* Try to resolve the symbol */
static const char entry_name[] = "vlc_entry" MODULE_SUFFIX; static const char entry_name[] = EXTERN_PREFIX "vlc_entry" MODULE_SUFFIX;
vlc_plugin_cb entry = vlc_plugin_cb entry =
(vlc_plugin_cb) module_Lookup (handle, entry_name); (vlc_plugin_cb) module_Lookup (handle, entry_name);
if (entry == NULL) if (entry == NULL)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment