X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fmisc%2Flua%2Fmeta.c;h=a56fd091d2f27cd63916d2de8463c8d347b0397e;hb=2c24456389d6518d0d429c0c4f41e5bf52c2d793;hp=23220ca2b7eab65a65c1cb556e2ddb9319632093;hpb=5942b165dda37a5fc14ebc82b40f0d910bb5b4a5;p=vlc diff --git a/modules/misc/lua/meta.c b/modules/misc/lua/meta.c index 23220ca2b7..a56fd091d2 100644 --- a/modules/misc/lua/meta.c +++ b/modules/misc/lua/meta.c @@ -51,7 +51,7 @@ *****************************************************************************/ static const luaL_Reg p_reg[] = { { NULL, NULL } }; -static lua_State * init( vlc_object_t *p_this, input_item_t * p_item ) +static lua_State * init( vlc_object_t *p_this, input_item_t * p_item, const char *psz_filename ) { lua_State * L = luaL_newstate(); if( !L ) @@ -60,6 +60,8 @@ static lua_State * init( vlc_object_t *p_this, input_item_t * p_item ) return NULL; } + vlclua_set_this( L, p_this ); + /* Load Lua libraries */ luaL_openlibs( L ); /* XXX: Don't open all the libs? */ @@ -71,10 +73,17 @@ static lua_State * init( vlc_object_t *p_this, input_item_t * p_item ) luaopen_variables( L ); luaopen_object( L ); luaopen_misc( L ); + luaopen_xml( L ); + luaopen_md5( L ); luaopen_input_item( L, p_item ); - lua_pushlightuserdata( L, p_this ); - lua_setfield( L, -2, "private" ); + if( vlclua_add_modules_path( p_this, L, psz_filename ) ) + { + msg_Warn( p_this, "Error while setting the module search path for %s", + psz_filename ); + lua_close( L ); + return NULL; + } return L; } @@ -131,7 +140,9 @@ static int fetch_art( vlc_object_t *p_this, const char * psz_filename, input_item_t * p_item = user_data; int s; - lua_State *L = init( p_this, p_item ); + lua_State *L = init( p_this, p_item, psz_filename ); + if( !L ) + return VLC_EGENERIC; int i_ret = run(p_this, psz_filename, L, "fetch_art"); if(i_ret != VLC_SUCCESS) @@ -178,7 +189,9 @@ static int read_meta( vlc_object_t *p_this, const char * psz_filename, void * user_data ) { input_item_t * p_item = user_data; - lua_State *L = init( p_this, p_item ); + lua_State *L = init( p_this, p_item, psz_filename ); + if( !L ) + return VLC_EGENERIC; int i_ret = run(p_this, psz_filename, L, "read_meta"); if(i_ret != VLC_SUCCESS) @@ -201,7 +214,9 @@ static int fetch_meta( vlc_object_t *p_this, const char * psz_filename, void * user_data ) { input_item_t * p_item = user_data; - lua_State *L = init( p_this, p_item ); + lua_State *L = init( p_this, p_item, psz_filename ); + if( !L ) + return VLC_EGENERIC; int ret = run(p_this, psz_filename, L, "fetch_meta"); lua_close( L ); @@ -218,9 +233,8 @@ int ReadMeta( vlc_object_t *p_this ) demux_meta_t *p_demux_meta = (demux_meta_t *)p_this; input_item_t *p_item = p_demux_meta->p_item; - int i_ret = vlclua_scripts_batch_execute( p_this, "meta/reader", &read_meta, p_item ); - - return i_ret; + return vlclua_scripts_batch_execute( p_this, "meta"DIR_SEP"reader", + &read_meta, p_item ); } @@ -233,9 +247,8 @@ int FetchMeta( vlc_object_t *p_this ) demux_meta_t *p_demux_meta = (demux_meta_t *)p_this; input_item_t *p_item = p_demux_meta->p_item; - int i_ret = vlclua_scripts_batch_execute( p_this, "meta/fetcher", &fetch_meta, p_item ); - - return i_ret; + return vlclua_scripts_batch_execute( p_this, "meta"DIR_SEP"fetcher", + &fetch_meta, p_item ); } @@ -247,8 +260,7 @@ int FindArt( vlc_object_t *p_this ) art_finder_t *p_finder = (art_finder_t *)p_this; input_item_t *p_item = p_finder->p_item; - int i_ret = vlclua_scripts_batch_execute( p_this, "meta/art", &fetch_art, p_item ); - - return i_ret; + return vlclua_scripts_batch_execute( p_this, "meta"DIR_SEP"art", + &fetch_art, p_item ); }