X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fmisc%2Flua%2Fextension.c;h=7fa4ca2fc2b3f38d5871f84da2008973c3f74e29;hb=b01d8a39bdd535a9ba1c732e972e6db16c7ff396;hp=5e6758298659e210bbeff2a037a6f5c503f24d2b;hpb=8b61de26db061836100c9f059aa2ca66864f759c;p=vlc diff --git a/modules/misc/lua/extension.c b/modules/misc/lua/extension.c index 5e67582986..7fa4ca2fc2 100644 --- a/modules/misc/lua/extension.c +++ b/modules/misc/lua/extension.c @@ -194,6 +194,18 @@ static int ScanExtensions( extensions_manager_t *p_mgr ) return VLC_SUCCESS; } +/** + * Dummy Lua function: does nothing + * @note This function can be used to replace "require" while scanning for + * extensions + * Even the built-in libraries are not loaded when calling descriptor() + **/ +static int vlclua_dummy_require( lua_State *L ) +{ + (void) L; + return 0; +} + /** * Batch scan all Lua files in folder "extensions": callback * @param p_this This extensions_manager_t object @@ -236,8 +248,11 @@ int ScanLuaCallback( vlc_object_t *p_this, const char *psz_script, vlc_mutex_init( &p_ext->p_sys->running_lock ); vlc_cond_init( &p_ext->p_sys->wait ); - /* Load and run the script(s) */ + /* Prepare Lua state */ lua_State *L = luaL_newstate(); + lua_register( L, "require", &vlclua_dummy_require ); + + /* Let's run it */ if( luaL_dofile( L, psz_script ) ) { msg_Warn( p_mgr, "Error loading script %s: %s", psz_script, @@ -251,14 +266,14 @@ int ScanLuaCallback( vlc_object_t *p_this, const char *psz_script, if( !lua_isfunction( L, -1 ) ) { - msg_Warn( p_mgr, "Error while runing script %s, " + msg_Warn( p_mgr, "Error while running script %s, " "function descriptor() not found", psz_script ); goto exit; } if( lua_pcall( L, 0, 1, 0 ) ) { - msg_Warn( p_mgr, "Error while runing script %s, " + msg_Warn( p_mgr, "Error while running script %s, " "function descriptor(): %s", psz_script, lua_tostring( L, lua_gettop( L ) ) ); goto exit; @@ -605,7 +620,7 @@ int lua_ExtensionWidgetClick( extensions_manager_t *p_mgr, * @param p_mgr * @param p_ext * @param pppsz_titles Pointer to NULL. All strings must be freed by the caller - * @param ppi_ids Pointer to NULL. Must be feed by the caller. + * @param ppi_ids Pointer to NULL. Must be freed by the caller. * @note This function is allowed to run in the UI thread. This means * that it MUST respond very fast. * @todo Remove the menu() hook and provide a new function vlc.set_menu() @@ -641,14 +656,14 @@ static int GetMenuEntries( extensions_manager_t *p_mgr, extension_t *p_ext, if( !lua_isfunction( L, -1 ) ) { - msg_Warn( p_mgr, "Error while runing script %s, " + msg_Warn( p_mgr, "Error while running script %s, " "function menu() not found", p_ext->psz_name ); goto exit; } if( lua_pcall( L, 0, 1, 0 ) ) { - msg_Warn( p_mgr, "Error while runing script %s, " + msg_Warn( p_mgr, "Error while running script %s, " "function menu(): %s", p_ext->psz_name, lua_tostring( L, lua_gettop( L ) ) ); goto exit; @@ -776,13 +791,6 @@ static lua_State* GetLuaState( extensions_manager_t *p_mgr, p_ext->p_sys->L = L; } } -#ifndef NDEBUG - else - { - msg_Dbg( p_mgr, "Reusing old Lua state for extension '%s'", - p_ext->psz_name ); - } -#endif return L; } @@ -820,7 +828,7 @@ int lua_ExecuteFunctionVa( extensions_manager_t *p_mgr, extension_t *p_ext, if( !lua_isfunction( L, -1 ) ) { - msg_Warn( p_mgr, "Error while runing script %s, " + msg_Warn( p_mgr, "Error while running script %s, " "function %s() not found", p_ext->psz_name, psz_function ); goto exit; } @@ -846,7 +854,7 @@ int lua_ExecuteFunctionVa( extensions_manager_t *p_mgr, extension_t *p_ext, } if( lua_pcall( L, i_args, 1, 0 ) ) { - msg_Warn( p_mgr, "Error while runing script %s, " + msg_Warn( p_mgr, "Error while running script %s, " "function %s(): %s", p_ext->psz_name, psz_function, lua_tostring( L, lua_gettop( L ) ) ); goto exit; @@ -877,7 +885,7 @@ int lua_ExtensionTriggerMenu( extensions_manager_t *p_mgr, lua_getglobal( L, "trigger_menu" ); if( !lua_isfunction( L, -1 ) ) { - msg_Warn( p_mgr, "Error while runing script %s, " + msg_Warn( p_mgr, "Error while running script %s, " "function trigger_menu() not found", p_ext->psz_name ); return VLC_EGENERIC; } @@ -887,7 +895,7 @@ int lua_ExtensionTriggerMenu( extensions_manager_t *p_mgr, if( lua_pcall( L, 1, 1, 0 ) != 0 ) { - msg_Warn( p_mgr, "Error while runing script %s, " + msg_Warn( p_mgr, "Error while running script %s, " "function trigger_menu(): %s", p_ext->psz_name, lua_tostring( L, lua_gettop( L ) ) ); return VLC_EGENERIC;