From e3d08b7955a57485d8d301f33c583641899153a6 Mon Sep 17 00:00:00 2001 From: Geoffroy Couprie Date: Thu, 14 May 2009 04:03:19 +0200 Subject: [PATCH] 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 --- modules/access/zip/zipaccess.c | 8 +++----- modules/access/zip/zipstream.c | 11 ++--------- 2 files changed, 5 insertions(+), 14 deletions(-) diff --git a/modules/access/zip/zipaccess.c b/modules/access/zip/zipaccess.c index 3689e12f24..e1ab43b7fc 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_pathToZip = NULL, *psz_path = NULL, *psz_sep = NULL; + char *psz_path = NULL, *psz_sep = NULL; p_access->p_sys = p_sys = (access_sys_t*) calloc( 1, sizeof( access_sys_t ) ); @@ -78,7 +78,6 @@ 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 */ @@ -94,10 +93,10 @@ int AccessOpen( vlc_object_t *p_this ) p_func->opaque = p_access; /* Open zip archive */ - file = p_access->p_sys->zipFile = unzOpen2( psz_pathToZip, p_func ); + file = p_access->p_sys->zipFile = unzOpen2( psz_path, p_func ); if( !file ) { - msg_Err( p_access, "not a valid zip archive: '%s'", psz_pathToZip ); + msg_Err( p_access, "not a valid zip archive: '%s'", psz_path ); goto exit; } @@ -131,7 +130,6 @@ 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 c29d11f064..940d5f4992 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 = vlc_UrlEncode( psz_zippath ); + /* Web-Encode the URI and append '|' */ + char *psz_pathtozip = make_URI( psz_zippath ); if( astrcatf( &psz_pathtozip, ZIP_SEP ) < 0 ) return -1; int i_track = 0; @@ -516,11 +516,6 @@ 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" @@ -572,8 +567,6 @@ 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