[vlc-commits] VLSub: Simplify path manipulations

Hugo Beauzée-Luyssen git at videolan.org
Mon Apr 16 18:57:12 CEST 2018


vlc | branch: master | Hugo Beauzée-Luyssen <hugo at beauzee.fr> | Mon Apr 16 17:59:18 2018 +0200| [31855b9c098c2c1ec0bf073dbf1723677af8805f] | committer: Hugo Beauzée-Luyssen

VLSub: Simplify path manipulations

Most of the info we used to extract isn't required anymore
This is now using path instead of URI, this way we will use a path when
calling path2uri back when loading the subtitle, which fixes the
convertion, and fixes loading subtitles on windows.
Fix #20114

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=31855b9c098c2c1ec0bf073dbf1723677af8805f
---

 share/lua/extensions/VLSub.lua | 56 ++++--------------------------------------
 1 file changed, 5 insertions(+), 51 deletions(-)

diff --git a/share/lua/extensions/VLSub.lua b/share/lua/extensions/VLSub.lua
index c853d2a856..1b76733adf 100644
--- a/share/lua/extensions/VLSub.lua
+++ b/share/lua/extensions/VLSub.lua
@@ -1224,62 +1224,16 @@ openSub = {
     if not item then
       file.hasInput = false;
       file.cleanName = nil;
-      file.protocol = nil;
-      file.path = nil;
-      file.ext = nil;
       file.uri = nil;
     else
       vlc.msg.dbg("[VLSub] Video URI: "..item:uri())
-      local parsed_uri = vlc.strings.url_parse(item:uri())
       file.uri = item:uri()
-      file.protocol = parsed_uri["protocol"]
-      file.path = parsed_uri["path"]
-
-    -- Corrections
-
-      -- For windows
-      file.path = string.match(file.path, "^/(%a:/.+)$") or file.path
-
-      -- For file in archive
-      local archive_path, name_in_archive = string.match(
-        file.path, '^([^!]+)!/([^!/]*)$')
-      if archive_path and archive_path ~= "" then
-        file.path = string.gsub(
-          archive_path,
-          '\063',
-          '%%')
-        file.path = vlc.strings.decode_uri(file.path)
-        file.completeName = string.gsub(
-          name_in_archive,
-          '\063',
-          '%%')
-        file.completeName = vlc.strings.decode_uri(
-          file.completeName)
-        file.is_archive = true
-      else -- "classic" input
-        file.path = vlc.strings.decode_uri(file.path)
-        file.dir, file.completeName = string.match(
-          file.path,
-          '^(.*/)([^/]*)$')
-
-        local file_stat = vlc.net.stat(file.path)
-        if file_stat
-        then
-          file.stat = file_stat
-        end
-
-        file.is_archive = false
-      end
-
-      file.name, file.ext = string.match(
-        file.completeName,
-        '^([^/]-)%.?([^%.]*)$')
-
-      if file.ext == "part" then
-        file.name, file.ext = string.match(
-          file.name,
-          '^([^/]+)%.([^%.]+)$')
+      local filePath = vlc.strings.make_path(file.uri)
+      file.dir, file.name = string.match(filePath, "^(.*[".. slash .."])([^" .. slash .. "]-).?[%a%d]*$")
+      if not file.name then
+        file.name = filePath
       end
+    -- Corrections
 
       file.hasInput = true;
       file.cleanName = string.gsub(



More information about the vlc-commits mailing list