From: Marian Durkovic Date: Mon, 12 Feb 2007 07:12:11 +0000 (+0000) Subject: Move __wgetmainargs into VLC's main. X-Git-Tag: 0.9.0-test0~8616 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=042e6fa3c8810a67769958f14f840280753cec9c;p=vlc Move __wgetmainargs into VLC's main. Refs: #900 #920 #1031 --- diff --git a/src/libvlc-common.c b/src/libvlc-common.c index f21bf9f92a..b850e923ab 100644 --- a/src/libvlc-common.c +++ b/src/libvlc-common.c @@ -1215,7 +1215,6 @@ static int GetFilenames( libvlc_int_t *p_vlc, int i_argc, char *ppsz_argv[] ) /* TODO: write an internal function of this one, to avoid * unnecessary lookups. */ - /* FIXME: should we convert options to UTF-8 as well ?? */ #ifdef WIN32 if( GetVersion() < 0x80000000 ) @@ -1228,6 +1227,9 @@ static int GetFilenames( libvlc_int_t *p_vlc, int i_argc, char *ppsz_argv[] ) else #endif { + /* FIXME: it's too late to call FromLocale here. We should + convert ALL arguments to UTF8 before they get parsed */ + 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] : diff --git a/src/misc/win32_specific.c b/src/misc/win32_specific.c index f3f762ed37..0921bbb96b 100644 --- a/src/misc/win32_specific.c +++ b/src/misc/win32_specific.c @@ -39,9 +39,6 @@ #include -extern void __wgetmainargs(int *argc, wchar_t ***wargv, wchar_t ***wenviron, - int expand_wildcards, int *startupinfo); - /***************************************************************************** * system_Init: initialize winsock and misc other things. *****************************************************************************/ @@ -86,18 +83,6 @@ void system_Init( libvlc_int_t *p_this, int *pi_argc, char *ppsz_argv[] ) /* Call mdate() once to make sure it is initialized properly */ mdate(); - /* Replace argv[1..n] with unicode for Windows NT and above */ - if( GetVersion() < 0x80000000 ) - { - wchar_t **wargv, **wenvp; - int i,i_wargc; - int si = { 0 }; - __wgetmainargs(&i_wargc, &wargv, &wenvp, 0, &si); - - for( i = 1; i < i_wargc; i++ ) - ppsz_argv[i] = FromWide( wargv[i] ); - } - /* WinSock Library Init. */ if( !WSAStartup( MAKEWORD( 2, 2 ), &Data ) ) { diff --git a/src/vlc.c b/src/vlc.c index 2cf02bb30f..8b90f73794 100644 --- a/src/vlc.c +++ b/src/vlc.c @@ -38,6 +38,11 @@ #include +#ifdef WIN32 +extern void __wgetmainargs(int *argc, wchar_t ***wargv, wchar_t ***wenviron, + int expand_wildcards, int *startupinfo); +#endif + /***************************************************************************** * Local prototypes. *****************************************************************************/ @@ -98,6 +103,20 @@ int main( int i_argc, char *ppsz_argv[] ) signal( SIGPIPE, SIG_IGN ); #endif +#ifdef WIN32 + /* Replace argv[1..n] with unicode for Windows NT and above */ + if( GetVersion() < 0x80000000 ) + { + wchar_t **wargv, **wenvp; + int i,i_wargc; + int si = { 0 }; + __wgetmainargs(&i_wargc, &wargv, &wenvp, 0, &si); + + for( i = 1; i < i_wargc; i++ ) + ppsz_argv[i] = FromWide( wargv[i] ); + } +#endif + /* Initialize libvlc */ i_ret = VLC_Init( 0, i_argc, ppsz_argv ); if( i_ret < 0 )