From c36a738c62bf8fd48468e1c07a62e2f37c1fb9f2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?R=C3=A9mi=20Denis-Courmont?= <remi@remlab.net>
Date: Sat, 7 Jul 2018 11:31:23 +0300
Subject: [PATCH] pls: autodetect Latin-1 if input is not UTF-8

---
 modules/demux/playlist/pls.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/modules/demux/playlist/pls.c b/modules/demux/playlist/pls.c
index 8ea3202b7071..b9ed4f88ac7a 100644
--- a/modules/demux/playlist/pls.c
+++ b/modules/demux/playlist/pls.c
@@ -31,6 +31,7 @@
 
 #include <vlc_common.h>
 #include <vlc_access.h>
+#include <vlc_charset.h>
 
 #include "playlist.h"
 
@@ -76,11 +77,26 @@ static int ReadDir( stream_t *p_demux, input_item_node_t *p_subitems )
     char          *psz_value;
     int            i_item = -1;
     input_item_t *p_input;
+    bool ascii = true;
+    bool unicode = true;
 
     input_item_t *p_current_input = GetCurrentItem(p_demux);
 
     while( ( psz_line = vlc_stream_ReadLine( p_demux->s ) ) )
     {
+        if (ascii && !IsASCII(psz_line))
+        {
+            unicode = IsUTF8(psz_line);
+            ascii = false;
+        }
+
+        if (!unicode)
+        {
+            char *latin = FromLatin1(psz_line);
+            free(psz_line);
+            psz_line = latin;
+        }
+
         if( !strncasecmp( psz_line, "[playlist]", sizeof("[playlist]")-1 ) ||
             !strncasecmp( psz_line, "[Reference]", sizeof("[Reference]")-1 ) )
         {
-- 
GitLab