( defined( HAVE_GETTEXT ) || defined( HAVE_INCLUDED_GETTEXT ) )
static void SetLanguage ( char const * );
#endif
-static int GetFilenames ( libvlc_int_t *, int, const char *[] );
+static void GetFilenames ( libvlc_int_t *, unsigned, const char *const [] );
static void Help ( libvlc_int_t *, char const *psz_help_name );
static void Usage ( libvlc_int_t *, char const *psz_search );
static void ListModules ( libvlc_int_t *, bool );
static int ConsoleWidth ( void );
static vlc_mutex_t global_lock = VLC_STATIC_MUTEX;
+extern const char psz_vlc_changeset[];
/**
* Allocate a libvlc instance, initialize global data if needed
* options) */
module_InitBank( p_libvlc );
- if( config_LoadCmdLine( p_libvlc, &i_argc, ppsz_argv, true ) )
+ if( config_LoadCmdLine( p_libvlc, i_argc, ppsz_argv, NULL ) )
{
module_EndBank( p_libvlc, false );
return VLC_EGENERIC;
/* Announce who we are - Do it only for first instance ? */
msg_Dbg( p_libvlc, "VLC media player - %s", VERSION_MESSAGE );
msg_Dbg( p_libvlc, "%s", COPYRIGHT_MESSAGE );
- msg_Dbg( p_libvlc, "libvlc was configured with %s", CONFIGURE_LINE );
+ msg_Dbg( p_libvlc, "revision %s", psz_vlc_changeset );
+ msg_Dbg( p_libvlc, "configured with %s", CONFIGURE_LINE );
/*xgettext: Translate "C" to the language code: "fr", "en_GB", "nl", "ru"... */
msg_Dbg( p_libvlc, "translation test: code is \"%s\"", _("C") );
/*
* Override configuration with command line settings
*/
- /* config_LoadCmdLine(), DBus (below) and Win32-specific use vlc_optind,
- * vlc_optarg and vlc_optopt globals. This is not thread-safe!! */
-#warning BUG!
- if( config_LoadCmdLine( p_libvlc, &i_argc, ppsz_argv, false ) )
+ int vlc_optind;
+ if( config_LoadCmdLine( p_libvlc, i_argc, ppsz_argv, &vlc_optind ) )
{
#ifdef WIN32
ShowConsole( false );
}
/* System specific configuration */
- system_Configure( p_libvlc, &i_argc, ppsz_argv );
+ system_Configure( p_libvlc, i_argc - vlc_optind, ppsz_argv + vlc_optind );
/* Add service discovery modules */
psz_modules = var_InheritString( p_libvlc, "services-discovery" );
#endif
/*
- * Get input filenames given as commandline arguments
+ * Get input filenames given as commandline arguments.
+ * We assume that the remaining parameters are filenames
+ * and their input options.
*/
- GetFilenames( p_libvlc, i_argc, ppsz_argv );
+ GetFilenames( p_libvlc, i_argc - vlc_optind, ppsz_argv + vlc_optind );
/*
* Get --open argument
* Parse command line for input files as well as their associated options.
* An option always follows its associated input and begins with a ":".
*****************************************************************************/
-static int GetFilenames( libvlc_int_t *p_vlc, int i_argc, const char *ppsz_argv[] )
+static void GetFilenames( libvlc_int_t *p_vlc, unsigned n,
+ const char *const args[] )
{
- int i_opt, i_options;
-
- /* We assume that the remaining parameters are filenames
- * and their input options */
- for( i_opt = i_argc - 1; i_opt >= vlc_optind; i_opt-- )
+ while( n > 0 )
{
- i_options = 0;
-
/* Count the input options */
- while( *ppsz_argv[ i_opt ] == ':' && i_opt > vlc_optind )
+ unsigned i_options = 0;
+
+ while( args[--n][0] == ':' )
{
i_options++;
- i_opt--;
+ if( n == 0 )
+ {
+ msg_Warn( p_vlc, "options %s without item", args[n] );
+ return; /* syntax!? */
+ }
}
/* TODO: write an internal function of this one, to avoid
* unnecessary lookups. */
- char *mrl = make_URI( ppsz_argv[i_opt] );
+ char *mrl = make_URI( args[n] );
if( !mrl )
continue;
playlist_AddExt( pl_Get( p_vlc ), mrl, NULL, PLAYLIST_INSERT,
- 0, -1, i_options, ( i_options ? &ppsz_argv[i_opt + 1] : NULL ),
+ 0, -1, i_options, ( i_options ? &args[n + 1] : NULL ),
VLC_INPUT_OPTION_TRUSTED, true, pl_Unlocked );
free( mrl );
}
-
- return VLC_SUCCESS;
}
/*****************************************************************************
*****************************************************************************/
static void Version( void )
{
- extern const char psz_vlc_changeset[];
#ifdef WIN32
ShowConsole( true );
#endif