r147 - in testing/vlc/debian: . patches
Samuel Hocevar
sho at alioth.debian.org
Wed Mar 14 14:22:16 CET 2007
Author: sho
Date: 2007-01-25 00:57:47 +0000 (Thu, 25 Jan 2007)
New Revision: 147
Removed:
testing/vlc/debian/patches/patch-configure.ac-syntax-0.8.6debian-0.8.6a.diff
testing/vlc/debian/patches/patch-mjpeg-separator-0.8.6debian-0.8.6a.diff
testing/vlc/debian/patches/patch-network-protocols-fixes-0.8.6debian-0.8.6a.diff
testing/vlc/debian/patches/patch-private-libcaca-0.8.6debian-0.8.6a.diff
testing/vlc/debian/patches/patch-remove-debug-messages-0.8.6debian-0.8.6a.diff
testing/vlc/debian/patches/patch-sanitise-javascript-0.8.6debian-0.8.6a.diff
testing/vlc/debian/patches/patch-sdl-image-priority-0.8.6debian-0.8.6a.diff
testing/vlc/debian/patches/patch-utf8-0.8.6debian-0.8.6a.diff
Modified:
testing/vlc/debian/changelog
testing/vlc/debian/control
testing/vlc/debian/patches/020_notify.diff
testing/vlc/debian/patches/patch-badly-initialised-data-0.8.6debian-0.8.6a.diff
testing/vlc/debian/patches/patch-documentation-0.8.6debian-0.8.6a.diff
testing/vlc/debian/patches/series
Log:
vlc (0.8.6-svn20061012.debian-4) testing-proposed-updates; urgency=high
* Removed disabled patches from the diff.gz.
* debian/control:
+ Added missing libxf86vm and libxinerama build-dependencies so that
architectures other than mine get fullscreen support.
* debian/patches/020_notify.diff:
+ Removed spurious "DATA_PATH" prepended to a full image path.
* debian/patches/patch-documentation-0.8.6debian-0.8.6a.diff:
+ Removed non-documentation part of the patch.
* debian/patches/patch-sanitise-javascript-0.8.6debian-0.8.6a.diff:
+ Removed non-vital patch.
* debian/patches/patch-badly-initialised-data-0.8.6debian-0.8.6a.diff:
+ Fix minor Cb/Cr colour confusion in patch.
-- Sam Hocevar (Debian packages) <sam+deb at zoy.org> Thu, 25 Jan 2007 01:13:12 +0100
Modified: testing/vlc/debian/changelog
===================================================================
--- testing/vlc/debian/changelog 2007-01-24 13:17:44 UTC (rev 146)
+++ testing/vlc/debian/changelog 2007-01-25 00:57:47 UTC (rev 147)
@@ -1,3 +1,25 @@
+vlc (0.8.6-svn20061012.debian-4) testing-proposed-updates; urgency=high
+
+ * Removed disabled patches from the diff.gz.
+
+ * debian/control:
+ + Added missing libxf86vm and libxinerama build-dependencies so that
+ architectures other than mine get fullscreen support.
+
+ * debian/patches/020_notify.diff:
+ + Removed spurious "DATA_PATH" prepended to a full image path.
+
+ * debian/patches/patch-documentation-0.8.6debian-0.8.6a.diff:
+ + Removed non-documentation part of the patch.
+
+ * debian/patches/patch-sanitise-javascript-0.8.6debian-0.8.6a.diff:
+ + Removed non-vital patch.
+
+ * debian/patches/patch-badly-initialised-data-0.8.6debian-0.8.6a.diff:
+ + Fix minor Cb/Cr colour confusion in patch.
+
+ -- Sam Hocevar (Debian packages) <sam+deb at zoy.org> Thu, 25 Jan 2007 01:13:12 +0100
+
vlc (0.8.6-svn20061012.debian-3) testing-proposed-updates; urgency=high
* patch-version-information-0.8.6debian-0.8.6a.diff:
Modified: testing/vlc/debian/control
===================================================================
--- testing/vlc/debian/control 2007-01-24 13:17:44 UTC (rev 146)
+++ testing/vlc/debian/control 2007-01-25 00:57:47 UTC (rev 147)
@@ -3,7 +3,7 @@
Priority: optional
Maintainer: Sam Hocevar (Debian packages) <sam+deb at zoy.org>
Uploaders: Clément Stenac <zorglub at debian.org>
-Build-Depends: debhelper (>= 4.0), dh-buildinfo, quilt, nasm, yasm [amd64 kfreebsd-amd64], gettext, linux-kernel-headers (>= 2.5.999-test7-bk-7) [!kfreebsd-i386 !kfreebsd-amd64 !hurd-i386], xulrunner, libxul-dev, xlibmesa-gl-dev, liba52-0.7.4-dev, libaa1-dev, libarts1-dev (>= 1.4.2-1), libasound2-dev (>= 0.9.0beta10a) [!kfreebsd-i386 !kfreebsd-amd64 !hurd-i386], libaudiofile-dev, libavahi-client-dev, libavcodec-dev (>= 0.cvs20060823-1), libavformat-dev (>= 0.cvs20060823-1), libcaca-dev (>= 0.99.beta4-1), libcdio-dev, libdvbpsi4-dev, libdvdnav-dev, libdvdread-dev (>= 0.9.5), libdts-dev, libesd0-dev, libflac-dev (>= 1.1.2-3), libfreetype6-dev, libfribidi-dev, libggi2-dev, libglib2.0-0, libglide2-dev [i386], libgnutls-dev (>= 1.2.8), libhal-dev (>= 0.5.5.1-3) [!kfreebsd-i386 !kfreebsd-amd64 !hurd-i386], libid3tag0-dev, libidl0, libimlib2-dev, liblircclient-dev, liblivemedia-dev (>= 2006.03.17), libmad0-dev, libmatroska-dev (>= 0.8.0), libmodplug-dev, libmpcdec-dev, libmpeg2-4-dev, libncurses5-dev, libogg-dev, libpostproc-dev (>= 0.cvs20060823-1), libpng12-dev, libsdl1.2-dev (>= 1.2.7+1.2.8cvs20041007-5.3), libsmbclient-dev, libsvga1-dev [i386], libsysfs-dev, libtar-dev, libtheora-dev, libvcdinfo-dev, libvorbis-dev, libwxgtk2.6-dev, libx11-dev, libxext-dev, libxml2-dev, libxt-dev, libxv-dev, zlib1g-dev, libavc1394-dev [!kfreebsd-i386 !kfreebsd-amd64 !hurd-i386], libraw1394-dev [!kfreebsd-i386 !kfreebsd-amd64 !hurd-i386], libdc1394-13-dev [!kfreebsd-i386 !kfreebsd-amd64 !hurd-i386], libxosd-dev, libtwolame-dev (>= 0.3.8-1), libspeex-dev, libsdl-image1.2-dev, libnotify-dev, libgtk2.0-dev, python-dev
+Build-Depends: debhelper (>= 4.0), dh-buildinfo, quilt, nasm, yasm [amd64 kfreebsd-amd64], gettext, linux-kernel-headers (>= 2.5.999-test7-bk-7) [!kfreebsd-i386 !kfreebsd-amd64 !hurd-i386], xulrunner, libxul-dev, xlibmesa-gl-dev, liba52-0.7.4-dev, libaa1-dev, libarts1-dev (>= 1.4.2-1), libasound2-dev (>= 0.9.0beta10a) [!kfreebsd-i386 !kfreebsd-amd64 !hurd-i386], libaudiofile-dev, libavahi-client-dev, libavcodec-dev (>= 0.cvs20060823-1), libavformat-dev (>= 0.cvs20060823-1), libcaca-dev (>= 0.99.beta4-1), libcdio-dev, libdvbpsi4-dev, libdvdnav-dev, libdvdread-dev (>= 0.9.5), libdts-dev, libesd0-dev, libflac-dev (>= 1.1.2-3), libfreetype6-dev, libfribidi-dev, libggi2-dev, libglib2.0-0, libglide2-dev [i386], libgnutls-dev (>= 1.2.8), libhal-dev (>= 0.5.5.1-3) [!kfreebsd-i386 !kfreebsd-amd64 !hurd-i386], libid3tag0-dev, libidl0, libimlib2-dev, liblircclient-dev, liblivemedia-dev (>= 2006.03.17), libmad0-dev, libmatroska-dev (>= 0.8.0), libmodplug-dev, libmpcdec-dev, libmpeg2-4-dev, libncurses5-dev, libogg-dev, libpostproc-dev (>= 0.cvs20060823-1), libpng12-dev, libsdl1.2-dev (>= 1.2.7+1.2.8cvs20041007-5.3), libsmbclient-dev, libsvga1-dev [i386], libsysfs-dev, libtar-dev, libtheora-dev, libvcdinfo-dev, libvorbis-dev, libwxgtk2.6-dev, libx11-dev, libxext-dev, libxf86vm-dev, libxinerama-dev, libxml2-dev, libxt-dev, libxv-dev, zlib1g-dev, libavc1394-dev [!kfreebsd-i386 !kfreebsd-amd64 !hurd-i386], libraw1394-dev [!kfreebsd-i386 !kfreebsd-amd64 !hurd-i386], libdc1394-13-dev [!kfreebsd-i386 !kfreebsd-amd64 !hurd-i386], libxosd-dev, libtwolame-dev (>= 0.3.8-1), libspeex-dev, libsdl-image1.2-dev, libnotify-dev, libgtk2.0-dev, python-dev
Standards-Version: 3.7.2
XS-Vcs-Svn: svn://svn.videolan.org/pkg-multimedia/unstable/vlc/
Modified: testing/vlc/debian/patches/020_notify.diff
===================================================================
--- testing/vlc/debian/patches/020_notify.diff 2007-01-24 13:17:44 UTC (rev 146)
+++ testing/vlc/debian/patches/020_notify.diff 2007-01-25 00:57:47 UTC (rev 147)
@@ -7,7 +7,7 @@
notification = notify_notification_new( _("Now Playing"),
psz_temp,
- DATA_PATH "/vlc128x128.png",NULL);
-+ DATA_PATH "/usr/share/pixmaps/vlc.png",NULL);
++ "/usr/share/pixmaps/vlc.png",NULL);
notify_notification_set_timeout( notification,
config_GetInt(p_this, "notify-timeout") );
notify_notification_set_urgency( notification, NOTIFY_URGENCY_LOW );
Modified: testing/vlc/debian/patches/patch-badly-initialised-data-0.8.6debian-0.8.6a.diff
===================================================================
--- testing/vlc/debian/patches/patch-badly-initialised-data-0.8.6debian-0.8.6a.diff 2007-01-24 13:17:44 UTC (rev 146)
+++ testing/vlc/debian/patches/patch-badly-initialised-data-0.8.6debian-0.8.6a.diff 2007-01-25 00:57:47 UTC (rev 147)
@@ -63,8 +63,9 @@
p_sys->default_clut.c_2b[i].Y = RGB_TO_Y(R,G,B);
- p_sys->default_clut.c_2b[i].Cr = RGB_TO_U(R,G,B);
- p_sys->default_clut.c_2b[i].Cb = RGB_TO_V(R,G,B);
-+ p_sys->default_clut.c_2b[i].Cr = RGB_TO_U(R,G,B);
+- p_sys->default_clut.c_2b[i].Cb = RGB_TO_V(R,G,B);
++ p_sys->default_clut.c_2b[i].Cb = RGB_TO_U(R,G,B);
++ p_sys->default_clut.c_2b[i].Cr = RGB_TO_V(R,G,B);
p_sys->default_clut.c_2b[i].T = T;
}
@@ -74,8 +75,8 @@
p_sys->default_clut.c_4b[i].Y = RGB_TO_Y(R,G,B);
- p_sys->default_clut.c_4b[i].Cr = RGB_TO_U(R,G,B);
- p_sys->default_clut.c_4b[i].Cb = RGB_TO_V(R,G,B);
++ p_sys->default_clut.c_4b[i].Cb = RGB_TO_U(R,G,B);
+ p_sys->default_clut.c_4b[i].Cr = RGB_TO_V(R,G,B);
-+ p_sys->default_clut.c_4b[i].Cb = RGB_TO_U(R,G,B);
p_sys->default_clut.c_4b[i].T = T;
}
Deleted: testing/vlc/debian/patches/patch-configure.ac-syntax-0.8.6debian-0.8.6a.diff
===================================================================
--- testing/vlc/debian/patches/patch-configure.ac-syntax-0.8.6debian-0.8.6a.diff 2007-01-24 13:17:44 UTC (rev 146)
+++ testing/vlc/debian/patches/patch-configure.ac-syntax-0.8.6debian-0.8.6a.diff 2007-01-25 00:57:47 UTC (rev 147)
@@ -1,12 +0,0 @@
-diff -puriN vlc-0.8.6/configure.ac vlc-0.8.6a/configure.ac
---- vlc-0.8.6/configure.ac 2006-10-12 19:47:40.000000000 +0200
-+++ vlc-0.8.6a/configure.ac 2007-01-07 23:08:03.000000000 +0100
-@@ -3987,7 +4032,7 @@ then
- ],[
- AC_MSG_ERROR([You don't have libglide. Install it or do not use --enable-glide])
- ])
-- CFAGS="${CFLAGS_save}"
-+ CFLAGS="${CFLAGS_save}"
- fi
-
- dnl
Modified: testing/vlc/debian/patches/patch-documentation-0.8.6debian-0.8.6a.diff
===================================================================
--- testing/vlc/debian/patches/patch-documentation-0.8.6debian-0.8.6a.diff 2007-01-24 13:17:44 UTC (rev 146)
+++ testing/vlc/debian/patches/patch-documentation-0.8.6debian-0.8.6a.diff 2007-01-25 00:57:47 UTC (rev 147)
@@ -15,21 +15,6 @@
===================================================================
--- vlc-0.8.6-svn20061012.debian.orig/modules/access/rtsp/access.c 2006-09-18 12:28:25.000000000 +0200
+++ vlc-0.8.6-svn20061012.debian/modules/access/rtsp/access.c 2007-01-08 02:19:00.000000000 +0100
-@@ -150,7 +150,13 @@
- char *psz_server = 0;
- int i_result;
-
-- if( !p_access->b_force ) return VLC_EGENERIC;
-+ if( !p_access->psz_access || (
-+ strncmp( p_access->psz_access, "rtsp", 4 ) &&
-+ strncmp( p_access->psz_access, "pnm", 3 ) &&
-+ strncmp( p_access->psz_access, "realrtsp", 8 ) ))
-+ {
-+ return VLC_EGENERIC;
-+ }
-
- p_access->pf_read = NULL;
- p_access->pf_block = BlockRead;
@@ -225,7 +231,7 @@
}
else
Deleted: testing/vlc/debian/patches/patch-mjpeg-separator-0.8.6debian-0.8.6a.diff
===================================================================
--- testing/vlc/debian/patches/patch-mjpeg-separator-0.8.6debian-0.8.6a.diff 2007-01-24 13:17:44 UTC (rev 146)
+++ testing/vlc/debian/patches/patch-mjpeg-separator-0.8.6debian-0.8.6a.diff 2007-01-25 00:57:47 UTC (rev 147)
@@ -1,25 +0,0 @@
-diff -puriN vlc-0.8.6/modules/demux/mjpeg.c vlc-0.8.6a/modules/demux/mjpeg.c
---- vlc-0.8.6/modules/demux/mjpeg.c 2006-10-08 18:40:54.000000000 +0200
-+++ vlc-0.8.6a/modules/demux/mjpeg.c 2007-01-07 23:07:06.000000000 +0100
-@@ -202,7 +202,9 @@ static vlc_bool_t CheckMimeHeader( demux
- *p_header_size = -3;
- return VLC_FALSE;
- }
-- if( NULL == p_sys->psz_separator )
-+
-+ /* Read the separator and remember it if not yet stored */
-+ if( p_sys->psz_separator == NULL )
- {
- p_sys->psz_separator = psz_line;
- msg_Dbg( p_demux, "Multipart MIME detected, using separator: %s",
-@@ -215,8 +217,9 @@ static vlc_bool_t CheckMimeHeader( demux
- msg_Warn( p_demux, "separator %s does not match %s", psz_line,
- p_sys->psz_separator );
- }
-+ free( psz_line );
- }
-- free( psz_line );
-+
- psz_line = GetLine( p_demux, &i_pos );
- while( psz_line && *psz_line )
- {
Deleted: testing/vlc/debian/patches/patch-network-protocols-fixes-0.8.6debian-0.8.6a.diff
===================================================================
--- testing/vlc/debian/patches/patch-network-protocols-fixes-0.8.6debian-0.8.6a.diff 2007-01-24 13:17:44 UTC (rev 146)
+++ testing/vlc/debian/patches/patch-network-protocols-fixes-0.8.6debian-0.8.6a.diff 2007-01-25 00:57:47 UTC (rev 147)
@@ -1,776 +0,0 @@
-diff -puriN vlc-0.8.6/configure.ac vlc-0.8.6a/configure.ac
---- vlc-0.8.6/configure.ac 2006-10-12 19:47:40.000000000 +0200
-+++ vlc-0.8.6a/configure.ac 2007-01-07 23:08:03.000000000 +0100
-@@ -4930,6 +4975,9 @@ AS_IF([test "${enable_gnutls}" != "no"],
- AC_MSG_ERROR([gnutls not present or too old (version 1.2.9 required)])
- ])
- ])
-+ AC_CHECK_LIB([gcrypt], [gcry_control], [
-+ VLC_ADD_LDFLAGS([gnutls], [-lgcrypt])
-+ ])
- ])
-
-
-diff -puriN vlc-0.8.6/modules/control/http/http.c vlc-0.8.6a/modules/control/http/http.c
---- vlc-0.8.6/modules/control/http/http.c 2006-10-08 18:40:53.000000000 +0200
-+++ vlc-0.8.6a/modules/control/http/http.c 2007-01-07 23:07:05.000000000 +0100
-@@ -125,8 +125,8 @@ static int Open( vlc_object_t *p_this )
- int i_port = 0;
- char *psz_src;
-
-- var_Create(p_intf->p_libvlc, "http-host", VLC_VAR_STRING );
-- psz_address=var_GetString(p_intf->p_libvlc, "http-host");
-+ var_Create( p_intf->p_libvlc, "http-host", VLC_VAR_STRING );
-+ psz_address = var_GetString( p_intf->p_libvlc, "http-host");
- if( !psz_address || !*psz_address )
- {
- psz_address = config_GetPsz( p_intf, "http-host" );
-@@ -148,9 +148,7 @@ static int Open( vlc_object_t *p_this )
- {
- return( VLC_ENOMEM );
- }
-- p_sys->p_playlist = NULL;
-- p_sys->p_input = NULL;
-- p_sys->p_vlm = NULL;
-+ memset( p_intf->p_sys, 0, sizeof( intf_sys_t ) );
- p_sys->psz_address = psz_address;
- p_sys->i_port = i_port;
-
-@@ -294,7 +292,7 @@ static int Open( vlc_object_t *p_this )
- psz_src = malloc( strlen(psz_vlcpath) + strlen("/share/http" ) + 1 );
- if( !psz_src ) return VLC_ENOMEM;
- #if defined(WIN32)
-- sprintf( psz_src, "%s/http", psz_vlcpath );
-+ sprintf( psz_src, "%s\\http", psz_vlcpath );
- #else
- sprintf( psz_src, "%s/share/http", psz_vlcpath );
- #endif
-@@ -521,9 +519,9 @@ static void ParseExecute( httpd_file_sys
- var_Get( p_sys->p_input, "position", &val);
- sprintf( position, "%d" , (int)((val.f_float) * 100.0));
- var_Get( p_sys->p_input, "time", &val);
-- sprintf( time, "%d" , (int)(val.i_time / 1000000) );
-+ sprintf( time, I64Fi, val.i_time / 1000000LL );
- var_Get( p_sys->p_input, "length", &val);
-- sprintf( length, "%d" , (int)(val.i_time / 1000000) );
-+ sprintf( length, I64Fi, val.i_time / 1000000LL );
-
- var_Get( p_sys->p_input, "state", &val );
- if( val.i_int == PLAYING_S )
-diff -puriN vlc-0.8.6/modules/misc/network/ipv4.c vlc-0.8.6a/modules/misc/network/ipv4.c
---- vlc-0.8.6/modules/misc/network/ipv4.c 2006-09-18 12:28:25.000000000 +0200
-+++ vlc-0.8.6a/modules/misc/network/ipv4.c 2007-01-07 23:07:22.000000000 +0100
-@@ -162,58 +162,42 @@ static int OpenUDP( vlc_object_t * p_thi
- int i_server_port = p_socket->i_server_port;
-
- int i_handle, i_opt;
-- struct sockaddr_in sock;
-+ struct sockaddr_in loc, rem;
- vlc_value_t val;
-+ vlc_bool_t do_connect = VLC_TRUE;
- #if defined(WIN32) || defined(UNDER_CE)
- char strerror_buf[WINSOCK_STRERROR_SIZE];
- # define strerror( x ) winsock_strerror( strerror_buf )
- #endif
-
-- /* If IP_ADD_SOURCE_MEMBERSHIP is not defined in the headers
-- (because it's not in glibc for example), we have to define the
-- headers required for IGMPv3 here */
--#ifndef IP_ADD_SOURCE_MEMBERSHIP
-- #define IP_ADD_SOURCE_MEMBERSHIP 39
-- struct ip_mreq_source {
-- struct in_addr imr_multiaddr;
-- struct in_addr imr_interface;
-- struct in_addr imr_sourceaddr;
-- };
--#endif
--
- p_socket->i_handle = -1;
-
-+ /* Build the local socket */
-+ if( BuildAddr( p_this, &loc, psz_bind_addr, i_bind_port )
-+ || BuildAddr( p_this, &rem, psz_server_addr, i_server_port ) )
-+ return 0;
-+
- /* Open a SOCK_DGRAM (UDP) socket, in the AF_INET domain, automatic (0)
- * protocol */
- if( (i_handle = socket( AF_INET, SOCK_DGRAM, 0 )) == -1 )
- {
-- msg_Warn( p_this, "cannot create socket (%s)", strerror(errno) );
-+ msg_Err( p_this, "cannot create socket (%s)", strerror(errno) );
- return 0;
- }
-
- /* We may want to reuse an already used socket */
- i_opt = 1;
-- if( setsockopt( i_handle, SOL_SOCKET, SO_REUSEADDR,
-- (void *) &i_opt, sizeof( i_opt ) ) == -1 )
-- {
-- msg_Warn( p_this, "cannot configure socket (SO_REUSEADDR: %s)",
-- strerror(errno));
-- close( i_handle );
-- return 0;
-- }
--
-+ setsockopt( i_handle, SOL_SOCKET, SO_REUSEADDR, (void *) &i_opt,
-+ sizeof( i_opt ) );
- #ifdef SO_REUSEPORT
- i_opt = 1;
-- if( setsockopt( i_handle, SOL_SOCKET, SO_REUSEPORT,
-- (void *) &i_opt, sizeof( i_opt ) ) == -1 )
-- {
-- msg_Warn( p_this, "cannot configure socket (SO_REUSEPORT)" );
-- }
-+ setsockopt( i_handle, SOL_SOCKET, SO_REUSEPORT, (void *) &i_opt,
-+ sizeof( i_opt ) );
- #endif
-
- /* Increase the receive buffer size to 1/2MB (8Mb/s during 1/2s) to avoid
- * packet loss caused by scheduling problems */
--#if !defined( SYS_BEOS )
-+#ifdef SO_RCVBUF
- i_opt = 0x80000;
- if( setsockopt( i_handle, SOL_SOCKET, SO_RCVBUF, (void *) &i_opt,
- sizeof( i_opt ) ) == -1 )
-@@ -226,47 +210,39 @@ static int OpenUDP( vlc_object_t * p_thi
- strerror(errno));
- #endif
-
-- /* Build the local socket */
--
- #if defined( WIN32 ) || defined( UNDER_CE )
-- /* Under Win32 and for multicasting, we bind to INADDR_ANY,
-- * so let's call BuildAddr with "" instead of psz_bind_addr */
-- if( BuildAddr( p_this, &sock,
-- IN_MULTICAST( ntohl( inet_addr(psz_bind_addr) ) ) ?
-- "" : psz_bind_addr, i_bind_port ) == -1 )
--#else
-- if( BuildAddr( p_this, &sock, psz_bind_addr, i_bind_port ) == -1 )
--#endif
-+ /*
-+ * Under Win32 and for multicasting, we bind to INADDR_ANY.
-+ * This is of course a severe bug, since the socket would logically
-+ * receive unicast traffic, and multicast traffic of groups subscribed
-+ * to via other sockets. How this actually works in Winsock, I don't
-+ * know.
-+ */
-+ if( IN_MULTICAST( ntohl( loc.sin_addr.s_addr ) ) )
- {
-- msg_Dbg( p_this, "could not build local address" );
-- close( i_handle );
-- return 0;
-- }
-+ struct sockaddr_in stupid = loc;
-+ stupid.sin_addr.s_addr = INADDR_ANY;
-
-- /* Bind it */
-- if( bind( i_handle, (struct sockaddr *)&sock, sizeof( sock ) ) < 0 )
-- {
-- msg_Warn( p_this, "cannot bind socket (%s)", strerror(errno) );
-- close( i_handle );
-- return 0;
-- }
--
--#if defined( WIN32 ) || defined( UNDER_CE )
-- /* Restore the sock struct so we can spare a few #ifdef WIN32 later on */
-- if( IN_MULTICAST( ntohl( inet_addr(psz_bind_addr) ) ) )
-- {
-- if ( BuildAddr( p_this, &sock, psz_bind_addr, i_bind_port ) == -1 )
-+ if( bind( i_handle, (struct sockaddr *)&stupid, sizeof( stupid ) ) < 0 )
- {
-- msg_Dbg( p_this, "could not build local address" );
-+ msg_Warn( p_this, "cannot bind socket (%d)", WSAGetLastError() );
- close( i_handle );
- return 0;
- }
- }
-+ else
- #endif
-+ /* Bind it */
-+ if( bind( i_handle, (struct sockaddr *)&loc, sizeof( loc ) ) < 0 )
-+ {
-+ msg_Warn( p_this, "cannot bind socket (%s)", strerror(errno) );
-+ close( i_handle );
-+ return 0;
-+ }
-
- #if !defined( SYS_BEOS )
- /* Allow broadcast reception if we bound on INADDR_ANY */
-- if( !*psz_bind_addr )
-+ if( loc.sin_addr.s_addr == INADDR_ANY )
- {
- i_opt = 1;
- if( setsockopt( i_handle, SOL_SOCKET, SO_BROADCAST, (void*) &i_opt,
-@@ -278,7 +254,7 @@ static int OpenUDP( vlc_object_t * p_thi
-
- #if !defined( SYS_BEOS )
- /* Join the multicast group if the socket is a multicast address */
-- if( IN_MULTICAST( ntohl(sock.sin_addr.s_addr) ) )
-+ if( IN_MULTICAST( ntohl(loc.sin_addr.s_addr) ) )
- {
- /* Determine interface to be used for multicast */
- char * psz_if_addr = config_GetPsz( p_this, "miface-addr" );
-@@ -286,46 +262,52 @@ static int OpenUDP( vlc_object_t * p_thi
- /* If we have a source address, we use IP_ADD_SOURCE_MEMBERSHIP
- so that IGMPv3 aware OSes running on IGMPv3 aware networks
- will do an IGMPv3 query on the network */
-- if( *psz_server_addr )
-+ if (( rem.sin_addr.s_addr != INADDR_ANY )
-+ /*&& ((ntohl (loc.sin_addr.s_addr) >> 24) == 232)*/)
- {
-+#ifndef IP_ADD_SOURCE_MEMBERSHIP
-+ errno = ENOSYS;
-+#else
- struct ip_mreq_source imr;
-
-- imr.imr_multiaddr.s_addr = sock.sin_addr.s_addr;
-- imr.imr_sourceaddr.s_addr = inet_addr(psz_server_addr);
-+ imr.imr_multiaddr.s_addr = loc.sin_addr.s_addr;
-+ imr.imr_sourceaddr.s_addr = rem.sin_addr.s_addr;
-
- if( psz_if_addr != NULL && *psz_if_addr
- && inet_addr(psz_if_addr) != INADDR_NONE )
-- {
- imr.imr_interface.s_addr = inet_addr(psz_if_addr);
-- }
- else
-- {
- imr.imr_interface.s_addr = INADDR_ANY;
-- }
-- if( psz_if_addr != NULL ) free( psz_if_addr );
-+
-+ if( psz_if_addr != NULL )
-+ free( psz_if_addr );
-
- msg_Dbg( p_this, "IP_ADD_SOURCE_MEMBERSHIP multicast request" );
-+
- /* Join Multicast group with source filter */
- if( setsockopt( i_handle, IPPROTO_IP, IP_ADD_SOURCE_MEMBERSHIP,
- (char*)&imr,
-- sizeof(struct ip_mreq_source) ) == -1 )
-+ sizeof(struct ip_mreq_source) ) == 0 )
-+ do_connect = VLC_FALSE;
-+ else
-+#endif
- {
-- msg_Err( p_this, "failed to join IP multicast group (%s)",
-- strerror(errno) );
-- msg_Err( p_this, "are you sure your OS supports IGMPv3?" );
-- close( i_handle );
-- return 0;
-+ msg_Warn( p_this, "Source specific multicast failed (%s) -"
-+ " check if your OS really supports IGMPv3",
-+ strerror(errno) );
-+ goto igmpv2;
- }
-- }
-- /* If there is no source address, we use IP_ADD_MEMBERSHIP */
-- else
-- {
-- struct ip_mreq imr;
--
-- imr.imr_interface.s_addr = INADDR_ANY;
-- imr.imr_multiaddr.s_addr = sock.sin_addr.s_addr;
-- if( psz_if_addr != NULL && *psz_if_addr
-- && inet_addr(psz_if_addr) != INADDR_NONE )
-+ }
-+ /* If there is no source address, we use IP_ADD_MEMBERSHIP */
-+ else
-+igmpv2:
-+ {
-+ struct ip_mreq imr;
-+
-+ imr.imr_interface.s_addr = INADDR_ANY;
-+ imr.imr_multiaddr.s_addr = loc.sin_addr.s_addr;
-+ if( psz_if_addr != NULL && *psz_if_addr
-+ && inet_addr(psz_if_addr) != INADDR_NONE )
- {
- imr.imr_interface.s_addr = inet_addr(psz_if_addr);
- }
-@@ -351,7 +333,7 @@ static int OpenUDP( vlc_object_t * p_thi
- }
-
- if( hiphlpapi && OurGetBestInterface && OurGetIpAddrTable &&
-- OurGetBestInterface( sock.sin_addr.s_addr,
-+ OurGetBestInterface( loc.sin_addr.s_addr,
- &i_index ) == NO_ERROR )
- {
- PMIB_IPADDRTABLE p_table;
-@@ -400,21 +382,18 @@ static int OpenUDP( vlc_object_t * p_thi
- }
- }
- }
-+
-+#if !defined (__linux__) && !defined (WIN32)
- else
- #endif
-- if( *psz_server_addr )
-- {
-- /* Build socket for remote connection */
-- if ( BuildAddr( p_this, &sock, psz_server_addr, i_server_port ) == -1 )
-- {
-- msg_Warn( p_this, "cannot build remote address" );
-- close( i_handle );
-- return 0;
-- }
-
-+#endif /* !defined SYS_BEOS */
-+
-+ if( rem.sin_addr.s_addr != INADDR_ANY )
-+ {
- /* Connect the socket */
-- if( connect( i_handle, (struct sockaddr *) &sock,
-- sizeof( sock ) ) == (-1) )
-+ if( do_connect
-+ && connect( i_handle, (struct sockaddr *) &rem, sizeof( rem ) ) )
- {
- msg_Warn( p_this, "cannot connect socket (%s)", strerror(errno) );
- close( i_handle );
-@@ -422,7 +401,7 @@ static int OpenUDP( vlc_object_t * p_thi
- }
-
- #if !defined( SYS_BEOS )
-- if( IN_MULTICAST( ntohl(inet_addr(psz_server_addr) ) ) )
-+ if( IN_MULTICAST( ntohl(rem.sin_addr.s_addr) ) )
- {
- /* set the time-to-live */
- int i_ttl = p_socket->i_ttl;
-diff -puriN vlc-0.8.6/modules/misc/network/ipv6.c vlc-0.8.6a/modules/misc/network/ipv6.c
---- vlc-0.8.6/modules/misc/network/ipv6.c 2006-09-18 12:28:25.000000000 +0200
-+++ vlc-0.8.6a/modules/misc/network/ipv6.c 2007-01-07 23:07:22.000000000 +0100
-@@ -54,13 +54,9 @@ static const struct in6_addr in6addr_any
- # define close closesocket
- #endif
-
--#ifndef MCAST_JOIN_SOURCE_GROUP
--# ifdef WIN32
--/* Most (all?) Mingw32 versions in use are yet to pick up Vista stuff */
-+#if defined (WIN32) && !defined (MCAST_JOIN_SOURCE_GROUP)
-+/* Interim Vista definitions */
- # define MCAST_JOIN_SOURCE_GROUP 45 /* from <ws2ipdef.h> */
--# else
--# define MCAST_JOIN_SOURCE_GROUP 46
--# endif
- struct group_source_req
- {
- uint32_t gsr_interface; /* interface index */
-@@ -148,8 +144,9 @@ static int OpenUDP( vlc_object_t * p_thi
- const char *psz_server_addr = p_socket->psz_server_addr;
- int i_server_port = p_socket->i_server_port;
- int i_handle, i_opt;
-- struct sockaddr_in6 sock;
-+ struct sockaddr_in6 loc, rem;
- vlc_value_t val;
-+ vlc_bool_t do_connect = VLC_TRUE;
- #if defined(WIN32) || defined(UNDER_CE)
- char strerror_buf[WINSOCK_STRERROR_SIZE];
- # define strerror( x ) winsock_strerror( strerror_buf )
-@@ -158,7 +155,9 @@ static int OpenUDP( vlc_object_t * p_thi
- p_socket->i_handle = -1;
-
- /* Build the local socket */
-- if ( BuildAddr( p_this, &sock, psz_bind_addr, i_bind_port ) == -1 )
-+ if ( BuildAddr( p_this, &loc, psz_bind_addr, i_bind_port )
-+ /* Build socket for remote connection */
-+ || BuildAddr( p_this, &rem, psz_server_addr, i_server_port ) )
- return 0;
-
- /* Open a SOCK_DGRAM (UDP) socket, in the AF_INET6 domain, automatic (0)
-@@ -187,7 +186,7 @@ static int OpenUDP( vlc_object_t * p_thi
- # define IPV6_PROTECTION_LEVEL 23
- # endif
- {
-- int i_val = 30 /*PROTECTION_LEVEL_UNRESTRICTED*/;
-+ int i_val = 10 /*PROTECTION_LEVEL_UNRESTRICTED*/;
- setsockopt( i_handle, IPPROTO_IPV6, IPV6_PROTECTION_LEVEL, &i_val,
- sizeof( i_val ) );
- }
-@@ -216,14 +215,14 @@ static int OpenUDP( vlc_object_t * p_thi
-
- #if defined(WIN32)
- /* Under Win32 and for multicasting, we bind to IN6ADDR_ANY */
-- if( IN6_IS_ADDR_MULTICAST(&sock.sin6_addr) )
-+ if( IN6_IS_ADDR_MULTICAST(&loc.sin6_addr) )
- {
-- struct sockaddr_in6 sockany = sock;
-+ struct sockaddr_in6 sockany = loc;
- sockany.sin6_addr = in6addr_any;
- sockany.sin6_scope_id = 0;
-
- /* Bind it */
-- if( bind( i_handle, (struct sockaddr *)&sockany, sizeof( sock ) ) < 0 )
-+ if( bind( i_handle, (struct sockaddr *)&sockany, sizeof( sockany ) ) < 0 )
- {
- msg_Warn( p_this, "cannot bind socket (%s)", strerror(errno) );
- close( i_handle );
-@@ -233,7 +232,7 @@ static int OpenUDP( vlc_object_t * p_thi
- else
- #endif
- /* Bind it */
-- if( bind( i_handle, (struct sockaddr *)&sock, sizeof( sock ) ) < 0 )
-+ if( bind( i_handle, (struct sockaddr *)&loc, sizeof( loc ) ) < 0 )
- {
- msg_Warn( p_this, "cannot bind socket (%s)", strerror(errno) );
- close( i_handle );
-@@ -241,76 +240,76 @@ static int OpenUDP( vlc_object_t * p_thi
- }
-
- /* Join the multicast group if the socket is a multicast address */
-- if( IN6_IS_ADDR_MULTICAST(&sock.sin6_addr) )
-+ if( IN6_IS_ADDR_MULTICAST(&loc.sin6_addr) )
- {
-- if(*psz_server_addr)
-+ if (memcmp (&rem.sin6_addr, &in6addr_any, 16)
-+ /*&& ((U32_AT (&sock.sin6_addr) & 0xff30ffff) == 0xff300000)*/)
- {
-+#ifndef MCAST_JOIN_SOURCE_GROUP
-+ errno = ENOSYS;
-+#else
- struct group_source_req imr;
- struct sockaddr_in6 *p_sin6;
-
-- imr.gsr_interface = 0;
-+ memset (&imr, 0, sizeof (imr));
- imr.gsr_group.ss_family = AF_INET6;
- imr.gsr_source.ss_family = AF_INET6;
- p_sin6 = (struct sockaddr_in6 *)&imr.gsr_group;
-- p_sin6->sin6_addr = sock.sin6_addr;
--
-- /* Build socket for remote connection */
-- msg_Dbg( p_this, "psz_server_addr : %s", psz_server_addr);
--
-- if ( BuildAddr( p_this, &sock, psz_server_addr, i_server_port ) )
-- {
-- msg_Warn( p_this, "cannot build remote address" );
-- close( i_handle );
-- return 0;
-- }
-+ p_sin6->sin6_addr = loc.sin6_addr;
- p_sin6 = (struct sockaddr_in6 *)&imr.gsr_source;
-- p_sin6->sin6_addr = sock.sin6_addr;
-+ p_sin6->sin6_addr = rem.sin6_addr;
-
-- msg_Dbg( p_this, "IPV6_ADD_SOURCE_MEMBERSHIP multicast request" );
-+ msg_Dbg( p_this, "MCAST_JOIN_SOURCE_GROUP multicast request" );
- if( setsockopt( i_handle, IPPROTO_IPV6, MCAST_JOIN_SOURCE_GROUP,
-- (char *)&imr, sizeof(struct group_source_req) ) == -1 )
-+ (void *)&imr, sizeof(struct group_source_req) ) == 0 )
-+ do_connect = VLC_FALSE;
-+ else
-+#endif
- {
-
-- msg_Err( p_this, "failed to join IP multicast group (%s)",
-- strerror(errno) );
-+ msg_Err( p_this, "Source specific multicast failed (%s) -"
-+ " check if your OS really supports MLDv2",
-+ strerror(errno) );
-+ goto mldv1;
- }
- }
- else
-+mldv1:
- {
- struct ipv6_mreq imr;
-- int res;
-
-- imr.ipv6mr_interface = sock.sin6_scope_id;
-- imr.ipv6mr_multiaddr = sock.sin6_addr;
-- res = setsockopt(i_handle, IPPROTO_IPV6, IPV6_JOIN_GROUP, (void*) &imr,
-+ memset (&imr, 0, sizeof (imr));
-+ imr.ipv6mr_interface = loc.sin6_scope_id;
-+ imr.ipv6mr_multiaddr = loc.sin6_addr;
-+ msg_Dbg( p_this, "IPV6_JOIN_GROUP multicast request" );
-+ if (setsockopt(i_handle, IPPROTO_IPV6, IPV6_JOIN_GROUP, (void*) &imr,
- #if defined(WIN32)
-- sizeof(imr) + 4); /* Doesn't work without this */
-+ sizeof(imr) + 4
-+ /* Doesn't work without this
-+ * - Really? because it's really a buffer overflow... */
- #else
-- sizeof(imr));
-+ sizeof(imr)
- #endif
--
-- if( res == -1 )
-+ ))
- {
- msg_Err( p_this, "cannot join multicast group" );
-- }
-+ close( i_handle );
-+ return 0;
-+ }
- }
- }
-+
-+#if !defined (__linux__) && !defined (WIN32)
- else
-- if( *psz_server_addr )
-+#endif
-+
-+ if( memcmp (&rem.sin6_addr, &in6addr_any, 16) )
- {
- int ttl;
-
-- /* Build socket for remote connection */
-- if ( BuildAddr( p_this, &sock, psz_server_addr, i_server_port ) == -1 )
-- {
-- msg_Warn( p_this, "cannot build remote address" );
-- close( i_handle );
-- return 0;
-- }
--
- /* Connect the socket */
-- if( connect( i_handle, (struct sockaddr *) &sock,
-- sizeof( sock ) ) == (-1) )
-+ if( do_connect
-+ && connect( i_handle, (struct sockaddr *) &rem, sizeof( rem ) ) )
- {
- msg_Warn( p_this, "cannot connect socket (%s)", strerror(errno) );
- close( i_handle );
-@@ -324,7 +323,7 @@ static int OpenUDP( vlc_object_t * p_thi
-
- if( ttl > 0 )
- {
-- if( IN6_IS_ADDR_MULTICAST(&sock.sin6_addr) )
-+ if( IN6_IS_ADDR_MULTICAST(&rem.sin6_addr) )
- {
- if( setsockopt( i_handle, IPPROTO_IPV6, IPV6_MULTICAST_HOPS,
- (void *)&ttl, sizeof( ttl ) ) < 0 )
-@@ -345,7 +344,7 @@ static int OpenUDP( vlc_object_t * p_thi
- }
-
- /* Set multicast output interface */
-- if( IN6_IS_ADDR_MULTICAST(&sock.sin6_addr) )
-+ if( IN6_IS_ADDR_MULTICAST(&rem.sin6_addr) )
- {
- char *psz_mif = config_GetPsz( p_this, "miface" );
- if( psz_mif != NULL )
-diff -puriN vlc-0.8.6/modules/services_discovery/sap.c vlc-0.8.6a/modules/services_discovery/sap.c
---- vlc-0.8.6/modules/services_discovery/sap.c 2006-09-18 12:28:28.000000000 +0200
-+++ vlc-0.8.6a/modules/services_discovery/sap.c 2007-01-07 23:07:29.000000000 +0100
-@@ -258,13 +258,10 @@ struct demux_sys_t
- static sap_announce_t *CreateAnnounce( services_discovery_t *, uint16_t, sdp_t * );
- static int RemoveAnnounce( services_discovery_t *p_sd, sap_announce_t *p_announce );
-
--/* Cache */
-- static void CacheLoad( services_discovery_t *p_sd );
-- static void CacheSave( services_discovery_t *p_sd );
- /* Helper functions */
- static char *GetAttribute( sdp_t *p_sdp, const char *psz_search );
- static vlc_bool_t IsSameSession( sdp_t *p_sdp1, sdp_t *p_sdp2 );
-- static int InitSocket( services_discovery_t *p_sd, char *psz_address, int i_port );
-+ static int InitSocket( services_discovery_t *p_sd, const char *psz_address, int i_port );
- #ifdef HAVE_ZLIB_H
- static int Decompress( unsigned char *psz_src, unsigned char **_dst, int i_len );
- #endif
-@@ -630,7 +627,7 @@ static int Control( demux_t *p_demux, in
- static int ParseSAP( services_discovery_t *p_sd, uint8_t *p_buffer, int i_read )
- {
- int i_version, i_address_type, i_hash, i;
-- char *psz_sdp, *psz_foo, *psz_initial_sdp;
-+ char *psz_sdp, *psz_foo, *psz_initial_sdp, *psz_end;
- uint8_t *p_decompressed_buffer = NULL;
- sdp_t *p_sdp;
- vlc_bool_t b_compressed;
-@@ -645,12 +642,6 @@ static int ParseSAP( services_discovery_
-
- i_address_type = p_buffer[0] & 0x10;
-
-- if( (p_buffer[0] & 0x08) != 0 )
-- {
-- msg_Dbg( p_sd, "reserved bit incorrectly set" );
-- return VLC_EGENERIC;
-- }
--
- if( (p_buffer[0] & 0x04) != 0 )
- {
- msg_Dbg( p_sd, "session deletion packet" );
-@@ -702,15 +693,18 @@ static int ParseSAP( services_discovery_
-
- i_decompressed_size = Decompress( (uint8_t *)psz_sdp,
- &p_decompressed_buffer, i_read - ( psz_sdp - (char *)p_buffer ) );
-- if( i_decompressed_size > 0 )
-+ if( i_decompressed_size > 0 &&
-+ i_decompressed_size < ( MAX_SAP_BUFFER - 20 ) )
- {
-- psz_sdp = (char *)p_decompressed_buffer;
-- realloc( p_decompressed_buffer, i_decompressed_size++ );
-+ memcpy( psz_sdp, p_decompressed_buffer, i_decompressed_size );
- psz_sdp[i_decompressed_size] = '\0';
-+ psz_end = psz_sdp + i_decompressed_size;
-+ FREE( p_decompressed_buffer );
- }
- else
- {
-- msg_Warn( p_sd, "decompression of sap packet failed" );
-+ msg_Warn( p_sd, "error in decompression of sap packet" );
-+ FREE( p_decompressed_buffer );
- return VLC_EGENERIC;
- }
- #else
-@@ -718,11 +712,13 @@ static int ParseSAP( services_discovery_
- return VLC_EGENERIC;
- #endif
- }
-+ else
-+ psz_end = ((const char *)p_buffer) + i_read;
-
- /* Add the size of authentification info */
- if( i_read < p_buffer[1] + (psz_sdp - psz_initial_sdp ) )
- {
-- msg_Warn( p_sd, "too short SAP packet\n");
-+ msg_Warn( p_sd, "too short SAP packet");
- return VLC_EGENERIC;
- }
- psz_sdp += p_buffer[1];
-@@ -747,7 +743,7 @@ static int ParseSAP( services_discovery_
- {
- msg_Dbg( p_sd, "unhandled content type: %s", psz_foo );
- }
-- if( ( psz_sdp - (char *)p_buffer ) >= i_read )
-+ if( psz_sdp >= psz_end )
- {
- msg_Warn( p_sd, "package without content" );
- return VLC_EGENERIC;
-@@ -806,7 +802,6 @@ static int ParseSAP( services_discovery_
-
- CreateAnnounce( p_sd, i_hash, p_sdp );
-
-- FREE( p_decompressed_buffer );
- return VLC_SUCCESS;
- }
-
-@@ -916,7 +911,7 @@ static int ParseConnection( vlc_object_t
- char *psz_parse = NULL;
- char *psz_uri = NULL;
- char *psz_proto = NULL;
-- char psz_source[256];
-+ char psz_source[258] = "";
- int i_port = 0;
-
- /* Parse c= field */
-@@ -1070,9 +1065,18 @@ static int ParseConnection( vlc_object_t
-
- /* handle SSM case */
- psz_parse = GetAttribute( p_sdp, "source-filter" );
-- psz_source[0] = '\0';
-+ if (psz_parse != NULL)
-+ {
-+ char psz_source_ip[256];
-
-- if( psz_parse ) sscanf( psz_parse, " incl IN IP%*s %*s %255s ", psz_source);
-+ if (sscanf (psz_parse, " incl IN IP%*c %*s %255s ", psz_source_ip) == 1)
-+ {
-+ if (strchr (psz_source_ip, ':') != NULL)
-+ sprintf (psz_source, "[%s]", psz_source_ip);
-+ else
-+ strcpy (psz_source, psz_source_ip);
-+ }
-+ }
-
- asprintf( &p_sdp->psz_uri, "%s://%s@%s:%i", psz_proto, psz_source,
- psz_uri, i_port );
-@@ -1107,6 +1111,9 @@ static sdp_t * ParseSDP( vlc_object_t *
- if( p_sdp == NULL )
- return NULL;
-
-+ /* init to 0 */
-+ memset( p_sdp, 0, sizeof( sdp_t ) );
-+
- p_sdp->psz_sdp = strdup( psz_sdp );
- if( p_sdp->psz_sdp == NULL )
- {
-@@ -1114,23 +1121,12 @@ static sdp_t * ParseSDP( vlc_object_t *
- return NULL;
- }
-
-- p_sdp->psz_sessionname = NULL;
-- p_sdp->psz_media = NULL;
-- p_sdp->psz_connection = NULL;
-- p_sdp->psz_uri = NULL;
-- p_sdp->psz_address = NULL;
-- p_sdp->psz_address_type= NULL;
--
-- p_sdp->i_media = 0;
-- p_sdp->i_attributes = 0;
-- p_sdp->pp_attributes = NULL;
--
- while( *psz_sdp != '\0' && b_end == VLC_FALSE )
- {
-- char *psz_eol;
-- char *psz_eof;
-- char *psz_parse;
-- char *psz_sess_id;
-+ char *psz_eol = NULL;
-+ char *psz_eof = NULL;
-+ char *psz_parse = NULL;
-+ char *psz_sess_id = NULL;
-
- while( *psz_sdp == '\r' || *psz_sdp == '\n' ||
- *psz_sdp == ' ' || *psz_sdp == '\t' )
-@@ -1257,7 +1253,7 @@ static sdp_t * ParseSDP( vlc_object_t *
-
- case( 'c' ):
- {
-- if( p_sdp->i_media > 1 )
-+ if( p_sdp->psz_connection != NULL ) // FIXME
- break;
-
- p_sdp->psz_connection = strdup( &psz_sdp[2] );
-@@ -1280,7 +1276,7 @@ static sdp_t * ParseSDP( vlc_object_t *
- return p_sdp;
- }
-
--static int InitSocket( services_discovery_t *p_sd, char *psz_address,
-+static int InitSocket( services_discovery_t *p_sd, const char *psz_address,
- int i_port )
- {
- int i_fd = net_OpenUDP( p_sd, psz_address, i_port, NULL, 0 );
-@@ -1309,10 +1305,7 @@ static int Decompress( unsigned char *ps
-
- i_result = inflateInit(&d_stream);
- if( i_result != Z_OK )
-- {
-- printf( "inflateInit() failed. Result: %d\n", i_result );
- return( -1 );
-- }
- #if 0
- p_playlist->pp_items[p_playlist->i_index]->b_autodeletion = VLC_TRUE;
- i_position = p_playlist->i_index;
-@@ -1338,7 +1331,7 @@ static int Decompress( unsigned char *ps
- i_result = inflate(&d_stream, Z_NO_FLUSH);
- if( ( i_result != Z_OK ) && ( i_result != Z_STREAM_END ) )
- {
-- printf( "Zlib decompression failed. Result: %d\n", i_result );
-+ inflateEnd( &d_stream );
- return( -1 );
- }
- }
-@@ -1438,14 +1431,3 @@ static vlc_bool_t IsSameSession( sdp_t *
- return VLC_FALSE;
- }
- }
--
--
--static void CacheLoad( services_discovery_t *p_sd )
--{
-- msg_Warn( p_sd, "cache not implemented") ;
--}
--
--static void CacheSave( services_discovery_t *p_sd )
--{
-- msg_Warn( p_sd, "cache not implemented") ;
--}
-diff -puriN vlc-0.8.6/src/network/io.c vlc-0.8.6a/src/network/io.c
---- vlc-0.8.6/src/network/io.c 2006-09-18 12:27:55.000000000 +0200
-+++ vlc-0.8.6a/src/network/io.c 2007-01-07 23:06:39.000000000 +0100
-@@ -113,7 +113,7 @@ int net_Socket( vlc_object_t *p_this, in
- # endif
- if( i_family == AF_INET6 )
- {
-- i_val = 30 /*PROTECTION_LEVEL_UNRESTRICTED*/;
-+ i_val = 10 /*PROTECTION_LEVEL_UNRESTRICTED*/;
- setsockopt( fd, IPPROTO_IPV6, IPV6_PROTECTION_LEVEL,
- (const char*)&i_val, sizeof( i_val ) );
- }
Deleted: testing/vlc/debian/patches/patch-private-libcaca-0.8.6debian-0.8.6a.diff
===================================================================
--- testing/vlc/debian/patches/patch-private-libcaca-0.8.6debian-0.8.6a.diff 2007-01-24 13:17:44 UTC (rev 146)
+++ testing/vlc/debian/patches/patch-private-libcaca-0.8.6debian-0.8.6a.diff 2007-01-25 00:57:47 UTC (rev 147)
@@ -1,96 +0,0 @@
-diff -puriN vlc-0.8.6/modules/video_output/caca.c vlc-0.8.6a/modules/video_output/caca.c
---- vlc-0.8.6/modules/video_output/caca.c 2006-09-18 12:28:25.000000000 +0200
-+++ vlc-0.8.6a/modules/video_output/caca.c 2007-01-07 23:07:22.000000000 +0100
-@@ -299,39 +299,72 @@ static int Manage( vout_thread_t *p_vout
- #else
- int ev;
- #endif
-- vlc_value_t val;
-
-- while( caca_get_event(p_vout->p_sys->p_dp,
-- CACA_EVENT_KEY_PRESS | CACA_EVENT_RESIZE, &ev, 0) )
-+ while( caca_get_event(p_vout->p_sys->p_dp, CACA_EVENT_ANY, &ev, 0) )
- {
-- /* Acknowledge the resize */
-+ playlist_t *p_playlist;
-+ vlc_value_t val;
-+
- #ifdef CACA_API_VERSION_1
-- if( ev.type == CACA_EVENT_RESIZE )
-+ switch( ev.type )
- #else
-- if( ev == CACA_EVENT_RESIZE )
-+ switch( ev )
- #endif
- {
-- caca_refresh_display( p_vout->p_sys->p_dp );
-- continue;
-- }
--
-+ case CACA_EVENT_KEY_RELEASE:
- #ifdef CACA_API_VERSION_1
-- switch( ev.data.key.ch )
-+ switch( ev.data.key.ch )
- #else
-- switch( ev & 0x00ffffff )
-+ switch( ev & 0x00ffffff )
- #endif
-- {
-- case 'q':
-- val.i_int = KEY_MODIFIER_CTRL | 'q';
-+ {
-+ case 'q':
-+ val.i_int = KEY_MODIFIER_CTRL | 'q';
-+ break;
-+ case ' ':
-+ val.i_int = KEY_SPACE;
-+ break;
-+ default:
-+ continue;
-+ }
-+
-+ var_Set( p_vout->p_libvlc, "key-pressed", val );
-+ break;
-+ case CACA_EVENT_RESIZE:
-+ /* Acknowledge the resize */
-+ caca_refresh_display( p_vout->p_sys->p_dp );
- break;
-- case ' ':
-- val.i_int = KEY_SPACE;
-+#ifdef CACA_API_VERSION_1
-+ case CACA_EVENT_MOUSE_MOTION:
-+ val.i_int = ev.data.mouse.x * p_vout->render.i_width
-+ / cucul_get_canvas_width( p_vout->p_sys->p_cv );
-+ var_Set( p_vout, "mouse-x", val );
-+ val.i_int = ev.data.mouse.y * p_vout->render.i_height
-+ / cucul_get_canvas_height( p_vout->p_sys->p_cv );
-+ var_Set( p_vout, "mouse-y", val );
-+ val.b_bool = VLC_TRUE;
-+ var_Set( p_vout, "mouse-moved", val );
-+ break;
-+ case CACA_EVENT_MOUSE_RELEASE:
-+ val.b_bool = VLC_TRUE;
-+ var_Set( p_vout, "mouse-clicked", val );
-+ break;
-+ case CACA_EVENT_QUIT:
-+ {
-+ p_playlist = vlc_object_find( p_vout,
-+ VLC_OBJECT_PLAYLIST, FIND_ANYWHERE );
-+ if( p_playlist )
-+ {
-+ playlist_Stop( p_playlist );
-+ vlc_object_release( p_playlist );
-+ }
-+ p_vout->p_libvlc->b_die = VLC_TRUE;
- break;
-+ }
-+#endif
- default:
-- continue;
-+ break;
- }
--
-- var_Set( p_vout->p_vlc, "key-pressed", val );
- }
-
- return VLC_SUCCESS;
Deleted: testing/vlc/debian/patches/patch-remove-debug-messages-0.8.6debian-0.8.6a.diff
===================================================================
--- testing/vlc/debian/patches/patch-remove-debug-messages-0.8.6debian-0.8.6a.diff 2007-01-24 13:17:44 UTC (rev 146)
+++ testing/vlc/debian/patches/patch-remove-debug-messages-0.8.6debian-0.8.6a.diff 2007-01-25 00:57:47 UTC (rev 147)
@@ -1,110 +0,0 @@
-diff -puriN vlc-0.8.6/modules/access/rtsp/real.c vlc-0.8.6a/modules/access/rtsp/real.c
---- vlc-0.8.6/modules/access/rtsp/real.c 2006-09-18 12:28:25.000000000 +0200
-+++ vlc-0.8.6a/modules/access/rtsp/real.c 2007-01-07 23:07:26.000000000 +0100
-@@ -673,7 +673,7 @@ rmff_header_t *real_setup_and_get_heade
- if( rtsp_read_data(rtsp_session, description, size) <= 0)
- goto error;
- description[size]=0;
-- fprintf(stderr, "%s", description);
-+ //fprintf(stderr, "%s", description);
-
- /* parse sdp (sdpplin) and create a header and a subscribe string */
- subscribe = (char *) malloc(sizeof(char)*256);
-diff -puriN vlc-0.8.6/modules/access/rtsp/rtsp.c vlc-0.8.6a/modules/access/rtsp/rtsp.c
---- vlc-0.8.6/modules/access/rtsp/rtsp.c 2006-09-18 12:28:25.000000000 +0200
-+++ vlc-0.8.6a/modules/access/rtsp/rtsp.c 2007-01-07 23:07:26.000000000 +0100
-@@ -142,7 +142,7 @@ static int rtsp_get_status_code( rtsp_cl
-
- if( i_code != 200 )
- {
-- fprintf( stderr, "librtsp: server responds: '%s'\n", psz_string );
-+ //fprintf( stderr, "librtsp: server responds: '%s'\n", psz_string );
- }
-
- return i_code;
-@@ -249,15 +249,15 @@ static int rtsp_get_answers( rtsp_client
- {
- if( strcmp( buf, rtsp->p_private->session ) )
- {
-- fprintf( stderr,
-- "rtsp: warning: setting NEW session: %s\n", buf );
-+ //fprintf( stderr,
-+ // "rtsp: warning: setting NEW session: %s\n", buf );
- free( rtsp->p_private->session );
- rtsp->p_private->session = strdup( buf );
- }
- }
- else
- {
-- fprintf( stderr, "setting session id to: %s\n", buf );
-+ //fprintf( stderr, "setting session id to: %s\n", buf );
- rtsp->p_private->session = strdup( buf );
- }
- free( buf );
-@@ -422,7 +422,7 @@ int rtsp_read_data( rtsp_client_t *rtsp,
-
- if( seq < 0 )
- {
-- fprintf(stderr, "warning: cseq not recognized!\n");
-+ //fprintf(stderr, "warning: cseq not recognized!\n");
- seq = 1;
- }
-
-@@ -515,13 +515,13 @@ int rtsp_connect( rtsp_client_t *rtsp, c
- }
-
- free( mrl_ptr );
-- fprintf( stderr, "got mrl: %s %i %s\n", s->host, s->port, s->path );
-+ //fprintf( stderr, "got mrl: %s %i %s\n", s->host, s->port, s->path );
-
- s->s = rtsp->pf_connect( rtsp->p_userdata, s->host, s->port );
-
- if( s->s < 0 )
- {
-- fprintf(stderr, "rtsp: failed to connect to '%s'\n", s->host);
-+ //fprintf(stderr, "rtsp: failed to connect to '%s'\n", s->host);
- rtsp_close( rtsp );
- return -1;
- }
-diff -puriN vlc-0.8.6/modules/demux/nsv.c vlc-0.8.6a/modules/demux/nsv.c
---- vlc-0.8.6/modules/demux/nsv.c 2006-09-18 12:28:17.000000000 +0200
-+++ vlc-0.8.6a/modules/demux/nsv.c 2007-01-07 23:07:06.000000000 +0100
-@@ -449,7 +449,6 @@ static int ReadNSVs( demux_t *p_demux )
- return VLC_EGENERIC;
- }
-
-- msg_Dbg( p_demux, "new NSVs chunk" );
- /* Video */
- switch( ( fcc = VLC_FOURCC( header[4], header[5], header[6], header[7] ) ) )
- {
-@@ -457,10 +456,11 @@ static int ReadNSVs( demux_t *p_demux )
- case VLC_FOURCC( 'V', 'P', '3', '1' ):
- fcc = VLC_FOURCC( 'V', 'P', '3', '1' );
- break;
-+ case VLC_FOURCC( 'V', 'P', '6', '2' ):
- case VLC_FOURCC( 'N', 'O', 'N', 'E' ):
- break;
- default:
-- msg_Warn( p_demux, "unknown codec" );
-+ msg_Warn( p_demux, "unknown codec %4.4s", (char *)&fcc );
- break;
- }
- if( fcc != VLC_FOURCC( 'N', 'O', 'N', 'E' ) && fcc != p_sys->fmt_video.i_codec )
-@@ -496,7 +496,7 @@ static int ReadNSVs( demux_t *p_demux )
- case VLC_FOURCC( 'N', 'O', 'N', 'E' ):
- break;
- default:
-- msg_Warn( p_demux, "unknown codec" );
-+ msg_Warn( p_demux, "unknown codec %4.4s", (char *)&fcc );
- break;
- }
-
-@@ -546,7 +546,7 @@ static int ReadNSVs( demux_t *p_demux )
- msg_Dbg( p_demux, "invalid fps (0x00)" );
- p_sys->i_pcr_inc = 40000;
- }
-- msg_Dbg( p_demux, " - fps=%.3f", 1000000.0 / (double)p_sys->i_pcr_inc );
-+ //msg_Dbg( p_demux, " - fps=%.3f", 1000000.0 / (double)p_sys->i_pcr_inc );
-
- return VLC_SUCCESS;
- }
Deleted: testing/vlc/debian/patches/patch-sanitise-javascript-0.8.6debian-0.8.6a.diff
===================================================================
--- testing/vlc/debian/patches/patch-sanitise-javascript-0.8.6debian-0.8.6a.diff 2007-01-24 13:17:44 UTC (rev 146)
+++ testing/vlc/debian/patches/patch-sanitise-javascript-0.8.6debian-0.8.6a.diff 2007-01-25 00:57:47 UTC (rev 147)
@@ -1,12 +0,0 @@
-diff -puriN vlc-0.8.6/share/http/js/vlm.js vlc-0.8.6a/share/http/js/vlm.js
---- vlc-0.8.6/share/http/js/vlm.js 2006-09-18 12:28:00.000000000 +0200
-+++ vlc-0.8.6a/share/http/js/vlm.js 2007-01-07 23:06:40.000000000 +0100
-@@ -153,7 +153,7 @@ function vlm_schedule_type_change( name
-
- function sanitize_input( str )
- {
-- return str.replace( /\\/g, '\\\\').replace( /\'/g, '\\\'' ).replace( /\"/g, '\\\"' ).replace( /^/, '"' ).replace( /$/, '"' ).replace( /\ option\ /g, '" option "' );
-+ return str.replace( /\"/g, '\\\"' ).replace( /^/, '"' ).replace( /$/, '"' ).replace( /\ option\ /g, '" option "' );
- }
-
- function update_vlm_add_broadcast()
Deleted: testing/vlc/debian/patches/patch-sdl-image-priority-0.8.6debian-0.8.6a.diff
===================================================================
--- testing/vlc/debian/patches/patch-sdl-image-priority-0.8.6debian-0.8.6a.diff 2007-01-24 13:17:44 UTC (rev 146)
+++ testing/vlc/debian/patches/patch-sdl-image-priority-0.8.6debian-0.8.6a.diff 2007-01-25 00:57:47 UTC (rev 147)
@@ -1,12 +0,0 @@
-diff -puriN vlc-0.8.6/modules/codec/sdl_image.c vlc-0.8.6a/modules/codec/sdl_image.c
---- vlc-0.8.6/modules/codec/sdl_image.c 2006-09-18 12:28:28.000000000 +0200
-+++ vlc-0.8.6a/modules/codec/sdl_image.c 2007-01-07 23:07:35.000000000 +0100
-@@ -52,7 +52,7 @@ vlc_module_begin();
- set_category( CAT_INPUT );
- set_subcategory( SUBCAT_INPUT_VCODEC );
- set_description( _("SDL_image video decoder") );
-- set_capability( "decoder", 900 );
-+ set_capability( "decoder", 60 );
- set_callbacks( OpenDecoder, CloseDecoder );
- add_shortcut( "sdl_image" );
- vlc_module_end();
Deleted: testing/vlc/debian/patches/patch-utf8-0.8.6debian-0.8.6a.diff
===================================================================
--- testing/vlc/debian/patches/patch-utf8-0.8.6debian-0.8.6a.diff 2007-01-24 13:17:44 UTC (rev 146)
+++ testing/vlc/debian/patches/patch-utf8-0.8.6debian-0.8.6a.diff 2007-01-25 00:57:47 UTC (rev 147)
@@ -1,2776 +0,0 @@
-diff -puriN vlc-0.8.6/include/vlc/libvlc.h vlc-0.8.6a/include/vlc/libvlc.h
---- vlc-0.8.6/include/vlc/libvlc.h 2006-10-08 18:40:59.000000000 +0200
-+++ vlc-0.8.6a/include/vlc/libvlc.h 2007-01-07 23:08:02.000000000 +0100
-@@ -330,13 +330,29 @@ int libvlc_video_get_height( libvlc_inpu
- int libvlc_video_get_width( libvlc_input_t *, libvlc_exception_t * );
-
- /**
-+ * Get current video aspect ratio
-+ * \param p_input the input
-+ * \param p_exception an initialized exception
-+ * \return the video aspect ratio
-+ */
-+char *libvlc_video_get_aspect_ratio( libvlc_input_t *, libvlc_exception_t * );
-+
-+/**
-+ * Set new video aspect ratio
-+ * \param p_input the input
-+ * \param psz_aspect new video aspect-ratio
-+ * \param p_exception an initialized exception
-+ */
-+void libvlc_video_set_aspect_ratio( libvlc_input_t *, char *, libvlc_exception_t * );
-+
-+/**
- * Take a snapshot of the current video window
- * \param p_input the input
- * \param psz_filepath the path where to save the screenshot to
- * \param p_exception an initialized exception
- */
- void libvlc_video_take_snapshot( libvlc_input_t *, char *, libvlc_exception_t * );
--
-+
- int libvlc_video_destroy( libvlc_input_t *, libvlc_exception_t *);
-
- /**
-@@ -561,23 +572,122 @@ void libvlc_vlm_play_media ( libvlc_inst
- * \param p_instance the instance
- * \param psz_name the name of the broadcast
- * \param p_exception an initialized exception
-- */
-+ */
- void libvlc_vlm_stop_media ( libvlc_instance_t *, char *, libvlc_exception_t * );
-
--
- /**
- * Pauses the named broadcast.
- * \param p_instance the instance
- * \param psz_name the name of the broadcast
- * \param p_exception an initialized exception
-- */
-+ */
- void libvlc_vlm_pause_media( libvlc_instance_t *, char *, libvlc_exception_t * );
--
--
-
- /** @} */
- /** @} */
-
-+/*****************************************************************************
-+ * Message log handling
-+ *****************************************************************************/
-+
-+/** defgroup libvlc_log Log
-+ * \ingroup libvlc
-+ * LibVLC Message Logging
-+ * @{
-+ */
-+
-+/** This structure is opaque. It represents a libvlc log instance */
-+typedef struct libvlc_log_t libvlc_log_t;
-+
-+/** This structure is opaque. It represents a libvlc log iterator */
-+typedef struct libvlc_log_iterator_t libvlc_log_iterator_t;
-+
-+typedef struct libvlc_log_message_t
-+{
-+ unsigned sizeof_msg; /* sizeof() of message structure, must be filled in by user */
-+ int i_severity; /* 0=INFO, 1=ERR, 2=WARN, 3=DBG */
-+ const char *psz_type; /* module type */
-+ const char *psz_name; /* module name */
-+ const char *psz_header; /* optional header */
-+ const char *psz_message; /* message */
-+} libvlc_log_message_t;
-+
-+/**
-+ * Returns the VLC messaging verbosity level
-+ * \param p_instance libvlc instance
-+ * \param exception an initialized exception pointer
-+ */
-+unsigned libvlc_get_log_verbosity( const libvlc_instance_t *p_instance, libvlc_exception_t *p_e );
-+
-+/**
-+ * Set the VLC messaging verbosity level
-+ * \param p_log libvlc log instance
-+ * \param exception an initialized exception pointer
-+ */
-+void libvlc_set_log_verbosity( libvlc_instance_t *p_instance, unsigned level, libvlc_exception_t *p_e );
-+
-+/**
-+ * Open an instance to VLC message log
-+ * \param p_instance libvlc instance
-+ * \param exception an initialized exception pointer
-+ */
-+libvlc_log_t *libvlc_log_open( const libvlc_instance_t *, libvlc_exception_t *);
-+
-+/**
-+ * Close an instance of VLC message log
-+ * \param p_log libvlc log instance
-+ * \param exception an initialized exception pointer
-+ */
-+void libvlc_log_close( libvlc_log_t *, libvlc_exception_t *);
-+
-+/**
-+ * Returns the number of messages in log
-+ * \param p_log libvlc log instance
-+ * \param exception an initialized exception pointer
-+ */
-+unsigned libvlc_log_count( const libvlc_log_t *, libvlc_exception_t *);
-+
-+/**
-+ * Clear all messages in log
-+ * the log should be cleared on a regular basis to avoid clogging
-+ * \param p_log libvlc log instance
-+ * \param exception an initialized exception pointer
-+ */
-+void libvlc_log_clear( libvlc_log_t *, libvlc_exception_t *);
-+
-+/**
-+ * Allocate and returns a new iterator to messages in log
-+ * \param p_log libvlc log instance
-+ * \param exception an initialized exception pointer
-+ */
-+libvlc_log_iterator_t *libvlc_log_get_iterator( const libvlc_log_t *, libvlc_exception_t *);
-+
-+/**
-+ * Releases a previoulsy allocated iterator
-+ * \param p_log libvlc log iterator
-+ * \param exception an initialized exception pointer
-+ */
-+void libvlc_log_iterator_free( libvlc_log_iterator_t *p_iter, libvlc_exception_t *p_e );
-+
-+/**
-+ * Returns whether log iterator has more messages
-+ * \param p_log libvlc log iterator
-+ * \param exception an initialized exception pointer
-+ */
-+int libvlc_log_iterator_has_next( const libvlc_log_iterator_t *p_iter, libvlc_exception_t *p_e );
-+
-+/**
-+ * Returns next log message
-+ * the content of message must not be freed
-+ * \param p_log libvlc log iterator
-+ * \param exception an initialized exception pointer
-+ */
-+libvlc_log_message_t *libvlc_log_iterator_next( libvlc_log_iterator_t *p_iter,
-+ struct libvlc_log_message_t *buffer,
-+ libvlc_exception_t *p_e );
-+
-+/** @} */
-+
- # ifdef __cplusplus
- }
- # endif
-diff -puriN vlc-0.8.6/modules/access/vcd/cdrom.c vlc-0.8.6a/modules/access/vcd/cdrom.c
---- vlc-0.8.6/modules/access/vcd/cdrom.c 2006-09-18 12:28:26.000000000 +0200
-+++ vlc-0.8.6a/modules/access/vcd/cdrom.c 2007-01-07 23:07:26.000000000 +0100
-@@ -26,24 +26,25 @@
- /*****************************************************************************
- * Preamble
- *****************************************************************************/
--#include <stdio.h>
--#include <stdlib.h>
--
- #include <vlc/vlc.h>
--#include "charset.h"
-+#include <vlc/input.h>
-
- #ifdef HAVE_UNISTD_H
- # include <unistd.h>
- #endif
-
--#include <fcntl.h>
--#include <sys/types.h>
--#include <sys/stat.h>
-+#include <stdio.h>
-+#include <stdlib.h>
- #include <string.h>
- #include <errno.h>
--
--#ifdef HAVE_SYS_IOCTL_H
--# include <sys/ioctl.h>
-+#ifdef HAVE_SYS_TYPES_H
-+# include <sys/types.h>
-+#endif
-+#ifdef HAVE_SYS_STAT_H
-+# include <sys/stat.h>
-+#endif
-+#ifdef HAVE_FCNTL_H
-+# include <fcntl.h>
- #endif
-
- #if defined( SYS_BSDI )
-@@ -70,6 +71,7 @@
-
- #include "cdrom_internals.h"
- #include "cdrom.h"
-+#include "charset.h"
-
- /*****************************************************************************
- * ioctl_Open: Opens a VCD device or file and returns an opaque handle
-@@ -830,14 +832,28 @@ static int OpenVCDImage( vlc_object_t *
- int i_ret = -1;
- char *p_pos;
- char *psz_vcdfile = NULL;
-+ char *psz_vcdfile2 = NULL;
- char *psz_cuefile = NULL;
-- FILE *cuefile;
-+ FILE *cuefile = NULL;
- char line[1024];
-
- /* Check if we are dealing with a .cue file */
- p_pos = strrchr( psz_dev, '.' );
- if( p_pos && !strcmp( p_pos, ".cue" ) )
- {
-+ /* psz_dev must be the cue file. Let's assume there's a .bin
-+ * file with the same filename */
-+ if( p_pos )
-+ {
-+ psz_vcdfile = malloc( p_pos - psz_dev + 5 /* ".bin" */ );
-+ strncpy( psz_vcdfile, psz_dev, p_pos - psz_dev );
-+ strcpy( psz_vcdfile + (p_pos - psz_dev), ".bin");
-+ }
-+ else
-+ {
-+ psz_vcdfile = malloc( strlen(psz_dev) + 5 /* ".bin" */ );
-+ sprintf( psz_vcdfile, "%s.bin", psz_dev );
-+ }
- psz_cuefile = strdup( psz_dev );
- }
- else
-@@ -855,14 +871,32 @@ static int OpenVCDImage( vlc_object_t *
- psz_cuefile = malloc( strlen(psz_dev) + 5 /* ".cue" */ );
- sprintf( psz_cuefile, "%s.cue", psz_dev );
- }
-+ /* If we need to look up the .cue file, then we don't have to look for the vcd */
-+ psz_vcdfile = strdup( psz_dev );
- }
-
- /* Open the cue file and try to parse it */
- msg_Dbg( p_this,"trying .cue file: %s", psz_cuefile );
- cuefile = utf8_fopen( psz_cuefile, "rt" );
-- if( cuefile && fscanf( cuefile, "FILE %c", line ) &&
-+ if( cuefile == NULL )
-+ {
-+ i_ret = -1;
-+ msg_Dbg( p_this, "could not find .cue file" );
-+ goto error;
-+ }
-+
-+ psz_vcdfile2 = ToLocale( psz_vcdfile );
-+ msg_Dbg( p_this,"using vcd image file: %s", psz_vcdfile );
-+ p_vcddev->i_vcdimage_handle = open( psz_vcdfile2,
-+ O_RDONLY | O_NONBLOCK | O_BINARY);
-+ LocaleFree( psz_vcdfile2 );
-+
-+ if( p_vcddev->i_vcdimage_handle == -1 &&
-+ fscanf( cuefile, "FILE %c", line ) &&
- fgets( line, 1024, cuefile ) )
- {
-+ /* We have a cue file, but no valid vcd file yet */
-+ free( psz_vcdfile );
- p_pos = strchr( line, '"' );
- if( p_pos )
- {
-@@ -879,15 +913,19 @@ static int OpenVCDImage( vlc_object_t *
- }
- else psz_vcdfile = strdup( line );
- }
-+ psz_vcdfile2 = ToLocale( (const char *)psz_vcdfile );
-+ msg_Dbg( p_this,"using vcd image file: %s", psz_vcdfile );
-+ p_vcddev->i_vcdimage_handle = open( psz_vcdfile2,
-+ O_RDONLY | O_NONBLOCK | O_BINARY);
-+ LocaleFree( psz_vcdfile2 );
- }
-
-- if( psz_vcdfile )
-+ if( p_vcddev->i_vcdimage_handle == -1)
- {
-- msg_Dbg( p_this,"using vcd image file: %s", psz_vcdfile );
-- p_vcddev->i_vcdimage_handle = open( psz_vcdfile,
-- O_RDONLY | O_NONBLOCK | O_BINARY );
-- i_ret = (p_vcddev->i_vcdimage_handle == -1) ? -1 : 0;
-+ i_ret = -1;
-+ goto error;
- }
-+ else i_ret = 0;
-
- /* Try to parse the i_tracks and p_sectors info so we can just forget
- * about the cuefile */
-@@ -933,6 +971,7 @@ static int OpenVCDImage( vlc_object_t *
-
- }
-
-+error:
- if( cuefile ) fclose( cuefile );
- if( psz_cuefile ) free( psz_cuefile );
- if( psz_vcdfile ) free( psz_vcdfile );
-diff -puriN vlc-0.8.6/modules/access_output/file.c vlc-0.8.6a/modules/access_output/file.c
---- vlc-0.8.6/modules/access_output/file.c 2006-10-12 19:47:03.000000000 +0200
-+++ vlc-0.8.6a/modules/access_output/file.c 2007-01-07 23:07:05.000000000 +0100
-@@ -129,10 +129,9 @@ static int Open( vlc_object_t *p_this )
- }
- else
- {
-- char *psz_localname = ToLocale( p_access->psz_name );
-- char *psz_tmp, *psz_tmp2, *psz_rewriten;
-- int fd, i, i_length = strlen( psz_localname );
-- for( i = 0, psz_tmp = psz_localname ;
-+ char *psz_tmp, *psz_tmp2, *psz_localname, *psz_rewriten;
-+ int fd, i, i_length = strlen( p_access->psz_name );
-+ for( i = 0, psz_tmp = p_access->psz_name ;
- ( psz_tmp = strstr( psz_tmp, "%T" ) ) ; psz_tmp++, i++ )
- ;
- if( i )
-@@ -141,7 +140,7 @@ static int Open( vlc_object_t *p_this )
- psz_rewriten = (char *) malloc( i_length );
- if( ! psz_rewriten )
- return ( VLC_EGENERIC );
-- psz_tmp = psz_localname;
-+ psz_tmp = p_access->psz_name;
- psz_tmp2 = psz_rewriten;
- while( *psz_tmp )
- {
-@@ -156,15 +155,33 @@ static int Open( vlc_object_t *p_this )
- *psz_tmp2++ = *psz_tmp++;
- }
- *psz_tmp2 = *psz_tmp;
-- fd = open( psz_rewriten, i_flags, 0666 );
-- LocaleFree( psz_localname );
-- free( psz_rewriten );
- }
- else
- {
-+ psz_rewriten = p_access->psz_name;
-+ }
-+#if defined (WIN32)
-+
-+ if( GetVersion() < 0x80000000 )
-+ {
-+ /* for Windows NT and above */
-+ wchar_t wpath[MAX_PATH + 1];
-+
-+ if( !MultiByteToWideChar( CP_UTF8, 0, psz_rewriten, -1,
-+ wpath,MAX_PATH ) ) return VLC_EGENERIC;
-+
-+ wpath[MAX_PATH] = L'\0';
-+
-+ fd = _wopen( wpath, i_flags, 0666 );
-+ }
-+ else
-+#endif
-+ {
-+ psz_localname = ToLocale( psz_rewriten );
- fd = open( psz_localname, i_flags, 0666 );
- LocaleFree( psz_localname );
- }
-+ if ( i ) free( psz_rewriten );
- if( fd == -1 )
- {
- msg_Err( p_access, "cannot open `%s' (%s)", p_access->psz_name,
-diff -puriN vlc-0.8.6/modules/codec/fake.c vlc-0.8.6a/modules/codec/fake.c
---- vlc-0.8.6/modules/codec/fake.c 2006-09-18 12:28:28.000000000 +0200
-+++ vlc-0.8.6a/modules/codec/fake.c 2007-01-07 23:07:35.000000000 +0100
-@@ -64,7 +64,7 @@ static picture_t *DecodeBlock ( decoder
- #define DEINTERLACE_MODULE_LONGTEXT N_( \
- "Deinterlace module to use." )
-
--static char *ppsz_deinterlace_type[] =
-+static const char *ppsz_deinterlace_type[] =
- {
- "deinterlace", "ffmpeg-deinterlace"
- };
-@@ -106,7 +106,7 @@ static int OpenDecoder( vlc_object_t *p_
- image_handler_t *p_handler;
- video_format_t fmt_in, fmt_out;
- picture_t *p_image;
-- char *psz_file, *psz_local;
-+ char *psz_file;
- vlc_bool_t b_keep_ar;
- int i_aspect = 0;
-
-@@ -161,9 +161,7 @@ static int OpenDecoder( vlc_object_t *p_
- }
-
- p_handler = image_HandlerCreate( p_dec );
-- psz_local = ToLocale( psz_file );
-- p_image = image_ReadUrl( p_handler, psz_local, &fmt_in, &fmt_out );
-- LocaleFree( psz_local );
-+ p_image = image_ReadUrl( p_handler, psz_file, &fmt_in, &fmt_out );
- image_HandlerDelete( p_handler );
-
- if ( p_image == NULL )
-diff -puriN vlc-0.8.6/modules/control/http/util.c vlc-0.8.6a/modules/control/http/util.c
---- vlc-0.8.6/modules/control/http/util.c 2006-09-18 12:28:16.000000000 +0200
-+++ vlc-0.8.6a/modules/control/http/util.c 2007-01-07 23:07:05.000000000 +0100
-@@ -253,7 +253,7 @@ int E_(ParseDirectory)( intf_thread_t *p
- if( !f->name )
- {
- msg_Err( p_intf , "unable to parse directory" );
-- closedir( p_dir );
-+ vlc_closedir_wrapper( p_dir );
- free( f );
- return( VLC_ENOMEM );
- }
-@@ -336,7 +336,7 @@ int E_(ParseDirectory)( intf_thread_t *p
- }
-
- ACL_Destroy( p_acl );
-- closedir( p_dir );
-+ vlc_closedir_wrapper( p_dir );
-
- return VLC_SUCCESS;
- }
-diff -puriN vlc-0.8.6/modules/demux/mkv.cpp vlc-0.8.6a/modules/demux/mkv.cpp
---- vlc-0.8.6/modules/demux/mkv.cpp 2006-09-22 17:14:29.000000000 +0200
-+++ vlc-0.8.6a/modules/demux/mkv.cpp 2007-01-07 23:07:06.000000000 +0100
-@@ -38,6 +38,7 @@
- #include <codecs.h> /* BITMAPINFOHEADER, WAVEFORMATEX */
- #include "iso_lang.h"
- #include "vlc_meta.h"
-+#include "charset.h"
-
- #include <iostream>
- #include <cassert>
-@@ -1491,16 +1492,16 @@ static int Open( vlc_object_t * p_this )
- }
- }
-
-- struct dirent *p_file_item;
-- DIR *p_src_dir = opendir(s_path.c_str());
-+ DIR *p_src_dir = (DIR *)utf8_opendir(s_path.c_str());
-
- if (p_src_dir != NULL)
- {
-- while ((p_file_item = (dirent *) readdir(p_src_dir)))
-+ const char *psz_file;
-+ while ((psz_file = utf8_readdir(p_src_dir)) != NULL)
- {
-- if (strlen(p_file_item->d_name) > 4)
-+ if (strlen(psz_file) > 4)
- {
-- s_filename = s_path + DIRECTORY_SEPARATOR + p_file_item->d_name;
-+ s_filename = s_path + DIRECTORY_SEPARATOR + psz_file;
-
- #ifdef WIN32
- if (!strcasecmp(s_filename.c_str(), p_demux->psz_path))
-@@ -1545,8 +1546,9 @@ static int Open( vlc_object_t * p_this )
- }
- }
- }
-+ LocaleFree (psz_file);
- }
-- closedir( p_src_dir );
-+ vlc_closedir_wrapper( p_src_dir );
- }
- }
-
-@@ -2383,6 +2385,20 @@ bool matroska_segment_c::Select( mtime_t
- tracks[i_track]->fmt.p_extra = malloc( tracks[i_track]->i_extra_data );
- memcpy( tracks[i_track]->fmt.p_extra, tracks[i_track]->p_extra_data, tracks[i_track]->i_extra_data );
- }
-+ else if( !strcmp( tracks[i_track]->psz_codec, "A_WAVPACK4" ) )
-+ {
-+ tracks[i_track]->fmt.i_codec = VLC_FOURCC( 'W', 'V', 'P', 'K' );
-+ tracks[i_track]->fmt.i_extra = tracks[i_track]->i_extra_data;
-+ tracks[i_track]->fmt.p_extra = malloc( tracks[i_track]->i_extra_data );
-+ memcpy( tracks[i_track]->fmt.p_extra, tracks[i_track]->p_extra_data, tracks[i_track]->i_extra_data );
-+ }
-+ else if( !strcmp( tracks[i_track]->psz_codec, "A_TTA1" ) )
-+ {
-+ tracks[i_track]->fmt.i_codec = VLC_FOURCC( 'T', 'T', 'A', '1' );
-+ tracks[i_track]->fmt.i_extra = tracks[i_track]->i_extra_data;
-+ tracks[i_track]->fmt.p_extra = malloc( tracks[i_track]->i_extra_data );
-+ memcpy( tracks[i_track]->fmt.p_extra, tracks[i_track]->p_extra_data, tracks[i_track]->i_extra_data );
-+ }
- else if( !strcmp( tracks[i_track]->psz_codec, "A_PCM/INT/BIG" ) ||
- !strcmp( tracks[i_track]->psz_codec, "A_PCM/INT/LIT" ) ||
- !strcmp( tracks[i_track]->psz_codec, "A_PCM/FLOAT/IEEE" ) )
-@@ -2397,18 +2413,6 @@ bool matroska_segment_c::Select( mtime_t
- }
- tracks[i_track]->fmt.audio.i_blockalign = ( tracks[i_track]->fmt.audio.i_bitspersample + 7 ) / 8 * tracks[i_track]->fmt.audio.i_channels;
- }
-- else if( !strcmp( tracks[i_track]->psz_codec, "A_TTA1" ) )
-- {
-- /* FIXME: support this codec */
-- msg_Err( &sys.demuxer, "TTA not supported yet[%d, n=%d]", (int)i_track, tracks[i_track]->i_number );
-- tracks[i_track]->fmt.i_codec = VLC_FOURCC( 'u', 'n', 'd', 'f' );
-- }
-- else if( !strcmp( tracks[i_track]->psz_codec, "A_WAVPACK4" ) )
-- {
-- /* FIXME: support this codec */
-- msg_Err( &sys.demuxer, "Wavpack not supported yet[%d, n=%d]", (int)i_track, tracks[i_track]->i_number );
-- tracks[i_track]->fmt.i_codec = VLC_FOURCC( 'u', 'n', 'd', 'f' );
-- }
- else if( !strcmp( tracks[i_track]->psz_codec, "S_TEXT/UTF8" ) )
- {
- tracks[i_track]->fmt.i_codec = VLC_FOURCC( 's', 'u', 'b', 't' );
-diff -puriN vlc-0.8.6/modules/demux/mp4/mp4.c vlc-0.8.6a/modules/demux/mp4/mp4.c
---- vlc-0.8.6/modules/demux/mp4/mp4.c 2006-10-08 18:40:54.000000000 +0200
-+++ vlc-0.8.6a/modules/demux/mp4/mp4.c 2007-01-07 23:07:06.000000000 +0100
-@@ -368,7 +368,7 @@ static int Open( vlc_object_t * p_this )
- char *psz_ref;
- uint32_t i_ref_type;
-
-- if( !p_rdrf || !( psz_ref = p_rdrf->data.p_rdrf->psz_ref ) )
-+ if( !p_rdrf || !( psz_ref = strdup( p_rdrf->data.p_rdrf->psz_ref ) ) )
- {
- continue;
- }
-@@ -387,57 +387,38 @@ static int Open( vlc_object_t * p_this )
- if( !strncmp( psz_ref, "http://", 7 ) ||
- !strncmp( psz_ref, "rtsp://", 7 ) )
- {
-- msg_Dbg( p_demux, "adding ref = `%s'", psz_ref );
-- if( p_item )
-- {
-- playlist_item_t *p_child =
-- playlist_ItemNew( p_playlist,
-- psz_ref, psz_ref );
-- if( p_child )
-- {
-- playlist_NodeAddItem( p_playlist, p_child,
-- p_item->pp_parents[0]->i_view,
-- p_item, PLAYLIST_APPEND,
-- PLAYLIST_END );
-- playlist_CopyParents( p_item, p_child );
-- b_play = VLC_TRUE;
-- }
-- }
-+ ;
- }
- else
- {
-- /* msg dbg relative ? */
-- int i_path_size = strlen( p_demux->psz_access ) + 3 +
-- strlen( p_demux->psz_path ) + strlen( psz_ref ) + 1;
-- char psz_absolute[i_path_size];
-- char *end = strrchr( p_demux->psz_path, '/' );
--
-- if( end )
-- {
-- snprintf( psz_absolute, i_path_size, "%s://%s",
-- p_demux->psz_access, p_demux->psz_path );
-- }
-- else
-- {
-- *psz_absolute = '\0';
-- }
-- strcat( psz_absolute, psz_ref );
-- msg_Dbg( p_demux, "adding ref = `%s'", psz_absolute );
-- if( p_item )
-+ char *psz_absolute;
-+ char *psz_path = strdup( p_demux->psz_path );
-+ char *end = strrchr( psz_path, '/' );
-+
-+ if( end ) end[1] = '\0';
-+ else *psz_path = '\0';
-+
-+ asprintf( &psz_absolute, "%s://%s%s",
-+ p_demux->psz_access, psz_path, psz_ref );
-+
-+ if( psz_ref ) free( psz_ref );
-+ psz_ref = psz_absolute;
-+ free( psz_path );
-+ }
-+ msg_Dbg( p_demux, "adding ref = `%s'", psz_ref );
-+ if( p_item )
-+ {
-+ playlist_item_t *p_child =
-+ playlist_ItemNew( p_playlist,
-+ psz_ref, psz_ref );
-+ if( p_child )
- {
-- playlist_item_t *p_child =
-- playlist_ItemNew( p_playlist,
-- psz_absolute,
-- psz_absolute );
-- if( p_child )
-- {
-- playlist_NodeAddItem( p_playlist, p_child,
-- p_item->pp_parents[0]->i_view,
-- p_item, PLAYLIST_APPEND,
-- PLAYLIST_END );
-- playlist_CopyParents( p_item, p_child );
-- b_play = VLC_TRUE;
-- }
-+ playlist_NodeAddItem( p_playlist, p_child,
-+ p_item->pp_parents[0]->i_view,
-+ p_item, PLAYLIST_APPEND,
-+ PLAYLIST_END );
-+ playlist_CopyParents( p_item, p_child );
-+ b_play = VLC_TRUE;
- }
- }
- }
-@@ -446,6 +427,7 @@ static int Open( vlc_object_t * p_this )
- msg_Err( p_demux, "unknown ref type=%4.4s FIXME (send a bug report)",
- (char*)&p_rdrf->data.p_rdrf->i_ref_type );
- }
-+ if( psz_ref ) free( psz_ref );
- }
- if( b_play == VLC_TRUE )
- {
-diff -puriN vlc-0.8.6/modules/demux/playlist/m3u.c vlc-0.8.6a/modules/demux/playlist/m3u.c
---- vlc-0.8.6/modules/demux/playlist/m3u.c 2006-09-18 12:28:17.000000000 +0200
-+++ vlc-0.8.6a/modules/demux/playlist/m3u.c 2007-01-07 23:07:06.000000000 +0100
-@@ -105,6 +105,27 @@ void E_(Close_M3U)( vlc_object_t *p_this
- free( p_demux->p_sys );
- }
-
-+/* Kvik! */
-+static inline char *MaybeFromLocaleDup (const char *str)
-+{
-+ if (str == NULL)
-+ return NULL;
-+
-+ return IsUTF8 (str) ? strdup (str) : FromLocaleDup (str);
-+}
-+
-+
-+static inline void MaybeFromLocaleRep (char **str)
-+{
-+ char *const orig_str = *str;
-+
-+ if ((orig_str != NULL) && !IsUTF8 (orig_str))
-+ {
-+ *str = FromLocaleDup (orig_str);
-+ free (orig_str);
-+ }
-+}
-+
- static int Demux( demux_t *p_demux )
- {
- playlist_t *p_playlist;
-@@ -176,7 +197,7 @@ static int Demux( demux_t *p_demux )
- psz_parse += sizeof("EXTVLCOPT:") -1;
- if( !*psz_parse ) goto error;
-
-- psz_option = strdup( psz_parse );
-+ psz_option = MaybeFromLocaleDup( psz_parse );
- if( psz_option )
- INSERT_ELEM( ppsz_options, i_options, i_options,
- psz_option );
-@@ -188,21 +209,18 @@ static int Demux( demux_t *p_demux )
- if( !psz_name || !*psz_name )
- {
- /* Use filename as name for relative entries */
-- psz_name = strdup( psz_parse );
-+ psz_name = MaybeFromLocaleDup( psz_parse );
- }
-
- psz_mrl = E_(ProcessMRL)( psz_parse, p_demux->p_sys->psz_prefix );
-+ MaybeFromLocaleRep( &psz_mrl);
-
- b_cleanup = VLC_TRUE;
- if( !psz_mrl ) goto error;
-
-- EnsureUTF8( psz_name );
-- EnsureUTF8( psz_mrl );
--
- p_item = playlist_ItemNew( p_playlist, psz_mrl, psz_name );
- for( i = 0; i< i_options; i++ )
- {
-- EnsureUTF8( ppsz_options[i] );
- playlist_ItemAddOption( p_item, ppsz_options[i] );
- }
- p_item->input.i_duration = i_duration;
-diff -puriN vlc-0.8.6/modules/gui/ncurses.c vlc-0.8.6a/modules/gui/ncurses.c
---- vlc-0.8.6/modules/gui/ncurses.c 2006-09-18 12:28:25.000000000 +0200
-+++ vlc-0.8.6a/modules/gui/ncurses.c 2007-01-07 23:07:21.000000000 +0100
-@@ -2009,7 +2009,7 @@ static void ReadDir( intf_thread_t *p_in
- qsort( p_sys->pp_dir_entries, p_sys->i_dir_entries,
- sizeof(struct dir_entry_t*), &comp_dir_entries );
-
-- closedir( p_current_dir );
-+ vlc_closedir_wrapper( p_current_dir );
- return;
- }
- else
-diff -puriN vlc-0.8.6/modules/gui/skins2/commands/cmd_fullscreen.cpp vlc-0.8.6a/modules/gui/skins2/commands/cmd_fullscreen.cpp
---- vlc-0.8.6/modules/gui/skins2/commands/cmd_fullscreen.cpp 2006-09-18 12:28:22.000000000 +0200
-+++ vlc-0.8.6a/modules/gui/skins2/commands/cmd_fullscreen.cpp 2007-01-07 23:07:16.000000000 +0100
-@@ -36,7 +36,10 @@ void CmdFullscreen::execute()
- }
-
- pVout = (vout_thread_t *)vlc_object_find( getIntf()->p_sys->p_input,
-- VLC_OBJECT_VOUT, FIND_CHILD );
-+ VLC_OBJECT_VOUT, FIND_CHILD );
-+ if( !pVout )
-+ pVout = (vout_thread_t *)vlc_object_find( getIntf()->p_sys->p_input,
-+ VLC_OBJECT_VOUT, FIND_ANYWHERE );
- if( pVout )
- {
- // Switch to fullscreen
-diff -puriN vlc-0.8.6/modules/gui/skins2/parser/skin_parser.cpp vlc-0.8.6a/modules/gui/skins2/parser/skin_parser.cpp
---- vlc-0.8.6/modules/gui/skins2/parser/skin_parser.cpp 2006-09-25 13:47:38.000000000 +0200
-+++ vlc-0.8.6a/modules/gui/skins2/parser/skin_parser.cpp 2007-01-07 23:07:18.000000000 +0100
-@@ -311,6 +311,7 @@ void SkinParser::handleBeginElement( con
- RequireDefault( "id" );
- RequireDefault( "font" );
- CheckDefault( "visible", "true" );
-+ CheckDefault( "flat", "true" ); // only difference here
- CheckDefault( "x", "0" );
- CheckDefault( "y", "0" );
- CheckDefault( "width", "0" );
-@@ -320,6 +321,9 @@ void SkinParser::handleBeginElement( con
- CheckDefault( "xkeepratio", "false" );
- CheckDefault( "ykeepratio", "false" );
- CheckDefault( "bgimage", "none" );
-+ CheckDefault( "itemimage", "none" );
-+ CheckDefault( "openimage", "none" );
-+ CheckDefault( "closedimage", "none" );
- CheckDefault( "fgcolor", "#000000" );
- CheckDefault( "playcolor", "#FF0000" );
- CheckDefault( "bgcolor1", "#FFFFFF" );
-@@ -543,6 +547,10 @@ void SkinParser::handleBeginElement( con
-
- else if( rName == "ThemeInfo" )
- {
-+ CheckDefault( "name", "" );
-+ CheckDefault( "author", "" );
-+ CheckDefault( "email", "" );
-+ CheckDefault( "website", "" );
- msg_Info( getIntf(), "skin: %s author: %s", attr["name"],
- attr["author"] );
- }
-diff -puriN vlc-0.8.6/modules/gui/skins2/src/generic_layout.cpp vlc-0.8.6a/modules/gui/skins2/src/generic_layout.cpp
---- vlc-0.8.6/modules/gui/skins2/src/generic_layout.cpp 2006-09-18 12:28:22.000000000 +0200
-+++ vlc-0.8.6a/modules/gui/skins2/src/generic_layout.cpp 2007-01-07 23:07:17.000000000 +0100
-@@ -27,6 +27,7 @@
- #include "os_factory.hpp"
- #include "os_graphics.hpp"
- #include "var_manager.hpp"
-+#include "anchor.hpp"
- #include "../controls/ctrl_generic.hpp"
- #include "../controls/ctrl_video.hpp"
- #include "../utils/var_bool.hpp"
-@@ -57,6 +58,11 @@ GenericLayout::~GenericLayout()
- {
- delete m_pImage;
- }
-+ list<Anchor*>::const_iterator it;
-+ for( it = m_anchorList.begin(); it != m_anchorList.end(); it++ )
-+ {
-+ delete *it;
-+ }
- }
-
-
-diff -puriN vlc-0.8.6/modules/gui/skins2/src/skin_common.hpp vlc-0.8.6a/modules/gui/skins2/src/skin_common.hpp
---- vlc-0.8.6/modules/gui/skins2/src/skin_common.hpp 2006-09-18 12:28:22.000000000 +0200
-+++ vlc-0.8.6a/modules/gui/skins2/src/skin_common.hpp 2007-01-07 23:07:17.000000000 +0100
-@@ -76,6 +76,14 @@ static inline string sFromLocale( const
- return res;
- }
-
-+/// Wrapper around FromWide, to avoid the need to call free()
-+static inline string sFromWide( const wstring &rWide )
-+{
-+ char *s = FromWide( rWide.c_str() );
-+ string res = s;
-+ free( s );
-+ return res;
-+}
-
- /// Wrapper around ToLocale, to avoid the need to call LocaleFree()
- static inline string sToLocale( const string &rUTF8 )
-diff -puriN vlc-0.8.6/modules/gui/skins2/src/skin_main.cpp vlc-0.8.6a/modules/gui/skins2/src/skin_main.cpp
---- vlc-0.8.6/modules/gui/skins2/src/skin_main.cpp 2006-10-08 18:40:55.000000000 +0200
-+++ vlc-0.8.6a/modules/gui/skins2/src/skin_main.cpp 2007-01-07 23:07:17.000000000 +0100
-@@ -437,6 +437,9 @@ static int onTaskBarChange( vlc_object_t
- #define SKINS2_TRANSPARENCY_LONG N_("You can disable all transparency effects"\
- " if you want. This is mainly useful when moving windows does not behave" \
- " correctly.")
-+#define SKINS2_PLAYLIST N_("Enable skinned playlist")
-+#define SKINS2_PLAYLIST_LONG N_("You can choose whether the playlist window"\
-+ " is rendered using the skin or the default GUI.")
-
- vlc_module_begin();
- set_category( CAT_INTERFACE );
-@@ -456,8 +459,8 @@ vlc_module_begin();
- SKINS2_TRANSPARENCY_LONG, VLC_FALSE );
- #endif
-
-- add_bool( "skinned-playlist", VLC_TRUE, NULL, SKINS2_TRANSPARENCY,
-- SKINS2_TRANSPARENCY_LONG, VLC_FALSE );
-+ add_bool( "skinned-playlist", VLC_TRUE, NULL, SKINS2_PLAYLIST,
-+ SKINS2_PLAYLIST_LONG, VLC_FALSE );
- set_shortname( _("Skins"));
- set_description( _("Skinnable Interface") );
- set_capability( "interface", 30 );
-diff -puriN vlc-0.8.6/modules/gui/skins2/src/theme.cpp vlc-0.8.6a/modules/gui/skins2/src/theme.cpp
---- vlc-0.8.6/modules/gui/skins2/src/theme.cpp 2006-09-18 12:28:22.000000000 +0200
-+++ vlc-0.8.6a/modules/gui/skins2/src/theme.cpp 2007-01-07 23:07:17.000000000 +0100
-@@ -23,6 +23,8 @@
- *****************************************************************************/
-
- #include "theme.hpp"
-+#include "top_window.hpp"
-+#include <sstream>
-
-
- Theme::~Theme()
-@@ -50,39 +52,77 @@ void Theme::loadConfig()
- // Is there an existing config?
- if( !strcmp( save, "" ) )
- {
-- // Show the windows
-+ // Show the windows as indicated by the XML file
- m_windowManager.showAll( true );
- return;
- }
-
-- // Initialization
-- map<string, TopWindowPtr>::const_iterator it;
-- int i = 0;
-- int x, y, visible, scan;
-+ istringstream inStream(save);
-+ free( save );
-
-- // Get config for each window
-- for( it = m_windows.begin(); it != m_windows.end(); it++ )
-+ char sep;
-+ string winId, layId;
-+ int x, y, width, height, visible;
-+ bool somethingVisible = false;
-+ while( !inStream.eof() )
- {
-- TopWindow *pWin = (*it).second.get();
-- // Get config
-- scan = sscanf( &save[i * 13], "(%4d,%4d,%1d)", &x, &y, &visible );
-+ inStream >> sep;
-+ if( sep != '[' ) goto invalid;
-+ inStream >> winId >> layId >> x >> y >> width >> height >> visible >> sep >> ws;
-+ if( sep != ']' ) goto invalid;
-+
-+ // Try to find the window and the layout
-+ map<string, TopWindowPtr>::const_iterator itWin;
-+ map<string, GenericLayoutPtr>::const_iterator itLay;
-+ itWin = m_windows.find( winId );
-+ itLay = m_layouts.find( layId );
-+ if( itWin == m_windows.end() || itLay == m_layouts.end() )
-+ {
-+ goto invalid;
-+ }
-+ TopWindow *pWin = itWin->second.get();
-+ GenericLayout *pLayout = itLay->second.get();
-
-- // If config has the correct number of arguments
-- if( scan > 2 )
-+ // Restore the layout
-+ m_windowManager.setActiveLayout( *pWin, *pLayout );
-+ if( pLayout->getWidth() != width ||
-+ pLayout->getHeight() != height )
- {
-+ // XXX FIXME XXX: big kludge
-+ // As resizing a hidden window causes some trouble (at least on
-+ // Windows), first show the window off screen, resize it, and
-+ // hide it again.
-+ // This has to be investigated more deeply!
- m_windowManager.startMove( *pWin );
-- m_windowManager.move( *pWin, x, y );
-+ m_windowManager.move( *pWin, -width - pLayout->getWidth(), 0);
- m_windowManager.stopMove();
-- if( visible )
-- {
-- m_windowManager.show( *pWin );
-- }
-+ m_windowManager.show( *pWin );
-+ m_windowManager.startResize( *pLayout, WindowManager::kResizeSE );
-+ m_windowManager.resize( *pLayout, width, height );
-+ m_windowManager.stopResize();
-+ m_windowManager.hide( *pWin );
- }
-+ // Move the window (which incidentally takes care of the anchoring)
-+ m_windowManager.startMove( *pWin );
-+ m_windowManager.move( *pWin, x, y );
-+ m_windowManager.stopMove();
-+ if( visible )
-+ {
-+ somethingVisible = true;
-+ m_windowManager.show( *pWin );
-+ }
-+ }
-
-- // Next window
-- i++;
-+ if( !somethingVisible )
-+ {
-+ goto invalid;
- }
-- free( save );
-+ return;
-+
-+invalid:
-+ msg_Warn( getIntf(), "invalid config: %s", inStream.str().c_str() );
-+ // Restore the visibility defined in the theme
-+ m_windowManager.showAll( true );
- }
-
-
-@@ -90,29 +130,32 @@ void Theme::saveConfig()
- {
- msg_Dbg( getIntf(), "saving theme configuration");
-
-- // Initialize char where config is stored
-- char *save = new char[400];
-- map<string, TopWindowPtr>::const_iterator it;
-- int i = 0;
-- int x, y;
--
-- // Save config of every window
-- for( it = m_windows.begin(); it != m_windows.end(); it++ )
-+ map<string, TopWindowPtr>::const_iterator itWin;
-+ map<string, GenericLayoutPtr>::const_iterator itLay;
-+ ostringstream outStream;
-+ for( itWin = m_windows.begin(); itWin != m_windows.end(); itWin++ )
- {
-- TopWindow *pWin = (*it).second.get();
-- // Print config
-- x = pWin->getLeft();
-- y = pWin->getTop();
-- sprintf( &save[i * 13], "(%4d,%4d,%1d)", x, y,
-- pWin->getVisibleVar().get() );
-- i++;
-+ TopWindow *pWin = itWin->second.get();
-+
-+ // Find the layout id for this window
-+ string layoutId;
-+ const GenericLayout *pLayout = &pWin->getActiveLayout();
-+ for( itLay = m_layouts.begin(); itLay != m_layouts.end(); itLay++ )
-+ {
-+ if( itLay->second.get() == pLayout )
-+ {
-+ layoutId = itLay->first;
-+ }
-+ }
-+
-+ outStream << '[' << itWin->first << ' ' << layoutId << ' '
-+ << pWin->getLeft() << ' ' << pWin->getTop() << ' '
-+ << pLayout->getWidth() << ' ' << pLayout->getHeight() << ' '
-+ << (pWin->getVisibleVar().get() ? 1 : 0) << ']';
- }
-
- // Save config to file
-- config_PutPsz( getIntf(), "skins2-config", save );
--
-- // Free memory
-- delete[] save;
-+ config_PutPsz( getIntf(), "skins2-config", outStream.str().c_str() );
- }
-
-
-diff -puriN vlc-0.8.6/modules/gui/skins2/src/vlcproc.cpp vlc-0.8.6a/modules/gui/skins2/src/vlcproc.cpp
---- vlc-0.8.6/modules/gui/skins2/src/vlcproc.cpp 2006-10-01 17:34:21.000000000 +0200
-+++ vlc-0.8.6a/modules/gui/skins2/src/vlcproc.cpp 2007-01-07 23:07:17.000000000 +0100
-@@ -225,8 +225,7 @@ void VlcProc::dropVout()
- {
- if( m_pVout )
- {
-- if( vout_Control( m_pVout, VOUT_REPARENT, 0 ) != VLC_SUCCESS )
-- vout_Control( m_pVout, VOUT_CLOSE );
-+ vout_Control( m_pVout, VOUT_CLOSE );
- m_pVout = NULL;
- }
- }
-diff -puriN vlc-0.8.6/modules/gui/skins2/vars/equalizer.cpp vlc-0.8.6a/modules/gui/skins2/vars/equalizer.cpp
---- vlc-0.8.6/modules/gui/skins2/vars/equalizer.cpp 2006-09-18 12:28:22.000000000 +0200
-+++ vlc-0.8.6a/modules/gui/skins2/vars/equalizer.cpp 2007-01-07 23:07:18.000000000 +0100
-@@ -96,14 +96,15 @@ void EqualizerBands::onUpdate( Subject<V
- ss << " " << val;
- }
-
-+
-+ string bands = ss.str();
- aout_instance_t *pAout = (aout_instance_t *)vlc_object_find( getIntf(),
- VLC_OBJECT_AOUT, FIND_ANYWHERE );
-- char *bands = (char*)ss.str().c_str();
-- config_PutPsz( getIntf(), "equalizer-bands", bands );
-+ config_PutPsz( getIntf(), "equalizer-bands", bands.c_str() );
- if( pAout )
- {
- // Update the audio output
-- var_SetString( pAout, "equalizer-bands", bands );
-+ var_SetString( pAout, "equalizer-bands", (char*)bands.c_str() );
- vlc_object_release( pAout );
- }
- }
-diff -puriN vlc-0.8.6/modules/gui/wxwidgets/dialogs/bookmarks.cpp vlc-0.8.6a/modules/gui/wxwidgets/dialogs/bookmarks.cpp
---- vlc-0.8.6/modules/gui/wxwidgets/dialogs/bookmarks.cpp 2006-09-24 19:09:01.000000000 +0200
-+++ vlc-0.8.6a/modules/gui/wxwidgets/dialogs/bookmarks.cpp 2007-01-07 23:07:08.000000000 +0100
-@@ -119,10 +119,10 @@ BookmarkEditDialog::~BookmarkEditDialog(
- void BookmarkEditDialog::OnOK( wxCommandEvent &event )
- {
- if( p_seekpoint->psz_name ) free( p_seekpoint->psz_name );
-- p_seekpoint->psz_name = strdup( name_text->GetValue().mb_str() );
-- p_seekpoint->i_byte_offset = atoi( bytes_text->GetValue().mb_str() );
-+ p_seekpoint->psz_name = strdup( name_text->GetValue().mb_str(wxConvUTF8) );
-+ p_seekpoint->i_byte_offset = atoi( bytes_text->GetValue().mb_str(wxConvUTF8) );
- p_seekpoint->i_time_offset = 1000000 *
-- atoll( time_text->GetValue().mb_str() ) ;
-+ atoll( time_text->GetValue().mb_str(wxConvUTF8) ) ;
- EndModal( wxID_OK );
- }
-
-diff -puriN vlc-0.8.6/modules/gui/wxwidgets/dialogs/infopanels.cpp vlc-0.8.6a/modules/gui/wxwidgets/dialogs/infopanels.cpp
---- vlc-0.8.6/modules/gui/wxwidgets/dialogs/infopanels.cpp 2006-09-18 12:28:18.000000000 +0200
-+++ vlc-0.8.6a/modules/gui/wxwidgets/dialogs/infopanels.cpp 2007-01-07 23:07:08.000000000 +0100
-@@ -146,12 +146,12 @@ void MetaDataPanel::Update( input_item_t
-
- char* MetaDataPanel::GetURI( )
- {
-- return strdup( uri_text->GetLineText(0).mb_str() );
-+ return strdup( uri_text->GetLineText(0).mb_str(wxConvUTF8) );
- }
-
- char* MetaDataPanel::GetName( )
- {
-- return strdup( name_text->GetLineText(0).mb_str() );
-+ return strdup( name_text->GetLineText(0).mb_str(wxConvUTF8) );
- }
-
- void MetaDataPanel::Clear()
-diff -puriN vlc-0.8.6/modules/gui/wxwidgets/dialogs/interaction.cpp vlc-0.8.6a/modules/gui/wxwidgets/dialogs/interaction.cpp
---- vlc-0.8.6/modules/gui/wxwidgets/dialogs/interaction.cpp 2006-09-18 12:28:18.000000000 +0200
-+++ vlc-0.8.6a/modules/gui/wxwidgets/dialogs/interaction.cpp 2007-01-07 23:07:08.000000000 +0100
-@@ -270,7 +270,7 @@ void InteractionDialog::Finish( int i_re
- while ( it < input_widgets.end() )
- {
- if( (*it).i_type == WIDGET_INPUT_TEXT )
-- (*it).val->psz_string = strdup( (*it).control->GetValue().mb_str());
-+ (*it).val->psz_string = strdup( (*it).control->GetValue().mb_str(wxConvUTF8));
- it++;
- }
- Hide();
-diff -puriN vlc-0.8.6/modules/gui/wxwidgets/dialogs/open.cpp vlc-0.8.6a/modules/gui/wxwidgets/dialogs/open.cpp
---- vlc-0.8.6/modules/gui/wxwidgets/dialogs/open.cpp 2006-09-18 12:28:18.000000000 +0200
-+++ vlc-0.8.6a/modules/gui/wxwidgets/dialogs/open.cpp 2007-01-07 23:07:08.000000000 +0100
-@@ -51,9 +51,6 @@
- #include <wx/statline.h>
- #include <wx/tokenzr.h>
-
--#include <vector>
--
--
- #ifndef wxRB_SINGLE
- # define wxRB_SINGLE 0
- #endif
-@@ -1131,7 +1128,7 @@ void OpenDialog::UpdateMRL( int i_access
- }
- else
- {
-- int i_value = config_GetInt( p_intf, caching_name.mb_str() );
-+ int i_value = config_GetInt( p_intf, caching_name.mb_str(wxConvUTF8) );
- caching_value->SetValue( i_value );
- }
- }
-@@ -1174,7 +1171,7 @@ void OpenDialog::OnOk( wxCommandEvent& W
-
- /* Insert options */
- while( i + 1 < (int)mrl.GetCount() &&
-- ((const char *)mrl[i + 1].mb_str())[0] == ':' )
-+ ((const char *)mrl[i + 1].mb_str(wxConvUTF8))[0] == ':' )
- {
- psz_utf8 = wxFromLocale( mrl[i + 1] );
- playlist_ItemAddOption( p_item, psz_utf8 );
-@@ -1838,8 +1835,8 @@ void OpenDialog::OnSubsFileSettings( wxC
- (int)subsfile_dialog->size_combo->GetClientData(
- subsfile_dialog->size_combo->GetSelection()) ) );
- }
-- subsfile_mrl.Add( wxString::Format( wxT("sub-fps=%i"),
-- subsfile_dialog->fps_spinctrl->GetValue() ) );
-+ subsfile_mrl.Add( wxString( wxT("sub-fps="))+
-+ subsfile_dialog->fps_ctrl->GetValue() );
- subsfile_mrl.Add( wxString::Format( wxT("sub-delay=%i"),
- subsfile_dialog->delay_spinctrl->GetValue() ) );
- }
-diff -puriN vlc-0.8.6/modules/gui/wxwidgets/dialogs/playlist.cpp vlc-0.8.6a/modules/gui/wxwidgets/dialogs/playlist.cpp
---- vlc-0.8.6/modules/gui/wxwidgets/dialogs/playlist.cpp 2006-10-08 18:40:54.000000000 +0200
-+++ vlc-0.8.6a/modules/gui/wxwidgets/dialogs/playlist.cpp 2007-01-07 23:07:08.000000000 +0100
-@@ -935,9 +935,9 @@ void Playlist::OnSave( wxCommandEvent& W
-
- if( dialog.ShowModal() == wxID_OK )
- {
-- if( dialog.GetPath().mb_str() )
-+ if( dialog.GetPath().mb_str(wxConvUTF8) )
- {
-- playlist_Export( p_playlist, dialog.GetPath().mb_str(),
-+ playlist_Export( p_playlist, dialog.GetPath().mb_str(wxConvUTF8),
- formats[dialog.GetFilterIndex()].psz_module );
- }
- }
-@@ -951,7 +951,7 @@ void Playlist::OnOpen( wxCommandEvent& W
-
- if( dialog.ShowModal() == wxID_OK )
- {
-- playlist_Import( p_playlist, dialog.GetPath().mb_str() );
-+ playlist_Import( p_playlist, dialog.GetPath().mb_str(wxConvUTF8) );
- }
- }
-
-@@ -1041,16 +1041,23 @@ void Playlist::RecursiveDeleteSelection(
- {
- wxTreeItemIdValue cookie;
- wxTreeItemId child = treectrl->GetFirstChild( root, cookie );
-+ wxTreeItemId nextchild;
-+ bool childIsSelected = FALSE;
-+ bool nextchildIsSelected = FALSE;
-+
-+ if( child.IsOk() ) childIsSelected = treectrl->IsSelected( child );
-+
- while( child.IsOk() )
- {
-- if( treectrl->ItemHasChildren( child ) )
-- {
-- RecursiveDeleteSelection( child );
-- if( treectrl->IsSelected(child ) ) DeleteTreeItem( child );
-- }
-- else if( treectrl->IsSelected( child ) )
-+ nextchild = treectrl->GetNextChild( root, cookie );
-+ if( nextchild.IsOk() )
-+ nextchildIsSelected = treectrl->IsSelected( nextchild );
-+ if( childIsSelected )
- DeleteTreeItem( child );
-- child = treectrl->GetNextChild( root, cookie );
-+ else if( treectrl->ItemHasChildren( child ) )
-+ RecursiveDeleteSelection( child );
-+ child = nextchild;
-+ childIsSelected = nextchildIsSelected;
- }
- }
-
-@@ -1135,7 +1142,7 @@ void Playlist::OnKeyDown( wxTreeEvent& e
- {
- long keycode = event.GetKeyCode();
- /* Delete selected items */
-- if( keycode == WXK_BACK || keycode == WXK_DELETE )
-+ if( keycode == WXK_BACK || keycode == WXK_DELETE || keycode == WXK_NUMPAD_DELETE )
- {
- /* We send a dummy event */
- OnDeleteSelection( event );
-diff -puriN vlc-0.8.6/modules/gui/wxwidgets/dialogs/preferences.cpp vlc-0.8.6a/modules/gui/wxwidgets/dialogs/preferences.cpp
---- vlc-0.8.6/modules/gui/wxwidgets/dialogs/preferences.cpp 2006-09-24 19:09:01.000000000 +0200
-+++ vlc-0.8.6a/modules/gui/wxwidgets/dialogs/preferences.cpp 2007-01-07 23:07:08.000000000 +0100
-@@ -1069,20 +1069,20 @@ void PrefsPanel::ApplyChanges()
- case CONFIG_ITEM_MODULE_CAT:
- case CONFIG_ITEM_MODULE_LIST:
- case CONFIG_ITEM_MODULE_LIST_CAT:
-- config_PutPsz( p_intf, control->GetName().mb_str(),
-- control->GetPszValue().mb_str() );
-+ config_PutPsz( p_intf, control->GetName().mb_str(wxConvUTF8),
-+ control->GetPszValue().mb_str(wxConvUTF8) );
- break;
- case CONFIG_ITEM_KEY:
- /* So you don't need to restart to have the changes take effect */
- val.i_int = control->GetIntValue();
-- var_Set( p_intf->p_vlc, control->GetName().mb_str(), val );
-+ var_Set( p_intf->p_vlc, control->GetName().mb_str(wxConvUTF8), val );
- case CONFIG_ITEM_INTEGER:
- case CONFIG_ITEM_BOOL:
-- config_PutInt( p_intf, control->GetName().mb_str(),
-+ config_PutInt( p_intf, control->GetName().mb_str(wxConvUTF8),
- control->GetIntValue() );
- break;
- case CONFIG_ITEM_FLOAT:
-- config_PutFloat( p_intf, control->GetName().mb_str(),
-+ config_PutFloat( p_intf, control->GetName().mb_str(wxConvUTF8),
- control->GetFloatValue() );
- break;
- }
-diff -puriN vlc-0.8.6/modules/gui/wxwidgets/dialogs/preferences_widgets.cpp vlc-0.8.6a/modules/gui/wxwidgets/dialogs/preferences_widgets.cpp
---- vlc-0.8.6/modules/gui/wxwidgets/dialogs/preferences_widgets.cpp 2006-10-12 19:47:03.000000000 +0200
-+++ vlc-0.8.6a/modules/gui/wxwidgets/dialogs/preferences_widgets.cpp 2007-01-07 23:07:08.000000000 +0100
-@@ -634,15 +634,15 @@ void StringListConfigControl::OnAction(
- {
- int i_action = event.GetId() - wxID_HIGHEST;
-
-- module_config_t *p_item = config_FindConfig( p_this, GetName().mb_str() );
-+ module_config_t *p_item = config_FindConfig( p_this, GetName().mb_str(wxConvUTF8) );
- if( !p_item ) return;
-
- if( i_action < 0 || i_action >= p_item->i_action ) return;
-
- vlc_value_t val;
- wxString value = GetPszValue();
-- *((const char **)&val.psz_string) = value.mb_str();
-- p_item->ppf_action[i_action]( p_this, GetName().mb_str(), val, val, 0 );
-+ *((const char **)&val.psz_string) = value.mb_str(wxConvUTF8);
-+ p_item->ppf_action[i_action]( p_this, GetName().mb_str(wxConvUTF8), val, val, 0 );
-
- if( p_item->b_dirty )
- {
-@@ -851,14 +851,14 @@ void IntegerListConfigControl::OnAction(
- int i_action = event.GetId() - wxID_HIGHEST;
-
- module_config_t *p_item;
-- p_item = config_FindConfig( p_this, GetName().mb_str() );
-+ p_item = config_FindConfig( p_this, GetName().mb_str(wxConvUTF8) );
- if( !p_item ) return;
-
- if( i_action < 0 || i_action >= p_item->i_action ) return;
-
- vlc_value_t val;
- val.i_int = GetIntValue();
-- p_item->ppf_action[i_action]( p_this, GetName().mb_str(), val, val, 0 );
-+ p_item->ppf_action[i_action]( p_this, GetName().mb_str(wxConvUTF8), val, val, 0 );
-
- if( p_item->b_dirty )
- {
-diff -puriN vlc-0.8.6/modules/gui/wxwidgets/dialogs/subtitles.cpp vlc-0.8.6a/modules/gui/wxwidgets/dialogs/subtitles.cpp
---- vlc-0.8.6/modules/gui/wxwidgets/dialogs/subtitles.cpp 2006-09-18 12:28:18.000000000 +0200
-+++ vlc-0.8.6a/modules/gui/wxwidgets/dialogs/subtitles.cpp 2007-01-07 23:07:08.000000000 +0100
-@@ -201,17 +201,14 @@ SubsFileDialog::SubsFileDialog( intf_thr
- wxStaticText *label =
- new wxStaticText(panel, -1, wxU(_("Frames per second")));
-
-- float f_fps = config_GetFloat( p_intf, "sub-fps" );
-- /* Outside the new wxSpinCtrl to avoid an internal error in gcc2.95 ! */
-- wxString format_fps(wxString::Format(wxT("%d"),(int)f_fps));
-- fps_spinctrl = new wxSpinCtrl( panel, -1, format_fps,
-- wxDefaultPosition, wxDefaultSize,
-- wxSP_ARROW_KEYS,
-- 0, 16000, (int)f_fps );
-- fps_spinctrl->SetToolTip( wxU(_("Override frames per second. "
-+ fps_ctrl = new wxTextCtrl( panel, -1,
-+ wxString::Format(wxT("%.3f"),
-+ config_GetFloat( p_intf, "sub-fps" )),
-+ wxDefaultPosition, wxDefaultSize);
-+ fps_ctrl->SetToolTip( wxU(_("Override frames per second. "
- "It will only work with MicroDVD and SubRIP subtitles.")) );
- grid_sizer->Add( label, 0, wxALIGN_CENTER, 5 );
-- grid_sizer->Add( fps_spinctrl, 0,wxALIGN_CENTER, 5 );
-+ grid_sizer->Add( fps_ctrl, 0,wxALIGN_CENTER, 5 );
-
-
- wxStaticText *label_delay =
-diff -puriN vlc-0.8.6/modules/gui/wxwidgets/dialogs/subtitles.hpp vlc-0.8.6a/modules/gui/wxwidgets/dialogs/subtitles.hpp
---- vlc-0.8.6/modules/gui/wxwidgets/dialogs/subtitles.hpp 2006-09-18 12:28:18.000000000 +0200
-+++ vlc-0.8.6a/modules/gui/wxwidgets/dialogs/subtitles.hpp 2007-01-07 23:07:08.000000000 +0100
-@@ -41,7 +41,7 @@ public:
- wxComboBox *encoding_combo;
- wxComboBox *size_combo;
- wxComboBox *align_combo;
-- wxSpinCtrl *fps_spinctrl;
-+ wxTextCtrl *fps_ctrl;
- wxSpinCtrl *delay_spinctrl;
-
- private:
-diff -puriN vlc-0.8.6/modules/gui/wxwidgets/dialogs/updatevlc.cpp vlc-0.8.6a/modules/gui/wxwidgets/dialogs/updatevlc.cpp
---- vlc-0.8.6/modules/gui/wxwidgets/dialogs/updatevlc.cpp 2006-09-18 12:28:18.000000000 +0200
-+++ vlc-0.8.6a/modules/gui/wxwidgets/dialogs/updatevlc.cpp 2007-01-07 23:07:08.000000000 +0100
-@@ -200,7 +200,7 @@ void UpdateVLC::OnChooseItem( wxListEven
- wxSAVE | wxOVERWRITE_PROMPT );
- if( filedialog->ShowModal() == wxID_OK )
- {
-- update_download( p_uit, filedialog->GetPath().mb_str() );
-+ update_download( p_uit, filedialog->GetPath().mb_str(wxConvUTF8) );
- }
- update_iterator_Delete( p_uit );
- delete filedialog;
-diff -puriN vlc-0.8.6/modules/gui/wxwidgets/dialogs/vlm/vlm_panel.cpp vlc-0.8.6a/modules/gui/wxwidgets/dialogs/vlm/vlm_panel.cpp
---- vlc-0.8.6/modules/gui/wxwidgets/dialogs/vlm/vlm_panel.cpp 2006-09-18 12:28:18.000000000 +0200
-+++ vlc-0.8.6a/modules/gui/wxwidgets/dialogs/vlm/vlm_panel.cpp 2007-01-07 23:07:08.000000000 +0100
-@@ -217,7 +217,7 @@ void VLMPanel::OnLoad( wxCommandEvent &e
- p_file_dialog->SetTitle( wxU(_("Load Configuration") ) );
- if( p_file_dialog->ShowModal() == wxID_OK )
- {
-- vlm_Load( p_vlm->GetVLM(), p_file_dialog->GetPath().mb_str() );
-+ vlm_Load( p_vlm->GetVLM(), p_file_dialog->GetPath().mb_str(wxConvUTF8));
- }
- Update();
- }
-@@ -231,7 +231,7 @@ void VLMPanel::OnSave( wxCommandEvent &e
- p_file_dialog->SetTitle( wxU(_("Save Configuration") ) );
- if( p_file_dialog->ShowModal() == wxID_OK )
- {
-- vlm_Save( p_vlm->GetVLM(), p_file_dialog->GetPath().mb_str() );
-+ vlm_Save( p_vlm->GetVLM(), p_file_dialog->GetPath().mb_str(wxConvUTF8));
- }
- }
-
-@@ -441,9 +441,9 @@ void VLMAddStreamPanel::Load( VLMStream
-
- void VLMAddStreamPanel::OnCreate( wxCommandEvent &event )
- {
-- char *psz_name = FromLocale( name_text->GetValue().mb_str() );
-- char *psz_input = FromLocale( input_text->GetValue().mb_str() );
-- char *psz_output = FromLocale( output_text->GetValue().mb_str() );
-+ char *psz_name = wxFromLocale( name_text->GetValue() );
-+ char *psz_input = wxFromLocale( input_text->GetValue() );
-+ char *psz_output = wxFromLocale( output_text->GetValue() );
- if( b_broadcast && ! b_edit )
- {
- p_vlm->AddBroadcast( psz_name, psz_input, psz_output,
-@@ -468,8 +468,8 @@ void VLMAddStreamPanel::OnCreate( wxComm
- enabled_checkbox->IsChecked() ? VLC_TRUE: VLC_FALSE,
- loop_checkbox->IsChecked() ? VLC_TRUE : VLC_FALSE );
- }
-- LocaleFree( psz_name) ; LocaleFree( psz_input ) ;
-- LocaleFree( psz_output);
-+ wxLocaleFree( psz_name) ; wxLocaleFree( psz_input ) ;
-+ wxLocaleFree( psz_output);
- if( !b_edit )
- OnClear( event );
- if( b_edit )
-diff -puriN vlc-0.8.6/modules/gui/wxwidgets/dialogs/vlm/vlm_stream.cpp vlc-0.8.6a/modules/gui/wxwidgets/dialogs/vlm/vlm_stream.cpp
---- vlc-0.8.6/modules/gui/wxwidgets/dialogs/vlm/vlm_stream.cpp 2006-09-18 12:28:18.000000000 +0200
-+++ vlc-0.8.6a/modules/gui/wxwidgets/dialogs/vlm/vlm_stream.cpp 2007-01-07 23:07:08.000000000 +0100
-@@ -52,7 +52,7 @@ void VLMStream::Disable()
- void VLMStream::Delete()
- {
- vlm_message_t *message;
-- string command = "del " + string( p_media->psz_name );
-+ string command = "del \"" + string( p_media->psz_name ) + "\"";
- /* FIXME: Should be moved to vlm_Wrapper */
- vlm_ExecuteCommand( p_vlm->GetVLM(), (char*)command.c_str(), & message );
- vlm_MessageDelete( message );
-@@ -74,7 +74,7 @@ VLMBroadcastStream::~VLMBroadcastStream(
- void VLMBroadcastStream::Play()
- {
- vlm_message_t *message;
-- string command = "control " + string( p_media->psz_name ) + " play";
-+ string command = "control \"" + string( p_media->psz_name ) + "\" play";
- /* FIXME: Should be moved to vlm_Wrapper */
- vlm_ExecuteCommand( p_vlm->GetVLM(), (char*)command.c_str(), & message );
- vlm_MessageDelete( message );
-@@ -83,7 +83,7 @@ void VLMBroadcastStream::Play()
- void VLMBroadcastStream::Stop()
- {
- vlm_message_t *message;
-- string command = "control " + string( p_media->psz_name ) + " stop";
-+ string command = "control \"" + string( p_media->psz_name ) + "\" stop";
- vlm_ExecuteCommand( p_vlm->GetVLM(), (char*)command.c_str(), & message );
- vlm_MessageDelete( message );
- }
-@@ -91,7 +91,7 @@ void VLMBroadcastStream::Stop()
- void VLMBroadcastStream::Pause()
- {
- vlm_message_t *message;
-- string command = "control " + string( p_media->psz_name ) + " pause";
-+ string command = "control \"" + string( p_media->psz_name ) + "\" pause";
- vlm_ExecuteCommand( p_vlm->GetVLM(), (char*)command.c_str(), & message );
- vlm_MessageDelete( message );
- }
-diff -puriN vlc-0.8.6/modules/gui/wxwidgets/dialogs/vlm/vlm_wrapper.cpp vlc-0.8.6a/modules/gui/wxwidgets/dialogs/vlm/vlm_wrapper.cpp
---- vlc-0.8.6/modules/gui/wxwidgets/dialogs/vlm/vlm_wrapper.cpp 2006-09-18 12:28:18.000000000 +0200
-+++ vlc-0.8.6a/modules/gui/wxwidgets/dialogs/vlm/vlm_wrapper.cpp 2007-01-07 23:07:08.000000000 +0100
-@@ -60,7 +60,7 @@ void VLMWrapper::AddBroadcast( const cha
- vlc_bool_t b_enabled, vlc_bool_t b_loop )
- {
- vlm_message_t *message;
-- string command = "new " + string(name) + " broadcast";
-+ string command = "new \"" + string(name) + "\" broadcast";
- vlm_ExecuteCommand( p_vlm, command.c_str(), &message );
- vlm_MessageDelete( message );
- EditBroadcast( name, input, output, b_enabled, b_loop );
-@@ -72,27 +72,27 @@ void VLMWrapper::EditBroadcast( const ch
- {
- vlm_message_t *message;
- string command;
-- command = "setup " + string(name) + " inputdel all";
-+ command = "setup \"" + string(name) + "\" inputdel all";
- vlm_ExecuteCommand( p_vlm, command.c_str(), &message );
- vlm_MessageDelete( message );
-- command = "setup " + string(name) + " input " + string(input);
-+ command = "setup \"" + string(name) + "\" input \"" + string(input) + "\"";
- vlm_ExecuteCommand( p_vlm, command.c_str(), &message );
- vlm_MessageDelete( message );
- if( strlen(output) > 0 )
- {
-- command = "setup " + string(name) + " output " + string(output);
-+ command = "setup \"" + string(name) + "\" output \"" + string(output) + "\"";
- vlm_ExecuteCommand( p_vlm, (char*)command.c_str(), &message );
- vlm_MessageDelete( message );
- }
- if( b_enabled )
- {
-- command = "setup " + string(name) + " enabled";
-+ command = "setup \"" + string(name) + "\" enabled";
- vlm_ExecuteCommand( p_vlm, command.c_str(), &message );
- vlm_MessageDelete( message );
- }
- if( b_loop )
- {
-- command = "setup " + string(name) + " loop";
-+ command = "setup \"" + string(name) + "\" loop";
- vlm_ExecuteCommand( p_vlm, command.c_str(), &message );
- vlm_MessageDelete( message );
- }
-@@ -103,7 +103,7 @@ void VLMWrapper::AddVod( const char* nam
- vlc_bool_t b_enabled, vlc_bool_t b_loop )
- {
- vlm_message_t *message;
-- string command = "new " + string(name) + " vod";
-+ string command = "new \"" + string(name) + "\" vod";
- vlm_ExecuteCommand( p_vlm, command.c_str(), &message );
- vlm_MessageDelete( message );
- EditVod( name, input, output, b_enabled, b_loop );
-@@ -115,18 +115,18 @@ void VLMWrapper::EditVod( const char* na
- {
- vlm_message_t *message;
- string command;
-- command = "setup " + string(name) + " input " + string(input);
-+ command = "setup \"" + string(name) + "\" input \"" + string(input) + "\"";
- vlm_ExecuteCommand( p_vlm, command.c_str(), &message );
- vlm_MessageDelete( message );
- if( strlen(output) > 0 )
- {
-- command = "setup " + string(name) + " output " + string(output);
-+ command = "setup \"" + string(name) + "\" output \"" + string(output) + "\"";
- vlm_ExecuteCommand( p_vlm, (char*)command.c_str(), &message );
- vlm_MessageDelete( message );
- }
- if( b_enabled )
- {
-- command = "setup " + string(name) + " enabled";
-+ command = "setup \"" + string(name) + "\" enabled";
- vlm_ExecuteCommand( p_vlm, command.c_str(), &message );
- vlm_MessageDelete( message );
- }
-diff -puriN vlc-0.8.6/modules/gui/wxwidgets/dialogs/wizard.cpp vlc-0.8.6a/modules/gui/wxwidgets/dialogs/wizard.cpp
---- vlc-0.8.6/modules/gui/wxwidgets/dialogs/wizard.cpp 2006-09-18 12:28:18.000000000 +0200
-+++ vlc-0.8.6a/modules/gui/wxwidgets/dialogs/wizard.cpp 2007-01-07 23:07:08.000000000 +0100
-@@ -718,7 +718,7 @@ void wizInputPage::OnWizardPageChanging(
- }
- else
- {
-- p_parent->SetMrl( (const char *)mrl_text->GetValue().mb_str() );
-+ p_parent->SetMrl( (const char *)mrl_text->GetValue().mb_str(wxConvUTF8) );
- }
- }
- else
-@@ -747,8 +747,8 @@ void wizInputPage::OnWizardPageChanging(
- }
- if( enable_checkbox->IsChecked() )
- {
-- int i_from = atoi( from_text->GetValue().mb_str() );
-- int i_to = atoi( to_text->GetValue().mb_str() );
-+ int i_from = atoi( from_text->GetValue().mb_str(wxConvUTF8) );
-+ int i_to = atoi( to_text->GetValue().mb_str(wxConvUTF8) );
- p_parent->SetPartial( i_from, i_to );
- }
- return;
-@@ -992,12 +992,12 @@ void wizTranscodeCodecPage::OnWizardPage
- audio_combo->GetSelection() : i_audio_codec ));
- acodec = strdup(c->psz_codec);
-
-- int vb = atoi(vb_combo->GetValue().mb_str() );
-+ int vb = atoi(vb_combo->GetValue().mb_str(wxConvUTF8) );
- if( vb == 0 )
- {
- vb = 1024;
- }
-- int ab = atoi(ab_combo->GetValue().mb_str() );
-+ int ab = atoi(ab_combo->GetValue().mb_str(wxConvUTF8) );
- if( ab == 0)
- {
- ab = 192;
-@@ -1091,7 +1091,7 @@ void wizStreamingMethodPage::OnWizardPag
- /* Check valid address */
- if( i_method == 1
- && !net_AddressIsMulticast( (vlc_object_t *)p_intf,
-- address_txtctrl->GetValue().mb_str()) )
-+ address_txtctrl->GetValue().mb_str(wxConvUTF8)) )
- {
- wxMessageBox( wxU( INVALID_MCAST_ADDRESS ) , wxU( ERROR_MSG ),
- wxICON_WARNING | wxOK, this->p_parent );
-@@ -1116,7 +1116,7 @@ void wizStreamingMethodPage::OnWizardPag
- }
- }
- p_parent->SetStream( methods_array[i_method].psz_access ,
-- address_txtctrl->GetValue().mb_str() );
-+ address_txtctrl->GetValue().mb_str(wxConvUTF8) );
-
- /* Set the action for the muxer page */
- ((wizEncapPage*)GetNext())->SetAction( p_parent->GetAction() );
-@@ -1291,7 +1291,7 @@ void wizTranscodeExtraPage::OnSelectFile
-
- if( file_dialog && file_dialog->ShowModal() == wxID_OK )
- {
-- if( file_dialog->GetFilename().mb_str() )
-+ if( file_dialog->GetFilename().mb_str(wxConvUTF8) )
- {
- file_text->SetValue( file_dialog->GetPath() );
- }
-@@ -1308,7 +1308,7 @@ void wizTranscodeExtraPage::OnWizardPage
- }
- if( event.GetDirection() )
- {
-- p_parent->SetTranscodeOut( file_text->GetValue().mb_str());
-+ p_parent->SetTranscodeOut( file_text->GetValue() );
- }
- }
-
-@@ -1375,7 +1375,7 @@ void wizStreamingExtraPage::OnWizardPage
- else
- {
- p_parent->SetSAP( true,
-- (const char *)sap_text->GetValue().mb_str() );
-+ (const char *)sap_text->GetValue().mb_str(wxConvUTF8) );
- }
- }
- else
-@@ -1521,11 +1521,11 @@ void WizardDialog::SetStream( char const
- this->address = strdup( address );
- }
-
--void WizardDialog::SetTranscodeOut( char const *address )
-+void WizardDialog::SetTranscodeOut( wxString address )
- {
-- char *psz_utf8 = FromLocale( address );
-+ char *psz_utf8 = wxFromLocale( address );
- this->address = strdup( psz_utf8 );
-- LocaleFree( psz_utf8 );
-+ wxLocaleFree( psz_utf8 );
- }
-
- void WizardDialog::SetMux( char const *mux )
-diff -puriN vlc-0.8.6/modules/gui/wxwidgets/dialogs/wizard.hpp vlc-0.8.6a/modules/gui/wxwidgets/dialogs/wizard.hpp
---- vlc-0.8.6/modules/gui/wxwidgets/dialogs/wizard.hpp 2006-09-18 12:28:18.000000000 +0200
-+++ vlc-0.8.6a/modules/gui/wxwidgets/dialogs/wizard.hpp 2007-01-07 23:07:08.000000000 +0100
-@@ -42,7 +42,7 @@ namespace wxvlc
- void SetTTL( int i_ttl );
- void SetPartial( int, int );
- void SetStream( char const *method, char const *address );
-- void SetTranscodeOut( char const *address );
-+ void SetTranscodeOut( wxString address );
- void SetAction( int i_action );
- int GetAction();
- void SetSAP( bool b_enabled, const char *psz_name );
-diff -puriN vlc-0.8.6/modules/gui/wxwidgets/dialogs.cpp vlc-0.8.6a/modules/gui/wxwidgets/dialogs.cpp
---- vlc-0.8.6/modules/gui/wxwidgets/dialogs.cpp 2006-10-12 19:47:03.000000000 +0200
-+++ vlc-0.8.6a/modules/gui/wxwidgets/dialogs.cpp 2007-01-07 23:07:15.000000000 +0100
-@@ -392,7 +392,7 @@ void DialogsProvider::OnOpenFileGeneric(
- sizeof(char *) );
- for( size_t i = 0; i < paths.GetCount(); i++ )
- {
-- p_arg->psz_results[i] = strdup( paths[i].mb_str() );
-+ p_arg->psz_results[i] = strdup( paths[i].mb_str(wxConvUTF8) );
- }
- }
-
-diff -puriN vlc-0.8.6/modules/gui/wxwidgets/extrapanel.cpp vlc-0.8.6a/modules/gui/wxwidgets/extrapanel.cpp
---- vlc-0.8.6/modules/gui/wxwidgets/extrapanel.cpp 2006-10-12 19:47:03.000000000 +0200
-+++ vlc-0.8.6a/modules/gui/wxwidgets/extrapanel.cpp 2007-01-07 23:07:15.000000000 +0100
-@@ -980,7 +980,7 @@ void ExtraPanel::OnAdjustUpdate( wxScrol
- /* FIXME */
- void ExtraPanel::OnRatio( wxCommandEvent& event )
- {
-- config_PutPsz( p_intf, "aspect-ratio", ratio_combo->GetValue().mb_str() );
-+ config_PutPsz( p_intf, "aspect-ratio", ratio_combo->GetValue().mb_str(wxConvUTF8) );
- }
-
-
-@@ -1083,12 +1083,12 @@ static void ChangeVFiltersString( intf_t
- {
- *(psz_string+strlen(psz_string ) -1 ) = '\0';
- }
-- }
-- else
-- {
-- free( psz_string );
-- return;
-- }
-+ }
-+ else
-+ {
-+ free( psz_string );
-+ return;
-+ }
- }
- /* Vout is not kept, so put that in the config */
- config_PutPsz( p_intf, "vout-filter", psz_string );
-diff -puriN vlc-0.8.6/modules/gui/wxwidgets/menus.cpp vlc-0.8.6a/modules/gui/wxwidgets/menus.cpp
---- vlc-0.8.6/modules/gui/wxwidgets/menus.cpp 2006-09-22 17:14:30.000000000 +0200
-+++ vlc-0.8.6a/modules/gui/wxwidgets/menus.cpp 2007-01-07 23:07:15.000000000 +0100
-@@ -27,8 +27,10 @@
- #include "wxwidgets.hpp"
- #include "interface.hpp"
-
--#include <vector>
--using namespace std;
-+#include <wx/dynarray.h>
-+WX_DEFINE_ARRAY(int, ArrayOfInts);
-+WX_DEFINE_ARRAY_PTR(const char *, ArrayOfStrings);
-+
-
- class wxMenuItemExt: public wxMenuItem
- {
-@@ -53,7 +55,7 @@ public:
- Menu( intf_thread_t *p_intf, int i_start_id );
- virtual ~Menu();
-
-- void Populate( vector<const char *> &, vector<int> &);
-+ void Populate( ArrayOfStrings &, ArrayOfInts &);
- void Clear();
-
- private:
-@@ -142,11 +144,11 @@ wxMenu *MiscMenu( intf_thread_t *p_intf
- /*****************************************************************************
- * Builders for the dynamic menus
- *****************************************************************************/
--#define PUSH_VAR( var ) rs_varnames.push_back( var ); \
-- ri_objects.push_back( p_object->i_object_id )
-+#define PUSH_VAR( var ) rs_varnames.Add( var ); \
-+ ri_objects.Add( p_object->i_object_id )
-
--int InputAutoMenuBuilder( vlc_object_t *p_object, vector<int> &ri_objects,
-- vector<const char *> &rs_varnames )
-+int InputAutoMenuBuilder( vlc_object_t *p_object, ArrayOfInts &ri_objects,
-+ ArrayOfStrings &rs_varnames )
- {
- PUSH_VAR( "bookmark");
- PUSH_VAR( "title" );
-@@ -157,8 +159,8 @@ int InputAutoMenuBuilder( vlc_object_t *
- return VLC_SUCCESS;
- }
-
--int VideoAutoMenuBuilder( vlc_object_t *p_object, vector<int> &ri_objects,
-- vector<const char *> &rs_varnames )
-+int VideoAutoMenuBuilder( vlc_object_t *p_object, ArrayOfInts &ri_objects,
-+ ArrayOfStrings &rs_varnames )
- {
- PUSH_VAR( "fullscreen" );
- PUSH_VAR( "zoom" );
-@@ -181,8 +183,8 @@ int VideoAutoMenuBuilder( vlc_object_t *
- return VLC_SUCCESS;
- }
-
--int AudioAutoMenuBuilder( vlc_object_t *p_object, vector<int> &ri_objects,
-- vector<const char *> &rs_varnames )
-+int AudioAutoMenuBuilder( vlc_object_t *p_object, ArrayOfInts &ri_objects,
-+ ArrayOfStrings &rs_varnames )
- {
- PUSH_VAR( "audio-device" );
- PUSH_VAR( "audio-channels" );
-@@ -191,8 +193,8 @@ int AudioAutoMenuBuilder( vlc_object_t *
- return VLC_SUCCESS;
- }
-
--int IntfAutoMenuBuilder( intf_thread_t *p_intf, vector<int> &ri_objects,
-- vector<const char *> &rs_varnames, bool is_popup)
-+int IntfAutoMenuBuilder( intf_thread_t *p_intf, ArrayOfInts &ri_objects,
-+ ArrayOfStrings &rs_varnames, bool is_popup)
- {
- /* vlc_object_find is needed because of the dialogs provider case */
- vlc_object_t *p_object;
-@@ -221,18 +223,18 @@ int IntfAutoMenuBuilder( intf_thread_t *
- /*****************************************************************************
- * Popup menus
- *****************************************************************************/
--#define PUSH_VAR( var ) as_varnames.push_back( var ); \
-- ai_objects.push_back( p_object->i_object_id )
-+#define PUSH_VAR( var ) as_varnames.Add( var ); \
-+ ai_objects.Add( p_object->i_object_id )
-
--#define PUSH_SEPARATOR if( ai_objects.size() != i_last_separator ) { \
-- ai_objects.push_back( 0 ); \
-- as_varnames.push_back( "" ); \
-- i_last_separator = ai_objects.size(); }
-+#define PUSH_SEPARATOR if( ai_objects.GetCount() != i_last_separator ) { \
-+ ai_objects.Add( 0 ); \
-+ as_varnames.Add( "" ); \
-+ i_last_separator = ai_objects.GetCount(); }
-
- #define POPUP_BOILERPLATE \
- unsigned int i_last_separator = 0; \
-- vector<int> ai_objects; \
-- vector<const char *> as_varnames; \
-+ ArrayOfInts ai_objects; \
-+ ArrayOfStrings as_varnames; \
- playlist_t *p_playlist = (playlist_t *) vlc_object_find( p_intf, \
- VLC_OBJECT_PLAYLIST, FIND_ANYWHERE );\
- if( !p_playlist ) \
-@@ -288,10 +290,10 @@ void VideoPopupMenu( intf_thread_t *p_in
- if( p_input )
- {
- vlc_object_yield( p_input );
-- as_varnames.push_back( "video-es" );
-- ai_objects.push_back( p_input->i_object_id );
-- as_varnames.push_back( "spu-es" );
-- ai_objects.push_back( p_input->i_object_id );
-+ as_varnames.Add( "video-es" );
-+ ai_objects.Add( p_input->i_object_id );
-+ as_varnames.Add( "spu-es" );
-+ ai_objects.Add( p_input->i_object_id );
- vlc_object_t *p_vout = (vlc_object_t *)vlc_object_find( p_input,
- VLC_OBJECT_VOUT, FIND_CHILD );
- if( p_vout )
-@@ -312,8 +314,8 @@ void AudioPopupMenu( intf_thread_t *p_in
- if( p_input )
- {
- vlc_object_yield( p_input );
-- as_varnames.push_back( "audio-es" );
-- ai_objects.push_back( p_input->i_object_id );
-+ as_varnames.Add( "audio-es" );
-+ ai_objects.Add( p_input->i_object_id );
- vlc_object_t *p_aout = (vlc_object_t *)vlc_object_find( p_input,
- VLC_OBJECT_AOUT, FIND_ANYWHERE );
- if( p_aout )
-@@ -336,7 +338,7 @@ void MiscPopupMenu( intf_thread_t *p_int
- if( p_input )
- {
- vlc_object_yield( p_input );
-- as_varnames.push_back( "audio-es" );
-+ as_varnames.Add( "audio-es" );
- InputAutoMenuBuilder( VLC_OBJECT(p_input), ai_objects, as_varnames );
- PUSH_SEPARATOR;
- }
-@@ -367,10 +369,10 @@ void PopupMenu( intf_thread_t *p_intf, w
-
- /* Video menu */
- PUSH_SEPARATOR;
-- as_varnames.push_back( "video-es" );
-- ai_objects.push_back( p_input->i_object_id );
-- as_varnames.push_back( "spu-es" );
-- ai_objects.push_back( p_input->i_object_id );
-+ as_varnames.Add( "video-es" );
-+ ai_objects.Add( p_input->i_object_id );
-+ as_varnames.Add( "spu-es" );
-+ ai_objects.Add( p_input->i_object_id );
- vlc_object_t *p_vout = (vlc_object_t *)vlc_object_find( p_input,
- VLC_OBJECT_VOUT, FIND_CHILD );
- if( p_vout )
-@@ -380,8 +382,8 @@ void PopupMenu( intf_thread_t *p_intf, w
- }
- /* Audio menu */
- PUSH_SEPARATOR
-- as_varnames.push_back( "audio-es" );
-- ai_objects.push_back( p_input->i_object_id );
-+ as_varnames.Add( "audio-es" );
-+ ai_objects.Add( p_input->i_object_id );
- vlc_object_t *p_aout = (vlc_object_t *)vlc_object_find( p_input,
- VLC_OBJECT_AOUT, FIND_ANYWHERE );
- if( p_aout )
-@@ -417,8 +419,8 @@ void PopupMenu( intf_thread_t *p_intf, w
- wxMenu *AudioMenu( intf_thread_t *_p_intf, wxWindow *p_parent, wxMenu *p_menu )
- {
- vlc_object_t *p_object;
-- vector<int> ai_objects;
-- vector<const char *> as_varnames;
-+ ArrayOfInts ai_objects;
-+ ArrayOfStrings as_varnames;
-
- p_object = (vlc_object_t *)vlc_object_find( _p_intf, VLC_OBJECT_INPUT,
- FIND_ANYWHERE );
-@@ -451,8 +453,8 @@ wxMenu *AudioMenu( intf_thread_t *_p_int
- wxMenu *VideoMenu( intf_thread_t *_p_intf, wxWindow *p_parent, wxMenu *p_menu )
- {
- vlc_object_t *p_object;
-- vector<int> ai_objects;
-- vector<const char *> as_varnames;
-+ ArrayOfInts ai_objects;
-+ ArrayOfStrings as_varnames;
-
- p_object = (vlc_object_t *)vlc_object_find( _p_intf, VLC_OBJECT_INPUT,
- FIND_ANYWHERE );
-@@ -485,8 +487,8 @@ wxMenu *VideoMenu( intf_thread_t *_p_int
- wxMenu *NavigMenu( intf_thread_t *_p_intf, wxWindow *p_parent, wxMenu *p_menu )
- {
- vlc_object_t *p_object;
-- vector<int> ai_objects;
-- vector<const char *> as_varnames;
-+ ArrayOfInts ai_objects;
-+ ArrayOfStrings as_varnames;
-
- p_object = (vlc_object_t *)vlc_object_find( _p_intf, VLC_OBJECT_INPUT,
- FIND_ANYWHERE );
-@@ -514,8 +516,8 @@ wxMenu *SettingsMenu( intf_thread_t *_p_
- wxMenu *p_menu )
- {
- vlc_object_t *p_object;
-- vector<int> ai_objects;
-- vector<const char *> as_varnames;
-+ ArrayOfInts ai_objects;
-+ ArrayOfStrings as_varnames;
-
- p_object = (vlc_object_t *)vlc_object_find( _p_intf, VLC_OBJECT_INTF,
- FIND_PARENT );
-@@ -555,8 +557,8 @@ Menu::~Menu()
- /*****************************************************************************
- * Public methods.
- *****************************************************************************/
--void Menu::Populate( vector<const char *> & ras_varnames,
-- vector<int> & rai_objects )
-+void Menu::Populate( ArrayOfStrings & ras_varnames,
-+ ArrayOfInts & rai_objects )
- {
- vlc_object_t *p_object;
- vlc_bool_t b_section_empty = VLC_FALSE;
-@@ -564,7 +566,7 @@ void Menu::Populate( vector<const char *
-
- i_item_id = i_start_id;
-
-- for( i = 0; i < (int)rai_objects.size() ; i++ )
-+ for( i = 0; i < (int)rai_objects.GetCount() ; i++ )
- {
- if( !ras_varnames[i] || !*ras_varnames[i] )
- {
-diff -puriN vlc-0.8.6/modules/gui/wxwidgets/wxwidgets.cpp vlc-0.8.6a/modules/gui/wxwidgets/wxwidgets.cpp
---- vlc-0.8.6/modules/gui/wxwidgets/wxwidgets.cpp 2006-10-12 19:47:03.000000000 +0200
-+++ vlc-0.8.6a/modules/gui/wxwidgets/wxwidgets.cpp 2007-01-07 23:07:15.000000000 +0100
-@@ -593,7 +593,7 @@ WindowSettings::~WindowSettings( )
- size[i].x, size[i].y );
- }
-
-- config_PutPsz( p_intf, "wx-config-last", sCfg.mb_str() );
-+ config_PutPsz( p_intf, "wx-config-last", sCfg.mb_str(wxConvUTF8) );
- }
-
- void WindowSettings::SetScreen( int i_screen_w, int i_screen_h )
-diff -puriN vlc-0.8.6/modules/gui/wxwidgets/wxwidgets.hpp vlc-0.8.6a/modules/gui/wxwidgets/wxwidgets.hpp
---- vlc-0.8.6/modules/gui/wxwidgets/wxwidgets.hpp 2006-09-18 12:28:21.000000000 +0200
-+++ vlc-0.8.6a/modules/gui/wxwidgets/wxwidgets.hpp 2007-01-07 23:07:15.000000000 +0100
-@@ -95,10 +95,8 @@ DECLARE_LOCAL_EVENT_TYPE( wxEVT_INTF, 1
- * But heh, that's wxWidgets; you can't really expect it to actually
- * work, let alone work like its documentation says.
- *
-- * Did it work, we would be able to catch non-ANSI characters on Windows
-- * through wxString::wc_str(); while they are lost when using mb_str().
-- * This would be particularly useful to open files whose names contain
-- * non-ACP characters.
-+ * Unicode needs to be enabled to catch non-ANSI characters on Windows
-+ * through wxString::wc_str(); they are lost when using mb_str().
- */
- #if wxUSE_UNICODE
- # define wxFromLocale(wxstring) FromWide(wxstring.wc_str())
-@@ -107,18 +105,12 @@ DECLARE_LOCAL_EVENT_TYPE( wxEVT_INTF, 1
- # define wxFromLocale(wxstring) FromLocale(wxstring.mb_str())
- # define wxLocaleFree(string) LocaleFree(string)
- #endif
--
-+
- /* From Locale functions to use for File Drop targets ... go figure */
--#ifdef wxUSE_UNICODE
-+#if defined( wxUSE_UNICODE ) && !defined( WIN32 )
- static inline char *wxDnDFromLocale( const wxChar *stupid )
- {
- /*
-- * FIXME: this is yet another awful and ugly bug-to-bug work-around
-- * for the painfully broken and brain-dead wxWidgets character
-- * encoding internals. Maybe, one day the wxWidgets team will find out
-- * and we will have to remove (phew) this kludge or autodetect whether
-- * to trigger it (damn).
-- *
- * In Unicode mode, wxWidgets will encode file names in the locale
- * encoding with each **bytes** (rather than characters) represented
- * by a 32 bits unsigned integer. If you are lucky enough to be using
-@@ -128,14 +120,17 @@ static inline char *wxDnDFromLocale( con
- * UTF-8 but also Windows-1252(!) and ISO-8859-15(!) or any
- * non-western encoding, it obviously fails.
- */
-- const wxChar *braindead;
-- for (braindead = stupid; *braindead; braindead++);
--
-- size_t i = (braindead - stupid);
-- char psz_local[i + 1];
-- do
-- psz_local[i] = (char)stupid[i];
-- while (i--);
-+ size_t n = 0;
-+ while (stupid[n])
-+ n++;
-+
-+ char psz_local[n + 1];
-+ for (size_t i = 0; i <= n; i++)
-+ psz_local[i] = stupid[i];
-+
-+ // Kludge for (broken?) apps that adds a LF at the end of DnD
-+ if ((n >= 1) && (strchr ("\n\r", stupid[n - 1]) != NULL))
-+ psz_local[n - 1] = '\0';
-
- return FromLocaleDup( psz_local );
- }
-diff -puriN vlc-0.8.6/modules/misc/gnutls.c vlc-0.8.6a/modules/misc/gnutls.c
---- vlc-0.8.6/modules/misc/gnutls.c 2006-09-22 17:14:31.000000000 +0200
-+++ vlc-0.8.6a/modules/misc/gnutls.c 2007-01-07 23:07:23.000000000 +0100
-@@ -181,6 +181,42 @@ _get_Bool( vlc_object_t *p_this, const c
- #define get_Bool( a, b ) _get_Bool( (vlc_object_t *)(a), (b) )
-
-
-+static int gnutls_Error (vlc_object_t *obj, int val)
-+{
-+ switch (val)
-+ {
-+ case GNUTLS_E_AGAIN:
-+#if defined(WIN32)
-+ WSASetLastError(WSAEWOULDBLOCK);
-+#else
-+ errno = EAGAIN;
-+#endif
-+ break;
-+
-+ case GNUTLS_E_INTERRUPTED:
-+#if defined(WIN32)
-+ WSASetLastError(WSAEINTR);
-+#else
-+ errno = EINTR;
-+#endif
-+ break;
-+
-+ default:
-+ msg_Err (obj, "%s", gnutls_strerror (val));
-+#ifdef DEBUG
-+ if (!gnutls_error_is_fatal (val))
-+ msg_Err (obj, "Error above should be handled");
-+#endif
-+#if defined(WIN32)
-+ WSASetLastError(WSAECONNRESET);
-+#else
-+ errno = ECONNRESET;
-+#endif
-+ }
-+ return -1;
-+}
-+
-+
- /**
- * Sends data through a TLS session.
- */
-@@ -193,8 +229,7 @@ gnutls_Send( void *p_session, const void
- p_sys = (tls_session_sys_t *)(((tls_session_t *)p_session)->p_sys);
-
- val = gnutls_record_send( p_sys->session, buf, i_length );
-- /* TODO: handle fatal error */
-- return val < 0 ? -1 : val;
-+ return (val < 0) ? gnutls_Error ((vlc_object_t *)p_session, val) : val;
- }
-
-
-@@ -210,8 +245,7 @@ gnutls_Recv( void *p_session, void *buf,
- p_sys = (tls_session_sys_t *)(((tls_session_t *)p_session)->p_sys);
-
- val = gnutls_record_recv( p_sys->session, buf, i_length );
-- /* TODO: handle fatal error */
-- return val < 0 ? -1 : val;
-+ return (val < 0) ? gnutls_Error ((vlc_object_t *)p_session, val) : val;
- }
-
-
-@@ -244,7 +278,7 @@ gnutls_ContinueHandshake( tls_session_t
- #ifdef WIN32
- msg_Dbg( p_session, "Winsock error %d", WSAGetLastError( ) );
- #endif
-- msg_Err( p_session, "TLS handshake failed: %s",
-+ msg_Err( p_session, "TLS handshake error: %s",
- gnutls_strerror( val ) );
- p_session->pf_close( p_session );
- return -1;
-@@ -539,7 +573,7 @@ gnutls_Addx509Directory( vlc_object_t *p
- || fstat( fd, &st1 ) || utf8_lstat( psz_dirname, &st2 )
- || S_ISLNK( st2.st_mode ) || ( st1.st_ino != st2.st_ino ) )
- {
-- closedir( dir );
-+ vlc_closedir_wrapper( dir );
- return VLC_EGENERIC;
- }
- }
-@@ -564,7 +598,7 @@ gnutls_Addx509Directory( vlc_object_t *p
- free( psz_filename );
- }
-
-- closedir( dir );
-+ vlc_closedir_wrapper( dir );
- return VLC_SUCCESS;
- }
-
-diff -puriN vlc-0.8.6/modules/video_filter/rss.c vlc-0.8.6a/modules/video_filter/rss.c
---- vlc-0.8.6/modules/video_filter/rss.c 2006-09-18 12:28:28.000000000 +0200
-+++ vlc-0.8.6a/modules/video_filter/rss.c 2007-01-07 23:07:30.000000000 +0100
-@@ -503,12 +503,8 @@ picture_t *LoadImage( filter_t *p_filter
- picture_t *p_orig, *p_pic=NULL;
- image_handler_t *p_handler = image_HandlerCreate( p_filter );
-
-- char *psz_local;
--
-- psz_local = ToLocale( psz_url );
- fmt_out.i_chroma = VLC_FOURCC('Y','U','V','A');
-- p_orig = image_ReadUrl( p_handler, psz_local, &fmt_in, &fmt_out );
-- LocaleFree( psz_local );
-+ p_orig = image_ReadUrl( p_handler, psz_url, &fmt_in, &fmt_out );
-
- if( !p_orig )
- {
-diff -puriN vlc-0.8.6/modules/visualization/galaktos/preset.c vlc-0.8.6a/modules/visualization/galaktos/preset.c
---- vlc-0.8.6/modules/visualization/galaktos/preset.c 2006-09-18 12:28:27.000000000 +0200
-+++ vlc-0.8.6a/modules/visualization/galaktos/preset.c 2007-01-07 23:07:27.000000000 +0100
-@@ -520,7 +520,7 @@ int load_preset_file(char * pathname, pr
- return FAILURE;
-
- /* Open the file corresponding to pathname */
-- if ((fs = fopen(pathname, "r")) == 0) {
-+ if ((fs = utf8_fopen(pathname, "r")) == 0) {
- if (PRESET_DEBUG) printf("load_preset_file: loading of file %s failed!\n", pathname);
- return ERROR;
- }
-@@ -792,7 +792,7 @@ void savePreset(char * filename) {
- return;
-
- /* Open the file corresponding to pathname */
-- if ((fs = fopen(filename, "w+")) == 0) {
-+ if ((fs = utf8_fopen(filename, "w+")) == 0) {
- if (PRESET_DEBUG) printf("savePreset: failed to create filename \"%s\"!\n", filename);
- return;
- }
-diff -puriN vlc-0.8.6/modules/visualization/goom.c vlc-0.8.6a/modules/visualization/goom.c
---- vlc-0.8.6/modules/visualization/goom.c 2006-09-18 12:28:27.000000000 +0200
-+++ vlc-0.8.6a/modules/visualization/goom.c 2007-01-07 23:07:27.000000000 +0100
-@@ -413,19 +413,24 @@ static char *TitleGet( vlc_object_t *p_t
-
- if( p_input )
- {
-- char *psz = strrchr( p_input->input.p_item->psz_uri, '/' );
--
-- if( psz )
-- {
-- psz++;
-- }
-- else
-+ psz_title = vlc_input_item_GetInfo( p_input->input.p_item,
-+ _("Meta-information"), _(VLC_META_TITLE) );
-+ if( !*psz_title )
- {
-- psz = p_input->input.p_item->psz_uri;
-- }
-- if( psz && *psz )
-- {
-- psz_title = strdup( psz );
-+ char *psz = strrchr( p_input->input.p_item->psz_uri, '/' );
-+
-+ if( psz )
-+ {
-+ psz++;
-+ }
-+ else
-+ {
-+ psz = p_input->input.p_item->psz_uri;
-+ }
-+ if( psz && *psz )
-+ {
-+ psz_title = strdup( psz );
-+ }
- }
- vlc_object_release( p_input );
- }
-diff -puriN vlc-0.8.6/src/input/stream.c vlc-0.8.6a/src/input/stream.c
---- vlc-0.8.6/src/input/stream.c 2006-09-18 12:27:56.000000000 +0200
-+++ vlc-0.8.6a/src/input/stream.c 2007-01-07 23:06:39.000000000 +0100
-@@ -1488,16 +1488,70 @@ char * stream_ReadLine( stream_t *s )
-
- if( i_data % s->i_char_width )
- {
-+ /* keep i_char_width boundary */
-+ i_data = i_data - ( i_data % s->i_char_width );
- msg_Warn( s, "the read is not i_char_width compatible");
- }
-
-+ if( i_data == 0 )
-+ break;
-+
- /* Check if there is an EOL */
-- if( ( psz_eol = memchr( p_data, '\n', i_data ) ) )
-+ if( s->i_char_width == 1 )
- {
-- if( s->b_little_endian == VLC_TRUE && s->i_char_width > 1 )
-+ /* UTF-8: 0A <LF> */
-+ psz_eol = memchr( p_data, '\n', i_data );
-+ }
-+ else
-+ {
-+ uint8_t *p = p_data;
-+ uint8_t *p_last = p + i_data - s->i_char_width;
-+
-+ if( s->i_char_width == 2 )
- {
-- psz_eol += ( s->i_char_width - 1 );
-+ if( s->b_little_endian == VLC_TRUE)
-+ {
-+ /* UTF-16LE: 0A 00 <LF> */
-+ while( p <= p_last && ( p[0] != 0x0A || p[1] != 0x00 ) )
-+ p += 2;
-+ }
-+ else
-+ {
-+ /* UTF-16BE: 00 0A <LF> */
-+ while( p <= p_last && ( p[1] != 0x0A || p[0] != 0x00 ) )
-+ p += 2;
-+ }
- }
-+ else if( s->i_char_width == 4 )
-+ {
-+ if( s->b_little_endian == VLC_TRUE)
-+ {
-+ /* UTF-32LE: 0A 00 00 00 <LF> */
-+ while( p <= p_last && ( p[0] != 0x0A || p[1] != 0x00 ||
-+ p[2] != 0x00 || p[3] != 0x00 ) )
-+ p += 4;
-+ }
-+ else
-+ {
-+ /* UTF-32BE: 00 00 00 0A <LF> */
-+ while( p <= p_last && ( p[3] != 0x0A || p[2] != 0x00 ||
-+ p[1] != 0x00 || p[0] != 0x00 ) )
-+ p += 4;
-+ }
-+ }
-+
-+ if( p > p_last )
-+ {
-+ psz_eol = NULL;
-+ }
-+ else
-+ {
-+ psz_eol = (char *)p + ( s->i_char_width - 1 );
-+ }
-+ }
-+
-+ if(psz_eol)
-+ {
- i_data = (psz_eol - (char *)p_data) + 1;
- p_line = realloc( p_line, i_line + i_data + s->i_char_width ); /* add \0 */
- i_data = stream_Read( s, &p_line[i_line], i_data );
-@@ -1550,7 +1604,7 @@ char * stream_ReadLine( stream_t *s )
- }
-
- /* Remove trailing LF/CR */
-- while( i_line > 0 && ( p_line[i_line-2] == '\r' ||
-+ while( i_line >= 2 && ( p_line[i_line-2] == '\r' ||
- p_line[i_line-2] == '\n') ) i_line--;
-
- /* Make sure the \0 is there */
-diff -puriN vlc-0.8.6/src/libvlc.c vlc-0.8.6a/src/libvlc.c
---- vlc-0.8.6/src/libvlc.c 2006-10-12 19:47:01.000000000 +0200
-+++ vlc-0.8.6a/src/libvlc.c 2007-01-07 23:06:40.000000000 +0100
-@@ -2044,12 +2044,25 @@ static int GetFilenames( vlc_t *p_vlc, i
- /* TODO: write an internal function of this one, to avoid
- * unnecessary lookups. */
- /* FIXME: should we convert options to UTF-8 as well ?? */
-- psz_target = FromLocale( ppsz_argv[ i_opt ] );
-- VLC_AddTarget( p_vlc->i_object_id, psz_target,
-+
-+#ifdef WIN32
-+ if( GetVersion() < 0x80000000 )
-+ {
-+ VLC_AddTarget( p_vlc->i_object_id, ppsz_argv[i_opt],
- (char const **)( i_options ? &ppsz_argv[i_opt + 1] :
- NULL ), i_options,
- PLAYLIST_INSERT, 0 );
-- LocaleFree( psz_target );
-+ }
-+ else
-+#endif
-+ {
-+ psz_target = FromLocale( ppsz_argv[ i_opt ] );
-+ VLC_AddTarget( p_vlc->i_object_id, psz_target,
-+ (char const **)( i_options ? &ppsz_argv[i_opt + 1] :
-+ NULL ), i_options,
-+ PLAYLIST_INSERT, 0 );
-+ LocaleFree( psz_target );
-+ }
- }
-
- return VLC_SUCCESS;
-diff -puriN vlc-0.8.6/src/misc/configuration.c vlc-0.8.6a/src/misc/configuration.c
---- vlc-0.8.6/src/misc/configuration.c 2006-09-18 12:27:56.000000000 +0200
-+++ vlc-0.8.6a/src/misc/configuration.c 2007-01-07 23:06:39.000000000 +0100
-@@ -814,6 +814,9 @@ int __config_LoadConfigFile( vlc_object_
-
- for( i_index = 0; i_index < p_list->i_count; i_index++ )
- {
-+ char * (*convert) (const char *) = FromLocaleDup;
-+ char bom[3];
-+
- p_parser = (module_t *)p_list->p_values[i_index].p_object ;
-
- if( psz_module_name
-@@ -825,6 +828,15 @@ int __config_LoadConfigFile( vlc_object_
- /* The config file is organized in sections, one per module. Look for
- * the interesting section ( a section is of the form [foo] ) */
- fseek( file, 0L, SEEK_SET );
-+
-+ /* Look for UTF-8 Byte Order Mark */
-+
-+ if ((fread (bom, 1, 3, file) == 3)
-+ && (memcmp (bom, "\xEF\xBB\xBF", 3) == 0))
-+ convert = strdup;
-+ else
-+ rewind (file); // no BOM, rewind
-+
- while( fgets( line, 1024, file ) )
- {
- if( (line[0] == '[')
-@@ -922,7 +934,7 @@ int __config_LoadConfigFile( vlc_object_
- free( p_item->psz_value );
-
- p_item->psz_value = *psz_option_value ?
-- strdup( psz_option_value ) : NULL;
-+ convert( psz_option_value ) : NULL;
-
- if( p_item->psz_value_saved )
- free( p_item->psz_value_saved );
-@@ -1149,8 +1161,17 @@ static int SaveConfigFile( vlc_object_t
- vlc_mutex_unlock( &p_this->p_vlc->config_lock );
- return -1;
- }
-+
-+#ifdef WIN32
-+ /* Ugly kludge to not save --started-from-file (and not break the ABI).
-+ * See [17898] and #871 */
-+ /* Just use the first mofule found*/
-+ config_PutInt( (module_t *)p_list->p_values[0].p_object,
-+ "started-from-file", 0 );
-+
-+#endif
-
-- fprintf( file, "###\n### " COPYRIGHT_MESSAGE "\n###\n\n"
-+ fprintf( file, "\xEF\xBB\xBF###\n### " COPYRIGHT_MESSAGE "\n###\n\n"
- "###\n### lines begining with a '#' character are comments\n###\n\n" );
-
- /* Look for the selected module, if NULL then save everything */
-@@ -1171,7 +1192,7 @@ static int SaveConfigFile( vlc_object_t
-
- fprintf( file, "[%s]", p_parser->psz_object_name );
- if( p_parser->psz_longname )
-- utf8_fprintf( file, " # %s\n\n", p_parser->psz_longname );
-+ fprintf( file, " # %s\n\n", p_parser->psz_longname );
- else
- fprintf( file, "\n\n" );
-
-@@ -1207,11 +1228,11 @@ static int SaveConfigFile( vlc_object_t
- case CONFIG_ITEM_BOOL:
- case CONFIG_ITEM_INTEGER:
- if( p_item->psz_text )
-- utf8_fprintf( file, "# %s (%s)\n", p_item->psz_text,
-+ fprintf( file, "# %s (%s)\n", p_item->psz_text,
- (p_item->i_type == CONFIG_ITEM_BOOL) ?
- _("boolean") : _("integer") );
- if( i_value == p_item->i_value_orig )
-- fprintf( file, "#" );
-+ fputc( '#', file );
- fprintf( file, "%s=%i\n", p_item->psz_name, i_value );
-
- p_item->i_value_saved = i_value;
-@@ -1219,10 +1240,10 @@ static int SaveConfigFile( vlc_object_t
-
- case CONFIG_ITEM_KEY:
- if( p_item->psz_text )
-- utf8_fprintf( file, "# %s (%s)\n", p_item->psz_text,
-+ fprintf( file, "# %s (%s)\n", p_item->psz_text,
- _("key") );
- if( i_value == p_item->i_value_orig )
-- fprintf( file, "#" );
-+ fputc( '#', file );
- psz_key = ConfigKeyToString( i_value );
- fprintf( file, "%s=%s\n", p_item->psz_name,
- psz_key ? psz_key : "" );
-@@ -1233,10 +1254,10 @@ static int SaveConfigFile( vlc_object_t
-
- case CONFIG_ITEM_FLOAT:
- if( p_item->psz_text )
-- utf8_fprintf( file, "# %s (%s)\n", p_item->psz_text,
-+ fprintf( file, "# %s (%s)\n", p_item->psz_text,
- _("float") );
- if( f_value == p_item->f_value_orig )
-- fprintf( file, "#" );
-+ fputc( '#', file );
- fprintf( file, "%s=%f\n", p_item->psz_name, (double)f_value );
-
- p_item->f_value_saved = f_value;
-@@ -1244,12 +1265,12 @@ static int SaveConfigFile( vlc_object_t
-
- default:
- if( p_item->psz_text )
-- utf8_fprintf( file, "# %s (%s)\n", p_item->psz_text,
-+ fprintf( file, "# %s (%s)\n", p_item->psz_text,
- _("string") );
- if( (!psz_value && !p_item->psz_value_orig) ||
- (psz_value && p_item->psz_value_orig &&
- !strcmp( psz_value, p_item->psz_value_orig )) )
-- fprintf( file, "#" );
-+ fputc( '#', file );
- fprintf( file, "%s=%s\n", p_item->psz_name,
- psz_value ? psz_value : "" );
-
-@@ -1264,7 +1285,7 @@ static int SaveConfigFile( vlc_object_t
- }
- }
-
-- fprintf( file, "\n" );
-+ fputc( '\n', file );
- }
-
- vlc_list_release( p_list );
-diff -puriN vlc-0.8.6/src/misc/vlm.c vlc-0.8.6a/src/misc/vlm.c
---- vlc-0.8.6/src/misc/vlm.c 2006-10-01 17:34:20.000000000 +0200
-+++ vlc-0.8.6a/src/misc/vlm.c 2007-01-07 23:06:39.000000000 +0100
-@@ -51,12 +51,12 @@
- /*****************************************************************************
- * Local prototypes.
- *****************************************************************************/
--static vlm_message_t *vlm_Show( vlm_t *, vlm_media_t *, vlm_schedule_t *, char * );
-+static vlm_message_t *vlm_Show( vlm_t *, vlm_media_t *, vlm_schedule_t *, const char * );
- static vlm_message_t *vlm_Help( vlm_t *, char * );
-
- static vlm_media_instance_t *vlm_MediaInstanceSearch( vlm_t *, vlm_media_t *, const char * );
-
--static vlm_message_t *vlm_MessageNew( char *, const char *, ... );
-+static vlm_message_t *vlm_MessageNew( const char *, const char *, ... );
- static vlm_message_t *vlm_MessageAdd( vlm_message_t *, vlm_message_t * );
-
- static vlm_schedule_t *vlm_ScheduleSearch( vlm_t *, const char * );
-@@ -255,87 +255,129 @@ int vlm_Load( vlm_t *p_vlm, const char *
- return 0;
- }
-
--/*****************************************************************************
-- * FindEndCommand
-- *****************************************************************************/
--static const char *FindEndCommand( const char *psz_sent )
-+static const char quotes[] = "\"'";
-+/**
-+ * FindCommandEnd: look for the end of a possibly quoted string
-+ * @return NULL on mal-formatted string,
-+ * pointer past the last character otherwise.
-+ */
-+static const char *FindCommandEnd (const char *psz_sent)
- {
-- vlc_bool_t b_escape = VLC_FALSE;
-+ char c, quote = 0;
-
-- switch( *psz_sent )
-+ while ((c = *psz_sent) != '\0')
- {
-- case '\"':
-- psz_sent++;
-- while( ( *psz_sent != '\"' || b_escape == VLC_TRUE )
-- && ( *psz_sent != '\0' ) )
-+ if (!quote)
- {
-- if( *psz_sent == '\'' && b_escape == VLC_FALSE )
-+ if (strchr(quotes,c)) // opening quote
-+ quote = c;
-+ else
-+ if (isspace(c)) // non-escaped space
-+ return psz_sent;
-+ else
-+ if( c == '\\' )
- {
-- psz_sent = FindEndCommand( psz_sent );
-- if( psz_sent == NULL ) return NULL;
-+ psz_sent++; // skip escaped character
-+ if (*psz_sent == '\0')
-+ return psz_sent;
- }
-- else if( *psz_sent++ == '\\' && b_escape == VLC_FALSE )
-- b_escape = VLC_TRUE;
-- else
-- b_escape = VLC_FALSE;
- }
--
-- if( *psz_sent == '\"' )
-+ else
- {
-- psz_sent++;
-- return psz_sent;
-+ if (c == quote) // non-escaped matching quote
-+ quote = 0;
-+ else
-+ if ((quote == '"') && (c == '\\'))
-+ {
-+ psz_sent++; // skip escaped character
-+ if (*psz_sent == '\0')
-+ return NULL; // error, closing quote missing
-+ }
- }
-
-- /* *psz_sent == '\0' -> number of " is incorrect */
-- else return NULL;
-+ psz_sent++;
-+ }
-
-- break;
-+ // error (NULL) if we could not find a matching quote
-+ return quote ? NULL : psz_sent;
-+}
-
-- case '\'':
-- psz_sent++;
-- while( ( *psz_sent != '\'' || b_escape == VLC_TRUE )
-- && ( *psz_sent != '\0' ) )
-+
-+/**
-+ * Unescape a nul-terminated string.
-+ * Note that in and out can be identical.
-+ *
-+ * @param out output buffer (at least <strlen (in) + 1> characters long)
-+ * @param in nul-terminated string to be unescaped
-+ *
-+ * @return 0 on success, -1 on error.
-+ */
-+static int Unescape (char *out, const char *in)
-+{
-+ char c, quote = 0;
-+
-+ while ((c = *in++) != '\0')
-+ {
-+ if (!quote)
- {
-- if( *psz_sent == '\"' && b_escape == VLC_FALSE )
-+ if (strchr(quotes,c)) // opening quote
- {
-- psz_sent = FindEndCommand( psz_sent );
-- if( psz_sent == NULL ) return NULL;
-+ quote = c;
-+ continue;
- }
-- else if( *psz_sent++ == '\\' && b_escape == VLC_FALSE )
-- b_escape = VLC_TRUE;
- else
-- b_escape = VLC_FALSE;
-- }
--
-- if( *psz_sent == '\'' )
-- {
-- psz_sent++;
-- return psz_sent;
-+ if( c == '\\' )
-+ {
-+ switch (c = *in++)
-+ {
-+ case '"':
-+ case '\'':
-+ case '\\':
-+ *out++ = c;
-+ continue;
-+
-+ case '\0':
-+ *out = '\0';
-+ return 0;
-+ }
-+ if (isspace(c))
-+ {
-+ *out++ = c;
-+ continue;
-+ }
-+ /* None of the special cases - copy the backslash */
-+ *out++ = '\\';
-+ }
- }
--
-- /* *psz_sent == '\0' -> number of " is incorrect */
-- else return NULL;
--
-- break;
--
-- default: /* now we can look for spaces */
-- while( ( *psz_sent != ' ' ) && ( *psz_sent != '\0' ) )
-+ else
- {
-- if( ( ( *psz_sent == '\'' ) || ( *psz_sent == '\"' ) )
-- && b_escape == VLC_FALSE )
-+ if (c == quote) // non-escaped matching quote
- {
-- psz_sent = FindEndCommand( psz_sent );
-- if( psz_sent == NULL ) return NULL;
-+ quote = 0;
-+ continue;
-+ }
-+ if ((quote == '"') && (c == '\\'))
-+ {
-+ switch (c = *in++)
-+ {
-+ case '"':
-+ case '\\':
-+ *out++ = c;
-+ continue;
-+
-+ case '\0': // should never happen
-+ *out = '\0';
-+ return -1;
-+ }
-+ /* None of the special cases - copy the backslash */
-+ *out++ = '\\';
- }
-- else if( *psz_sent++ == '\\' && b_escape == VLC_FALSE )
-- b_escape = VLC_TRUE;
-- else
-- b_escape = VLC_FALSE;
--
- }
--
-- return psz_sent;
-+ *out++ = c;
- }
-+
-+ *out = '\0';
-+ return 0;
- }
-
- /*****************************************************************************
-@@ -356,17 +398,13 @@ static int ExecuteCommand( vlm_t *p_vlm,
- while( *psz_cmd != '\0' )
- {
-
-- if( *psz_cmd == ' ' || *psz_cmd == '\t' )
-+ if( isspace(*psz_cmd) )
- {
- psz_cmd++;
- }
- else
- {
- const char *psz_temp;
-- const char *psz_buf;
-- char *psz_dst;
-- vlc_bool_t b_escape = VLC_FALSE;
-- int i_temp;
-
- /* support for comments */
- if( i_command == 0 && *psz_cmd == '#')
-@@ -375,7 +413,7 @@ static int ExecuteCommand( vlm_t *p_vlm,
- goto success;
- }
-
-- psz_temp = FindEndCommand( psz_cmd );
-+ psz_temp = FindCommandEnd( psz_cmd );
-
- if( psz_temp == NULL )
- {
-@@ -383,31 +421,12 @@ static int ExecuteCommand( vlm_t *p_vlm,
- goto error;
- }
-
-- i_temp = psz_temp - psz_cmd;
--
- ppsz_command = realloc( ppsz_command, (i_command + 1) *
- sizeof(char*) );
-- ppsz_command[ i_command ] = malloc( (i_temp + 1) * sizeof(char) );
--
-- /* unescape ", ' and \ ... and everything else */
-- psz_buf = psz_cmd;
-- psz_dst = ppsz_command[ i_command ];
-- while( i_temp-- )
-- {
-- if( *psz_buf == '\\' && b_escape == VLC_FALSE )
-- b_escape = VLC_TRUE;
-- else
-- {
-- b_escape = VLC_FALSE;
-- *psz_dst = *psz_buf;
-- psz_dst++;
-- }
-- psz_buf++;
-- }
-- *psz_dst = '\0';
-+ ppsz_command[i_command] = strndup (psz_cmd, psz_temp - psz_cmd);
-
-+ Unescape (ppsz_command[i_command], ppsz_command[i_command]);
- i_command++;
--
- psz_cmd = psz_temp;
- }
- }
-@@ -621,6 +640,12 @@ static int ExecuteCommand( vlm_t *p_vlm,
- psz_instance = ppsz_command[2];
-
- if( i_command < 4 ) goto syntax_error;
-+
-+ if( strcmp( ppsz_command[3], "play" ) &&
-+ strcmp( ppsz_command[3], "stop" ) &&
-+ strcmp( ppsz_command[3], "pause" ) &&
-+ strcmp( ppsz_command[3], "seek" ) )
-+ goto syntax_error;
- }
-
- psz_command = ppsz_command[i_index];
-@@ -1018,20 +1043,7 @@ int vlm_MediaSetup( vlm_t *vlm, vlm_medi
- {
- char *input;
-
-- if( psz_value != NULL && strlen(psz_value) > 1 &&
-- ( psz_value[0] == '\'' || psz_value[0] == '\"' ) &&
-- ( psz_value[ strlen(psz_value) - 1 ] == '\'' ||
-- psz_value[ strlen(psz_value) - 1 ] == '\"' ) )
-- {
-- input = malloc( strlen(psz_value) - 1 );
--
-- memcpy( input, psz_value + 1, strlen(psz_value) - 2 );
-- input[ strlen(psz_value) - 2 ] = '\0';
-- }
-- else
-- {
-- input = strdup( psz_value );
-- }
-+ input = strdup( psz_value );
-
- TAB_APPEND( media->i_input, media->input, input );
- }
-@@ -1047,20 +1059,7 @@ int vlm_MediaSetup( vlm_t *vlm, vlm_medi
- char *input;
- int i;
-
-- if( psz_value != NULL && strlen(psz_value) > 1 &&
-- ( psz_value[0] == '\'' || psz_value[0] == '\"' ) &&
-- ( psz_value[ strlen(psz_value) - 1 ] == '\'' ||
-- psz_value[ strlen(psz_value) - 1 ] == '\"' ) )
-- {
-- input = malloc( strlen(psz_value) - 1 );
--
-- memcpy( input, psz_value + 1, strlen(psz_value) - 2 );
-- input[ strlen(psz_value) - 2 ] = '\0';
-- }
-- else
-- {
-- input = strdup( psz_value );
-- }
-+ input = strdup( psz_value );
-
- for( i = 0; i < media->i_input; i++ )
- {
-@@ -1263,16 +1262,57 @@ int vlm_MediaControl( vlm_t *vlm, vlm_me
- if( !strcmp( psz_command, "seek" ) )
- {
- vlc_value_t val;
-- float f_percentage;
-
- if( psz_args )
- {
-- f_percentage = i18n_atof( psz_args );
-- if( f_percentage >= 0.0 && f_percentage <= 100.0 )
-+ vlc_bool_t i_rel;
-+ float f_value = i18n_atof( psz_args );
-+ if( psz_args[0] == '+' || psz_args[0] == '-' )
-+ i_rel = VLC_TRUE;
-+ else
-+ i_rel = VLC_FALSE;
-+ if( strstr( psz_args, "ms" ) )
- {
-- val.f_float = f_percentage / 100.0 ;
-- var_Set( p_instance->p_input, "position", val );
-- return VLC_SUCCESS;
-+ /* milliseconds */
-+ int64_t i_msec = 1000 * (int64_t)atoi( psz_args );
-+ if( i_rel )
-+ {
-+ var_SetTime( p_instance->p_input, "time-offset", i_msec );
-+ }
-+ else if( i_msec >= 0
-+ && i_msec < var_GetTime( p_instance->p_input, "length" ) )
-+ {
-+ var_SetTime( p_instance->p_input, "time", i_msec );
-+ }
-+ }
-+ else if( strchr( psz_args, 's' ) )
-+ {
-+ /* seconds */
-+ int64_t i_sec = 1000000 * (int64_t)atoi( psz_args );
-+ if( i_rel )
-+ {
-+ var_SetTime( p_instance->p_input, "time-offset", i_sec );
-+ }
-+ else if( i_sec >= 0
-+ && i_sec < var_GetTime( p_instance->p_input, "length" ) )
-+ {
-+ var_SetTime( p_instance->p_input, "time", i_sec );
-+ }
-+ }
-+ else
-+ {
-+ /* percentage */
-+ f_value /= 100.;
-+ if( i_rel )
-+ {
-+ float f_orig = var_GetFloat( p_instance->p_input, "position" );
-+ f_value += f_orig;
-+ }
-+ if( f_value >= 0.0 && f_value <= 1.0 )
-+ {
-+ var_SetFloat( p_instance->p_input, "position", f_value );
-+ return VLC_SUCCESS;
-+ }
- }
- }
- }
-@@ -1315,7 +1355,7 @@ int vlm_MediaControl( vlm_t *vlm, vlm_me
- /*****************************************************************************
- * Schedule handling
- *****************************************************************************/
--static int64_t vlm_Date()
-+static int64_t vlm_Date( void )
- {
- #ifdef WIN32
- struct timeb tm;
-@@ -1578,7 +1618,7 @@ int vlm_ScheduleSetup( vlm_schedule_t *s
- /*****************************************************************************
- * Message handling functions
- *****************************************************************************/
--static vlm_message_t *vlm_MessageNew( char *psz_name,
-+static vlm_message_t *vlm_MessageNew( const char *psz_name,
- const char *psz_format, ... )
- {
- vlm_message_t *p_message;
-@@ -1641,7 +1681,7 @@ static vlm_message_t *vlm_MessageAdd( vl
- * Misc utility functions
- *****************************************************************************/
- static vlm_message_t *vlm_Show( vlm_t *vlm, vlm_media_t *media,
-- vlm_schedule_t *schedule, char *psz_filter )
-+ vlm_schedule_t *schedule, const char *psz_filter )
- {
- if( media != NULL )
- {
-@@ -1713,8 +1753,8 @@ static vlm_message_t *vlm_Show( vlm_t *v
- vlm_MessageAdd( msg_instance, vlm_MessageNew( a, psz_tmp ) ); \
- free( psz_tmp );
- APPEND_INPUT_INFO( "position", "%f", Float );
-- APPEND_INPUT_INFO( "time", "%d", Integer );
-- APPEND_INPUT_INFO( "length", "%d", Integer );
-+ APPEND_INPUT_INFO( "time", I64Fi, Time );
-+ APPEND_INPUT_INFO( "length", I64Fi, Time );
- APPEND_INPUT_INFO( "rate", "%d", Integer );
- APPEND_INPUT_INFO( "title", "%d", Integer );
- APPEND_INPUT_INFO( "chapter", "%d", Integer );
-@@ -2010,7 +2050,7 @@ static vlm_message_t *vlm_Help( vlm_t *v
- MessageAddChild( "play" );
- MessageAddChild( "pause" );
- MessageAddChild( "stop" );
-- MessageAddChild( "seek (percentage)" );
-+ MessageAddChild( "seek [+-](percentage) | [+-](seconds)s | [+-](milliseconds)ms" );
-
- return message;
- }
-diff -puriN vlc-0.8.6/src/video_output/vout_intf.c vlc-0.8.6a/src/video_output/vout_intf.c
---- vlc-0.8.6/src/video_output/vout_intf.c 2006-09-22 17:14:26.000000000 +0200
-+++ vlc-0.8.6a/src/video_output/vout_intf.c 2007-01-07 23:06:38.000000000 +0100
-@@ -36,6 +36,7 @@
- #include "video_output.h"
- #include "vlc_image.h"
- #include "vlc_spu.h"
-+#include "charset.h"
-
- #include <snapshot.h>
-
-@@ -633,14 +634,14 @@ int vout_Snapshot( vout_thread_t *p_vout
- /*
- * Did the user specify a directory? If not, path = NULL.
- */
-- path = opendir ( (const char *)val.psz_string );
-+ path = utf8_opendir ( (const char *)val.psz_string );
-
- if ( path != NULL )
- {
- char *psz_prefix = var_GetString( p_vout, "snapshot-prefix" );
- if( !psz_prefix ) psz_prefix = strdup( "vlcsnap-" );
-
-- closedir( path );
-+ vlc_closedir_wrapper( path );
- if( var_GetBool( p_vout, "snapshot-sequential" ) == VLC_TRUE )
- {
- int i_num = var_GetInteger( p_vout, "snapshot-num" );
-@@ -650,7 +651,7 @@ int vout_Snapshot( vout_thread_t *p_vout
- asprintf( &psz_filename, "%s/%s%05d.%s", val.psz_string,
- psz_prefix, i_num++, format.psz_string );
- }
-- while( ( p_file = fopen( psz_filename, "r" ) ) && !fclose( p_file ) );
-+ while( ( p_file = utf8_fopen( psz_filename, "r" ) ) && !fclose( p_file ) );
- var_SetInteger( p_vout, "snapshot-num", i_num );
- }
- else
Modified: testing/vlc/debian/patches/series
===================================================================
--- testing/vlc/debian/patches/series 2007-01-24 13:17:44 UTC (rev 146)
+++ testing/vlc/debian/patches/series 2007-01-25 00:57:47 UTC (rev 147)
@@ -1,6 +1,4 @@
-#patch-configure.ac-syntax-0.8.6debian-0.8.6a.diff
patch-documentation-0.8.6debian-0.8.6a.diff
-#patch-network-protocols-fixes-0.8.6debian-0.8.6a.diff
patch-po-0.8.6debian-0.8.6a.diff
patch-version-information-0.8.6debian-0.8.6a.diff
patch-mozilla-plugin-0.8.6debian-0.8.6a.diff
@@ -8,7 +6,6 @@
000_ltmain.diff
010_no-wx-updates.diff
010_osdmenu-paths.diff
-#020_xulrunner.diff
020_dejavu_font.diff
020_notify.diff
020_certificates_paths.diff
@@ -19,12 +16,6 @@
patch-logo-filter-crash-0.8.6debian-0.8.6a.diff
patch-memory-leaks-0.8.6debian-0.8.6a.diff
patch-missing-locks-0.8.6debian-0.8.6a.diff
-#patch-mjpeg-separator-0.8.6debian-0.8.6a.diff
patch-playlist-crash-0.8.6debian-0.8.6a.diff
-#patch-private-libcaca-0.8.6debian-0.8.6a.diff
-#patch-remove-debug-messages-0.8.6debian-0.8.6a.diff
-patch-sanitise-javascript-0.8.6debian-0.8.6a.diff
patch-sanity-checks-0.8.6debian-0.8.6a.diff
-#patch-sdl-image-priority-0.8.6debian-0.8.6a.diff
-#patch-utf8-0.8.6debian-0.8.6a.diff
MOAB-02-01-2007-CVE-2007-0017.patch
More information about the Pkg-multimedia-commits
mailing list