From 224dccda75ba3b1f701c881d3e86a5eb9e126342 Mon Sep 17 00:00:00 2001 From: Geoffroy Couprie Date: Wed, 20 May 2009 00:36:26 +0200 Subject: [PATCH] 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. --- 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 e1ab43b7fc..3689e12f24 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 940d5f4992..c29d11f064 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, " \n" @@ -567,6 +572,8 @@ static int WriteXSPF( char **pp_buffer, vlc_array_t *p_filenames, /* Close extension and playlist */ if( astrcatf( pp_buffer, " \n\n" ) < 0 ) return -1; + /* printf( "%s", *pp_buffer ); */ + free_all_node( playlist ); return VLC_SUCCESS; -- 2.39.2