]> git.sesse.net Git - vlc/commitdiff
Implement plugin support for OS/2
authorKO Myung-Hun <komh@chollian.net>
Mon, 10 Oct 2011 11:44:19 +0000 (20:44 +0900)
committerRémi Denis-Courmont <remi@remlab.net>
Fri, 14 Oct 2011 14:57:41 +0000 (17:57 +0300)
Signed-off-by: Rémi Denis-Courmont <remi@remlab.net>
src/Makefile.am
src/modules/bank.c

index 9cd66497f870949528f9ed38c659b44477aa04bf..0e617e27ccc7e108056c635e4e506beec0a9d6aa 100644 (file)
@@ -280,6 +280,7 @@ SOURCES_libvlc_os2 = \
        os2/dirs.c \
        misc/atomic.c \
        posix/filesystem.c \
+       posix/plugin.c \
        os2/thread.c \
        os2/specific.c \
        $(NULL)
index b6cf6d04bb78b3b4f7a065bb60c5bfbd106f0d5a..ad1610282d69eaa2beda71ac649eb5d814e9022e 100644 (file)
@@ -426,10 +426,17 @@ static void AllocatePluginDir (module_bank_t *bank, unsigned maxdepth,
             static const char suffix[] = "_plugin"LIBEXT;
             size_t len = strlen (file);
 
+#ifndef __OS2__
             /* Check that file matches the "lib*_plugin"LIBEXT pattern */
             if (len > strlen (suffix)
              && !strncmp (file, prefix, strlen (prefix))
              && !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);
         }
         else if (S_ISDIR (st.st_mode))
@@ -505,6 +512,13 @@ static int AllocatePluginFile (module_bank_t *bank, const char *abspath,
     return  0;
 }
 
+#ifdef __OS2__
+#   define EXTERN_PREFIX "_"
+#else
+#   define EXTERN_PREFIX
+#endif
+
+
 /**
  * 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,
         return NULL;
 
     /* 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) module_Lookup (handle, entry_name);
     if (entry == NULL)