Commit bb5f959c authored by Marian Durkovic's avatar Marian Durkovic

Support non-ANSI CP characters from command line / click on media file

parent 4ab7aa39
...@@ -111,6 +111,8 @@ static void Version ( void ); ...@@ -111,6 +111,8 @@ static void Version ( void );
#ifdef WIN32 #ifdef WIN32
static void ShowConsole ( vlc_bool_t ); static void ShowConsole ( vlc_bool_t );
static void PauseConsole ( void ); static void PauseConsole ( void );
extern void __wgetmainargs(int *argc, wchar_t ***wargv, wchar_t ***wenviron,
int expand_wildcards, int *startupinfo);
#endif #endif
static int ConsoleWidth ( void ); static int ConsoleWidth ( void );
...@@ -1042,6 +1044,17 @@ static int GetFilenames( libvlc_int_t *p_vlc, int i_argc, char *ppsz_argv[] ) ...@@ -1042,6 +1044,17 @@ static int GetFilenames( libvlc_int_t *p_vlc, int i_argc, char *ppsz_argv[] )
{ {
int i_opt, i_options; int i_opt, i_options;
#ifdef WIN32
wchar_t **wargv, **wenvp;
int si = { 0 };
if( GetVersion() < 0x80000000 )
{
/* fetch unicode argv[] for Windows NT and above */
__wgetmainargs(&i_opt, &wargv, &wenvp, 0, &si);
}
#endif
/* We assume that the remaining parameters are filenames /* We assume that the remaining parameters are filenames
* and their input options */ * and their input options */
for( i_opt = i_argc - 1; i_opt >= optind; i_opt-- ) for( i_opt = i_argc - 1; i_opt >= optind; i_opt-- )
...@@ -1059,6 +1072,20 @@ static int GetFilenames( libvlc_int_t *p_vlc, int i_argc, char *ppsz_argv[] ) ...@@ -1059,6 +1072,20 @@ static int GetFilenames( libvlc_int_t *p_vlc, int i_argc, char *ppsz_argv[] )
/* TODO: write an internal function of this one, to avoid /* TODO: write an internal function of this one, to avoid
* unnecessary lookups. */ * unnecessary lookups. */
/* FIXME: should we convert options to UTF-8 as well ?? */ /* FIXME: should we convert options to UTF-8 as well ?? */
#ifdef WIN32
if( GetVersion() < 0x80000000 )
{
psz_target = FromWide( wargv[ 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 );
free( psz_target );
}
else
#endif
{
psz_target = FromLocale( ppsz_argv[ i_opt ] ); psz_target = FromLocale( ppsz_argv[ i_opt ] );
VLC_AddTarget( p_vlc->i_object_id, psz_target, VLC_AddTarget( p_vlc->i_object_id, psz_target,
(char const **)( i_options ? &ppsz_argv[i_opt + 1] : (char const **)( i_options ? &ppsz_argv[i_opt + 1] :
...@@ -1066,6 +1093,7 @@ static int GetFilenames( libvlc_int_t *p_vlc, int i_argc, char *ppsz_argv[] ) ...@@ -1066,6 +1093,7 @@ static int GetFilenames( libvlc_int_t *p_vlc, int i_argc, char *ppsz_argv[] )
PLAYLIST_INSERT, 0 ); PLAYLIST_INSERT, 0 );
LocaleFree( psz_target ); LocaleFree( psz_target );
} }
}
return VLC_SUCCESS; return VLC_SUCCESS;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment