]> git.sesse.net Git - vlc/blobdiff - src/modules/modules.c
Cleanup private and volatile option
[vlc] / src / modules / modules.c
index 8c4d009e0d5a4417228ebf137d2707d531e74571..e4929523a4077508ecb0d73d88bc8da5d51d4a4c 100644 (file)
@@ -55,7 +55,7 @@
 
 #include "config/configuration.h"
 
-#include "vlc_charset.h"
+#include <vlc_fs.h>
 #include "vlc_arrays.h"
 
 #include "modules/modules.h"
@@ -83,6 +83,7 @@ static void   DupModule        ( module_t * );
 static void   UndupModule      ( module_t * );
 #endif
 
+#undef module_InitBank
 /**
  * Init bank
  *
@@ -91,7 +92,7 @@ static void   UndupModule      ( module_t * );
  * \param p_this vlc object structure
  * \return nothing
  */
-void __module_InitBank( vlc_object_t *p_this )
+void module_InitBank( vlc_object_t *p_this )
 {
     module_bank_t *p_bank = NULL;
 
@@ -200,7 +201,7 @@ void module_EndBank( vlc_object_t *p_this, bool b_plugins )
  * \param p_this vlc object structure
  * \return nothing
  */
-void module_LoadPlugins( vlc_object_t * p_this, bool b_cache_delete )
+void module_LoadPlugins( vlc_object_t * p_this )
 {
     module_bank_t *p_bank = p_module_bank;
 
@@ -213,11 +214,7 @@ void module_LoadPlugins( vlc_object_t * p_this, bool b_cache_delete )
         msg_Dbg( p_this, "checking plugin modules" );
         p_module_bank->b_cache = var_InheritBool( p_this, "plugins-cache" );
 
-        if( p_module_bank->b_cache || b_cache_delete )
-            CacheLoad( p_this, p_module_bank, b_cache_delete );
         AllocateAllPlugins( p_this, p_module_bank );
-        if( p_module_bank->b_cache )
-            CacheSave( p_this, p_bank );
         config_UnsortConfig ();
         config_SortConfig ();
     }
@@ -391,6 +388,7 @@ static int modulecmp (const void *a, const void *b)
     return lb->i_score - la->i_score;
 }
 
+#undef module_need
 /**
  * module Need
  *
@@ -403,8 +401,8 @@ static int modulecmp (const void *a, const void *b)
  *                 but the same capability
  * \return the module or NULL in case of a failure
  */
-module_t * __module_need( vlc_object_t *p_this, const char *psz_capability,
-                          const char *psz_name, bool b_strict )
+module_t * module_need( vlc_object_t *p_this, const char *psz_capability,
+                        const char *psz_name, bool b_strict )
 {
     stats_TimerStart( p_this, "module_need()", STATS_TIMER_MODULE_NEED );
 
@@ -592,30 +590,11 @@ found_shortcut:
                                                : p_module->psz_object_name );
     }
     else if( count == 0 )
-    {
-        if( !strcmp( psz_capability, "access_demux" )
-         || !strcmp( psz_capability, "stream_filter" )
-         || !strcmp( psz_capability, "vout_window" ) )
-        {
-            msg_Dbg( p_this, "no %s module matched \"%s\"",
-                psz_capability, (psz_name && *psz_name) ? psz_name : "any" );
-        }
-        else
-        {
-            msg_Err( p_this, "no %s module matched \"%s\"",
+        msg_Dbg( p_this, "no %s module matched \"%s\"",
                  psz_capability, (psz_name && *psz_name) ? psz_name : "any" );
-
-            msg_StackSet( VLC_EGENERIC, "no %s module matched \"%s\"",
-                 psz_capability, (psz_name && *psz_name) ? psz_name : "any" );
-        }
-    }
-    else if( psz_name != NULL && *psz_name )
-    {
-        msg_Warn( p_this, "no %s module matching \"%s\" could be loaded",
-                  psz_capability, (psz_name && *psz_name) ? psz_name : "any" );
-    }
     else
-        msg_StackSet( VLC_EGENERIC, "no suitable %s module", psz_capability );
+        msg_Dbg( p_this, "no %s module matching \"%s\" could be loaded",
+                  psz_capability, (psz_name && *psz_name) ? psz_name : "any" );
 
     free( psz_shortcuts );
     free( psz_var );
@@ -628,6 +607,7 @@ found_shortcut:
     return p_module;
 }
 
