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 )
       {
--- a/Gui/mplayer/widgets.c	Wed Aug 14 09:15:31 2002 +0000
+++ b/Gui/mplayer/widgets.c	Wed Aug 14 12:17:04 2002 +0000
@@ -29,6 +29,7 @@
 
 #include "../../config.h"
 #include "../../help_mp.h"
+#include "../../mp_msg.h"
 
 GtkWidget     * PopUpMenu = NULL;