[vlc-commits] commit: Win32: hack^Wfix opening UNC paths (fixes #3459) ( Rémi Denis-Courmont )

git at videolan.org git at videolan.org
Sat May 8 21:52:04 CEST 2010


vlc/vlc-1.1 | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Sat May  8 22:50:44 2010 +0300| [3346aadca7606f15f1c08d72f5eb79ad91cf3ec2] | committer: Rémi Denis-Courmont 

Win32: hack^Wfix opening UNC paths (fixes #3459)

(cherry picked from commit e763137961d9b1096ba3121508b4526f32017a0f)

> http://git.videolan.org/gitweb.cgi/vlc/vlc-1.1.git/?a=commit;h=3346aadca7606f15f1c08d72f5eb79ad91cf3ec2
---

 src/input/input.c |   26 ++++++++++++++++----------
 1 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/src/input/input.c b/src/input/input.c
index 7596640..a29b3f7 100644
--- a/src/input/input.c
+++ b/src/input/input.c
@@ -2331,12 +2331,8 @@ static int InputSourceInit( input_thread_t *p_input,
      * for non-standard VLC-specific schemes. */
     if( !strcmp( psz_access, "file" ) )
     {
-        if( psz_path[0] != '/'
-#if (DIR_SEP_CHAR != '/')
-            /* We accept invalid URIs too. */
-            && psz_path[0] != DIR_SEP_CHAR
-#endif
-          )
+        if( psz_path[0] != '/' )
+#ifndef WIN32
         {   /* host specified -> only localhost is supported */
             static const size_t i_localhost = sizeof("localhost")-1;
             if( strncmp( psz_path, "localhost/", i_localhost + 1) != 0 )
@@ -2349,12 +2345,22 @@ static int InputSourceInit( input_thread_t *p_input,
             }
             psz_path += i_localhost;
         }
+#else
+        {
+            /* XXX: very very ugly. Always true for valid URIs though. */
+            if( (psz_path - psz_dup) >= 2 && psz_path[-2] && psz_path[-1] )
+            {
+                *(--psz_path) = '\\';
+                *(--psz_path) = '\\';
+            }
+            msg_Err( p_input, "REMOTE: %s", psz_path );
+        }
+        else
+            /* Strip leading slash in front of the drive letter */
+            psz_path++;
+#endif
         /* Then URI-decode the path. */
         decode_URI( psz_path );
-#if defined( WIN32 ) && !defined( UNDER_CE )
-        /* Strip leading slash in front of the drive letter */
-        psz_path++;
-#endif
 #if (DIR_SEP_CHAR != '/')
         /* Turn slashes into anti-slashes */
         for( char *s = strchr( psz_path, '/' ); s; s = strchr( s + 1, '/' ) )



More information about the vlc-commits mailing list