[vlc-devel] commit: Revert "zip access: fix #2467. Now it' s able to open files with non ASCII names, but can' t open files with non ASCII names inside of the zip file" ( Geoffroy Couprie )

git version control git at videolan.org
Wed May 20 00:36:50 CEST 2009


vlc | branch: master | Geoffroy Couprie <geal at videolan.org> | Wed May 20 00:36:26 2009 +0200| [224dccda75ba3b1f701c881d3e86a5eb9e126342] | committer: Geoffroy Couprie 

Revert "zip access: fix #2467. Now it's able to open files with non ASCII names, but can't open files with non ASCII names inside of the zip file"

This reverts commit e3d08b7955a57485d8d301f33c583641899153a6.

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

 modules/access/zip/zipaccess.c |    8 +++++---
 modules/access/zip/zipstream.c |   11 +++++++++--
 2 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/modules/access/zip/zipaccess.c b/modules/access/zip/zipaccess.c
index e1ab43b..3689e12 100644
--- a/modules/access/zip/zipaccess.c
+++ b/modules/access/zip/zipaccess.c
@@ -64,7 +64,7 @@ int AccessOpen( vlc_object_t *p_this )
     int i_ret              = VLC_EGENERIC;
     unzFile file           = 0;
 
-    char *psz_path = NULL, *psz_sep = NULL;
+    char *psz_pathToZip = NULL, *psz_path = NULL, *psz_sep = NULL;
 
     p_access->p_sys = p_sys = (access_sys_t*)
             calloc( 1, sizeof( access_sys_t ) );
@@ -78,6 +78,7 @@ int AccessOpen( vlc_object_t *p_this )
         return VLC_EGENERIC;
 
     *psz_sep = '\0';
+    psz_pathToZip = unescape_URI_duplicate( psz_path );
     p_sys->psz_fileInzip = strdup( psz_sep + 1 );
 
     /* Define IO functions */
@@ -93,10 +94,10 @@ int AccessOpen( vlc_object_t *p_this )
     p_func->opaque       = p_access;
 
     /* Open zip archive */
-    file = p_access->p_sys->zipFile = unzOpen2( psz_path, p_func );
+    file = p_access->p_sys->zipFile = unzOpen2( psz_pathToZip, p_func );
     if( !file )
     {
-        msg_Err( p_access, "not a valid zip archive: '%s'", psz_path );
+        msg_Err( p_access, "not a valid zip archive: '%s'", psz_pathToZip );
         goto exit;
     }
 
@@ -130,6 +131,7 @@ exit:
         free( p_sys );
     }
 
+    free( psz_pathToZip );
     free( psz_path );
     return i_ret;
 }
diff --git a/modules/access/zip/zipstream.c b/modules/access/zip/zipstream.c
index 940d5f4..c29d11f 100644
--- a/modules/access/zip/zipstream.c
+++ b/modules/access/zip/zipstream.c
@@ -488,8 +488,8 @@ static int WriteXSPF( char **pp_buffer, vlc_array_t *p_filenames,
     /* Root node */
     node *playlist = new_node( psz_zip );
 
-    /* Web-Encode the URI and append '|' */
-    char *psz_pathtozip = make_URI( psz_zippath );
+    /* Web-Encode the URI and append '!' */
+    char *psz_pathtozip = vlc_UrlEncode( psz_zippath );
     if( astrcatf( &psz_pathtozip, ZIP_SEP ) < 0 ) return -1;
 
     int i_track = 0;
@@ -516,6 +516,11 @@ static int WriteXSPF( char **pp_buffer, vlc_array_t *p_filenames,
             char *psz_path = strdup( psz_pathtozip );
             if( astrcatf( &psz_path, psz_name ) < 0 ) return -1;
 
+            /* Double url-encode */
+            char *psz_tmp = psz_path;
+            psz_path = vlc_UrlEncode( psz_tmp );
+            free( psz_tmp );
+
             /* Track information */
             if( astrcatf( pp_buffer,
                         "  <track>\n"
@@ -567,6 +572,8 @@ static int WriteXSPF( char **pp_buffer, vlc_array_t *p_filenames,
     /* Close extension and playlist */
     if( astrcatf( pp_buffer, " </extension>\n</playlist>\n" ) < 0 ) return -1;
 
+    /* printf( "%s", *pp_buffer ); */
+
     free_all_node( playlist );
 
     return VLC_SUCCESS;




More information about the vlc-devel mailing list