Mercurial > mplayer.hg
changeset 6996:163f78ece9c2
add uri2filename converter
author | pontscho |
---|---|
date | Wed, 14 Aug 2002 12:17:04 +0000 |
parents | 8f92313a0cd5 |
children | 85fc65e6667f |
files | Gui/interface.c Gui/interface.h Gui/mplayer/mw.h Gui/mplayer/play.c Gui/mplayer/widgets.c |
diffstat | 5 files changed, 59 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/Gui/interface.c Wed Aug 14 09:15:31 2002 +0000 +++ b/Gui/interface.c Wed Aug 14 12:17:04 2002 +0000 @@ -29,6 +29,14 @@ #include <inttypes.h> #include <sys/types.h> +#ifdef USE_ICONV + #ifdef __FreeBSD__ + #include <giconv.h> + #else + #include <iconv.h> + #endif +#endif + #include "../libmpdemux/stream.h" #include "../libmpdemux/demuxer.h" @@ -76,6 +84,49 @@ else gstrcat( str,what ); } +#ifdef USE_ICONV +char * gconvert_uri_to_filename( char * str ) +{ + iconv_t d; + char * out = strdup( str ); + char * tmp = NULL; + char * ize; + size_t inb,outb; + char * charset = "ISO8859-1"; + char * cs; + + if ( !strchr( str,'%' ) ) return str; + + { + char * t = calloc( 1,strlen( out ) ); + int i,c = 0; + for ( i=0;i < (int)strlen( out );i++ ) + if ( out[i] != '%' ) t[c++]=out[i]; + else + { + char tmp[4] = "0xXX"; +// if ( out[++i] == '%' ) { t[c++]='%'; continue; }; + tmp[2]=out[++i]; tmp[3]=out[++i]; + t[c++]=(char)strtol( tmp,(char **)NULL,0 ); + } + free( out ); + out=t; + } + + if ( (cs=getenv( "CHARSET" )) && *cs ) charset=cs; + + inb=outb=strlen( out ); + tmp=calloc( 1,outb + 1 ); + ize=tmp; + d=iconv_open( charset,"UTF-8" ); + if ( (iconv_t)(-1) == d ) return str; + iconv( d,&out,&inb,&tmp,&outb ); + iconv_close( d ); + free( out ); + return ize; +} +#endif + void guiInit( void ) { memset( &guiIntfStruct,0,sizeof( guiIntfStruct ) );
--- a/Gui/interface.h Wed Aug 14 09:15:31 2002 +0000 +++ b/Gui/interface.h Wed Aug 14 12:17:04 2002 +0000 @@ -171,6 +171,7 @@ extern void * gtkSet( int cmd,float param, void * vparam ); +extern char * gconvert_uri_to_filename( char * str ); extern char * gstrdup( char * str ); extern int gstrcmp( char * a,char * b ); extern void gfree( void ** p );
--- a/Gui/mplayer/mw.h Wed Aug 14 09:15:31 2002 +0000 +++ b/Gui/mplayer/mw.h Wed Aug 14 12:17:04 2002 +0000 @@ -668,20 +668,13 @@ char* str = strdup( files[f] ); plItem* item; +#ifdef USE_ICONV if ( strchr( str,'%' ) ) { - char * t = calloc( 1,strlen( str ) ); - int i,c = 0; - for ( i=0;i < strlen( str );i++ ) - if ( str[i] != '%' ) t[c++]=str[i]; - else - { - char tmp[4] = "0xXX"; -// if ( str[++i] == '%' ) { t[c++]='%'; continue; }; - tmp[2]=str[++i]; tmp[3]=str[++i]; t[c++]=(char)strtol( tmp,(char **)NULL,16 ); - } - free( str ); str=t; + char * tmp=gconvert_uri_to_filename( str ); + free( str ); str=tmp; } +#endif if(stat(str,&buf) == 0 && S_ISDIR(buf.st_mode) == 0) { /* this is not a directory so try to play it */
--- a/Gui/mplayer/play.c Wed Aug 14 09:15:31 2002 +0000 +++ b/Gui/mplayer/play.c Wed Aug 14 12:17:04 2002 +0000 @@ -107,9 +107,11 @@ guiIntfStruct.TimeSec=0; guiIntfStruct.Position=0; guiIntfStruct.AudioType=0; +#ifdef USE_DVDREAD guiIntfStruct.DVD.current_title=1; guiIntfStruct.DVD.current_chapter=1; guiIntfStruct.DVD.current_angle=1; +#endif if ( !appMPlayer.subWindow.isFullScreen ) {