]> git.sesse.net Git - vlc/commitdiff
Change vlc.stream() and vlc.memory_stream() error reporting to behave like lua's...
authorAntoine Cellerier <dionoea@videolan.org>
Tue, 2 Mar 2010 11:44:26 +0000 (12:44 +0100)
committerAntoine Cellerier <dionoea@videolan.org>
Tue, 2 Mar 2010 20:27:05 +0000 (21:27 +0100)
modules/misc/lua/libs/stream.c
share/lua/README.txt
share/lua/extensions/imdb.lua
share/lua/meta/art/01_musicbrainz.lua
share/lua/meta/art/10_googleimage.lua
share/lua/meta/fetcher/tvrage.lua
share/lua/modules/simplexml.lua
share/lua/sd/freebox.lua

index 4a940586e33da814b56887652099b59282a3de8a..4dcae620646de25394b1cc71ab42fcdbef2c194a 100644 (file)
@@ -62,7 +62,11 @@ static const luaL_Reg vlclua_stream_reg[] = {
 static int vlclua_stream_new_inner( lua_State *L, stream_t *p_stream )
 {
     if( !p_stream )
-        return luaL_error( L, "Error when opening stream" );
+    {
+        lua_pushnil( L );
+        lua_pushliteral( L, "Error when opening stream" );
+        return 2;
+    }
 
     stream_t **pp_stream = lua_newuserdata( L, sizeof( stream_t * ) );
     *pp_stream = p_stream;
index f7e6283edb527b78efc7d5758fbcf23e986f57aa..dec466fe63ae902441be743559a44b97c4b956da 100644 (file)
@@ -337,6 +337,9 @@ n:add_node( ... ): Same as sd.add_node(), but as a subnode of n.
 Stream
 ------
 stream( url ): Instantiate a stream object for specific url.
+memory_stream( string ): Instantiate a stream object containing a specific string.
+  Those two functions return the stream object upon success and nil if an
+  error occured, in that case, the second return value will be an error message.
 
 s = vlc.stream( "http://www.videolan.org/" )
 s:read( 128 ) -- read up to 128 characters. Return 0 if no more data is available (FIXME?).
index 2a36b1bb14153d75995e386f32571627cf036227..6509d562ee4130876bcc51b295b6f5a0a0ae677d 100644 (file)
@@ -100,7 +100,11 @@ function click_okay()
     -- Search IMDb
     local url = "http://www.imdb.com/find?s=all&q="
     local title = string.gsub(txt:get_text(), " ", "+")
-    local s = vlc.stream(url .. title)
+    local s, msg = vlc.stream(url .. title)
+    if not s then
+        vlc.msg.warn(msg)
+        return
+    end
 
     -- Fetch HTML data
     local data = s:read(65000)
@@ -171,7 +175,12 @@ function click_open()
 
     -- userLink:set_text("<a href=\"url\">" .. url .. "</a>")
 
-    local s = vlc.stream(url)
+    local s, msg = vlc.stream(url)
+    if not s then
+        vlc.msg.warn(msg)
+        return
+    end
+
     data = s:read(65000)
 
     text = "<h1>" .. titles[sel].title .. " (" .. titles[sel].year .. ")</h1>"
@@ -214,7 +223,11 @@ function click_open()
     text = text .. actors .. "</table>"
 
     text = text .. "<h2>Plot Summary</h2>"
-    s = vlc.stream(url .. "plotsummary")
+    s, msg = vlc.stream(url .. "plotsummary")
+    if not s then
+        vlc.msg.warn(msg)
+        return
+    end
     data = s:read(65000)
 
     -- We read only the first summary
index d35d2b43c01a9403ebd762d814014b0234e1db6a..934e9ad310c768fffaee9603d11c05656d915ac2 100644 (file)
@@ -34,6 +34,7 @@ function try_query(query)
     l = nil
     vlc.msg.dbg( query )
     local s = vlc.stream( query )
+    if not s then return nil end
     local page = s:read( 65653 )
 
     -- FIXME: multiple results may be available
index e123060c1cb11098c88a7fb32f983910183c37f8..a3cc35d75d6440906fcc7c1a9e97753e3839c58c 100644 (file)
@@ -49,6 +49,8 @@ function fetch_art()
         return nil
     end
     fd = vlc.stream( "http://images.google.com/images?q=" .. get_query( title ) )
+    if not fd then return nil end
+
     page = fd:read( 65653 )
     fd = nil
     _, _, arturl = string.find( page, "imgurl=([^&]+)" )
index 46c9df0bd17fa54531fdc4215d96906fd4129c8f..22a391d986fdeafd9628dbc4f47496e6e3070c34 100644 (file)
@@ -46,6 +46,7 @@ function fetch_meta()
     end
 
     local fd = vlc.stream("http://services.tvrage.com/feeds/search.php?show=" .. get_query(showName))
+    if not fd then return nil end
     local page = fd:read( 65653 )
     fd = nil
     _, _, showid = string.find( page, "<showid>(.-)</showid>" )
@@ -54,6 +55,7 @@ function fetch_meta()
     end
 
     fd = vlc.stream("http://services.tvrage.com/feeds/full_show_info.php?sid=" .. showid)
+    if not fd then return nil end
     page = fd:read( 65653 )
     fd = nil
     _, _, season = string.find(page, "<Season no=\""..seasonNumber.."\">(.-)</Season>")
index bda68a4869a3a3097c550470319b45a4eb0da48b..a7be6205d39fbd7cbea8d1b50e78872217cfcbff 100644 (file)
@@ -29,7 +29,8 @@ module("simplexml",package.seeall)
 --     text content (string)
 --]]
 
-local function parsexml(stream)
+local function parsexml(stream, errormsg)
+    if not stream then return nil, errormsg end
     local xml = vlc.xml()
     local reader = xml:create_reader(stream)
 
index 08bb515a62daf537fddd60c418faa0a22b6357e8..0ba209ba6b063877eef6062ecb4f1da025611027 100644 (file)
@@ -25,7 +25,11 @@ function descriptor()
 end
 
 function main()
-    local fd = vlc.stream( "http://mafreebox.freebox.fr/freeboxtv/playlist.m3u" )
+    local fd, msg = vlc.stream( "http://mafreebox.freebox.fr/freeboxtv/playlist.m3u" )
+    if not fd then
+        vlc.msg.warn(msg)
+        return nil
+    end
     local line=  fd:readline()
     if line ~= "#EXTM3U" then
         return nil