X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fvlc.c;h=9b679a3b6e4c9072f01514858d1bd1cbcda1a334;hb=3c5a07afdaefb0d5ec31f801202c49272c193faf;hp=a23d2fc0a2a08df0d15749a2bd7b1a29a544dacd;hpb=b44e7cc21fd5d9eab3378b8d277135b3975b2b15;p=vlc diff --git a/src/vlc.c b/src/vlc.c index a23d2fc0a2..9b679a3b6e 100644 --- a/src/vlc.c +++ b/src/vlc.c @@ -32,6 +32,10 @@ #include /* putenv(), strtol(), */ #include +/* Explicit HACK */ +extern void LocaleFree (const char *); +extern char *FromLocale (const char *); + /***************************************************************************** * Local prototypes. @@ -89,7 +93,7 @@ int main( int i_argc, char *ppsz_argv[] ) i_ret = VLC_Create(); if( i_ret < 0 ) { - return i_ret; + return -i_ret; } #if !defined(WIN32) && !defined(UNDER_CE) @@ -143,7 +147,7 @@ int main( int i_argc, char *ppsz_argv[] ) else { /* failed!, quit */ - return -1; + return 1; } } else @@ -154,18 +158,24 @@ int main( int i_argc, char *ppsz_argv[] ) else { /* failed!, quit */ - return -1; + return 1; } } } + else #endif + { + for (int i = 0; i < i_argc; i++) + if ((ppsz_argv[i] = FromLocale (ppsz_argv[i])) == NULL) + return 1; // BOOM! + } /* Initialize libvlc */ i_ret = VLC_Init( 0, i_argc, ppsz_argv ); if( i_ret < 0 ) { VLC_Destroy( 0 ); - return i_ret == VLC_EEXITSUCCESS ? 0 : i_ret; + return i_ret == VLC_EEXITSUCCESS ? 0 : -i_ret; } i_ret = VLC_AddIntf( 0, NULL, VLC_TRUE, VLC_TRUE ); @@ -178,6 +188,9 @@ int main( int i_argc, char *ppsz_argv[] ) /* Destroy the libvlc structure */ VLC_Destroy( 0 ); + for (int i = 0; i < i_argc; i++) + LocaleFree (ppsz_argv[i]); + #if !defined(WIN32) && !defined(UNDER_CE) pthread_cancel (sigth); # ifdef __APPLE__ @@ -189,7 +202,7 @@ int main( int i_argc, char *ppsz_argv[] ) pthread_join (sigth, NULL); #endif - return i_ret; + return -i_ret; } #if !defined(WIN32) && !defined(UNDER_CE) @@ -253,7 +266,7 @@ static void KillOnce (void) static void Kill (void) { static pthread_once_t once = PTHREAD_ONCE_INIT; - pthread_once (KillOnce); + pthread_once (&once, KillOnce); } #endif