[vlc-devel] [PATCH] cue.lua: fix file path concatenation

Pierre Ynard linkfanel at yahoo.fr
Sat Jan 7 13:41:19 CET 2012


Use the same approach as in the playlist module

This should fix #5398

Untested on Windows, please someone test this with good cue samples


diff --git a/share/lua/playlist/cue.lua b/share/lua/playlist/cue.lua
index 384a40f..794a400 100644
--- a/share/lua/playlist/cue.lua
+++ b/share/lua/playlist/cue.lua
@@ -43,15 +43,14 @@ function cue_path( src )
 	if( string.match( src, "^/" ) or
 		string.match( src, "^\\" ) or
 		string.match( src, "^[%l%u]:\\" ) ) then
-		return src
+		return vlc.strings.make_uri(src)
 	end
 
-	local path = string.gsub( vlc.strings.decode_uri(vlc.path), '\\', '/' )
-	local slash = string.find( string.reverse( path ), '/' )
-	if( path == nil ) then
-		return src
-	end
-	return string.sub( path, 1, -slash-1 ) .. '/' .. src
+	local slash = string.find( string.reverse( vlc.path ), '/' )
+        local prefix = vlc.access .. "://" .. string.sub( vlc.path, 1, -slash )
+        -- FIXME: postfix may not be encoded correctly (esp. slashes)
+        local postfix = vlc.strings.encode_uri_component(src)
+	return prefix .. postfix
 end
 
 function cue_track( global, track )
@@ -60,7 +59,7 @@ function cue_track( global, track )
 	end
 
 	t = {}
-	t.path = vlc.strings.make_uri(cue_path( track.file or global.file ))
+	t.path = cue_path( track.file or global.file )
 	t.title = track.title
 	t.album = global.title
 	t.artist = track.performer or global.performer


-- 
Pierre Ynard
"Une âme dans un corps, c'est comme un dessin sur une feuille de papier."



More information about the vlc-devel mailing list