X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fconfig%2Fcmdline.c;h=4899129088da9d81ebc40fc33b1c3af1e1ae9c0e;hb=19933fe7a674ee6d1253821a656507a6a712f8d0;hp=591c1a0ff615ea3d4a74ca72eb1cb72213e5b350;hpb=3655c1c6edfa65212b263fa330e0bf4809eeb5d1;p=vlc diff --git a/src/config/cmdline.c b/src/config/cmdline.c index 591c1a0ff6..4899129088 100644 --- a/src/config/cmdline.c +++ b/src/config/cmdline.c @@ -21,20 +21,13 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ -#include -#include "../libvlc.h" -#include "vlc_keys.h" -#include "vlc_charset.h" - -#include /* errno */ - -#ifdef HAVE_LIMITS_H -# include +#ifdef HAVE_CONFIG_H +# include "config.h" #endif -#ifdef HAVE_UNISTD_H -# include /* getuid() */ -#endif +#include +#include "../libvlc.h" +#include "vlc_keys.h" #ifdef HAVE_GETOPT_LONG # ifdef HAVE_GETOPT_H @@ -44,26 +37,11 @@ # include "../extras/getopt.h" #endif -#if defined(HAVE_GETPWUID) -# include /* getpwuid() */ -#endif - -#if defined( HAVE_SYS_STAT_H ) -# include -#endif -#if defined( HAVE_SYS_TYPES_H ) -# include -#endif -#if defined( WIN32 ) -# if !defined( UNDER_CE ) -# include -# endif -#include -#endif - -#include "config.h" +#include "configuration.h" #include "modules/modules.h" +#include + /***************************************************************************** * config_LoadCmdLine: parse command line ***************************************************************************** @@ -75,22 +53,19 @@ *****************************************************************************/ int __config_LoadCmdLine( vlc_object_t *p_this, int *pi_argc, const char *ppsz_argv[], - vlc_bool_t b_ignore_errors ) + bool b_ignore_errors ) { int i_cmd, i_index, i_opts, i_shortopts, flag, i_verbose = 0; module_t *p_parser; vlc_list_t *p_list; struct option *p_longopts; int i_modules_index; + const char **argv_copy = NULL; /* Short options */ module_config_t *pp_shortopts[256]; char *psz_shortopts; - /* Set default configuration and copy arguments */ - p_this->p_libvlc->i_argc = *pi_argc; - p_this->p_libvlc->ppsz_argv = ppsz_argv; - #ifdef __APPLE__ /* When VLC.app is run by double clicking in Mac OS X, the 2nd arg * is the PSN - process serial number (a unique PID-ish thingie) @@ -101,12 +76,10 @@ int __config_LoadCmdLine( vlc_object_t *p_this, int *pi_argc, /* GDMF!... I can't do this or else the MacOSX window server will * not pick up the PSN and not register the app and we crash... * hence the following kludge otherwise we'll get confused w/ argv[1] - * being an input file name */ -#if 0 - ppsz_argv[ 1 ] = NULL; -#endif - *pi_argc = *pi_argc - 1; - pi_argc--; + * being an input file name. + * As there won't be any more args to parse, just exit. */ + assert( *pi_argc == 2 ); + *pi_argc = 1; return 0; } #endif @@ -134,7 +107,6 @@ int __config_LoadCmdLine( vlc_object_t *p_this, int *pi_argc, p_longopts = malloc( sizeof(struct option) * (i_opts + 1) ); if( p_longopts == NULL ) { - msg_Err( p_this, "out of memory" ); vlc_list_release( p_list ); return -1; } @@ -142,7 +114,6 @@ int __config_LoadCmdLine( vlc_object_t *p_this, int *pi_argc, psz_shortopts = malloc( sizeof( char ) * (2 * i_opts + 1) ); if( psz_shortopts == NULL ) { - msg_Err( p_this, "out of memory" ); free( p_longopts ); vlc_list_release( p_list ); return -1; @@ -153,17 +124,16 @@ int __config_LoadCmdLine( vlc_object_t *p_this, int *pi_argc, * us, ignoring the arity of the options */ if( b_ignore_errors ) { - ppsz_argv = (const char**)malloc( *pi_argc * sizeof(char *) ); - if( ppsz_argv == NULL ) + argv_copy = (const char**)malloc( *pi_argc * sizeof(char *) ); + if( argv_copy == NULL ) { - msg_Err( p_this, "out of memory" ); free( psz_shortopts ); free( p_longopts ); vlc_list_release( p_list ); return -1; } - memcpy( ppsz_argv, p_this->p_libvlc->ppsz_argv, - *pi_argc * sizeof(char *) ); + memcpy( argv_copy, ppsz_argv, *pi_argc * sizeof(char *) ); + ppsz_argv = argv_copy; } i_shortopts = 0; @@ -421,7 +391,7 @@ int __config_LoadCmdLine( vlc_object_t *p_this, int *pi_argc, free( (char *)p_longopts[i_index].name ); free( p_longopts ); free( psz_shortopts ); - if( b_ignore_errors ) free( ppsz_argv ); + free( argv_copy ); return 0; }