+#undef module_unneed
 /**
  * Module unneed
  *
@@ -637,7 +617,7 @@ found_shortcut:
  * \param p_module the module structure
  * \return nothing
  */
-void __module_unneed( vlc_object_t * p_this, module_t * p_module )
+void module_unneed( vlc_object_t * p_this, module_t * p_module )
 {
     /* Use the close method */
     if( p_module->pf_deactivate )
@@ -750,7 +730,6 @@ module_config_t *module_config_get( const module_t *module, unsigned *restrict p
     {
         const module_config_t *item = module->p_config + i;
         if( item->b_internal /* internal option */
-         || item->b_unsaveable /* non-modifiable option */
          || item->b_removed /* removed option */ )
             continue;
 
@@ -836,17 +815,14 @@ static void AllocateAllPlugins( vlc_object_t *p_this, module_bank_t *p_bank )
     int count,i;
     char * path;
     vlc_array_t *arraypaths = vlc_array_new();
+    const bool b_reset = var_InheritBool( p_this, "reset-plugins-cache" );
 
     /* Contruct the special search path for system that have a relocatable
-     * executable. Set it to <vlc path>/modules and <vlc path>/plugins. */
+     * executable. Set it to <vlc path>/plugins. */
+    assert( vlcpath );
 
-    if( vlcpath && asprintf( &path, "%s" DIR_SEP "modules", vlcpath ) != -1 )
-        vlc_array_append( arraypaths, path );
-    if( vlcpath && asprintf( &path, "%s" DIR_SEP "plugins", vlcpath ) != -1 )
+    if( asprintf( &path, "%s" DIR_SEP "plugins", vlcpath ) != -1 )
         vlc_array_append( arraypaths, path );
-#ifndef WIN32
-    vlc_array_append( arraypaths, strdup( PLUGIN_PATH ) );
-#endif
 
     /* If the user provided a plugin path, we add it to the list */
     char *userpaths = var_InheritString( p_this, "plugin-path" );
@@ -866,11 +842,20 @@ static void AllocateAllPlugins( vlc_object_t *p_this, module_bank_t *p_bank )
         if( !path )
             continue;
 
+        size_t offset = p_module_bank->i_cache;
+        if( b_reset )
+            CacheDelete( p_this, path );
+        else
+            CacheLoad( p_this, p_module_bank, path );
+
         msg_Dbg( p_this, "recursively browsing `%s'", path );
 
         /* Don't go deeper than 5 subdirectories */
         AllocatePluginDir( p_this, p_bank, path, 5 );
 
+
+        CacheSave( p_this, path, p_module_bank->pp_cache + offset,
+                   p_module_bank->i_cache - offset );
         free( path );
     }
 
@@ -887,14 +872,14 @@ static void AllocatePluginDir( vlc_object_t *p_this, module_bank_t *p_bank,
     if( i_maxdepth == 0 )
         return;
 
-    DIR *dh = utf8_opendir (psz_dir);
+    DIR *dh = vlc_opendir (psz_dir);
     if (dh == NULL)
         return;
 
     /* Parse the directory and try to load all files it contains. */
     for (;;)
     {
-        char *file = utf8_readdir (dh), *path;
+        char *file = vlc_readdir (dh), *path;
         struct stat st;
 
         if (file == NULL)
@@ -911,7 +896,7 @@ static void AllocatePluginDir( vlc_object_t *p_this, module_bank_t *p_bank,
 
         const int pathlen = asprintf (&path, "%s"DIR_SEP"%s", psz_dir, file);
         free (file);
-        if (pathlen == -1 || utf8_stat (path, &st))
+        if (pathlen == -1 || vlc_stat (path, &st))
             continue;
 
         if (S_ISDIR (st.st_mode))