X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Flibvlc-common.c;h=8803b76ab71092076dc9c350f329b9ef4d2b2a95;hb=e65e71975462203720ed5620a10c97037f90076a;hp=eb4f93fb1938a9f139d42451d597de1964c3ea54;hpb=548d322716d7fc57afab630bef383c8a033cae9f;p=vlc diff --git a/src/libvlc-common.c b/src/libvlc-common.c index eb4f93fb19..8803b76ab7 100644 --- a/src/libvlc-common.c +++ b/src/libvlc-common.c @@ -37,7 +37,7 @@ #include #include "modules/modules.h" -#include "modules/configuration.h" +#include "config/config.h" #include /* ENOMEM */ #include /* sprintf() */ @@ -105,7 +105,7 @@ static volatile unsigned int i_instances = 0; static void SetLanguage ( char const * ); #endif static inline int LoadMessages (void); -static int GetFilenames ( libvlc_int_t *, int, char *[] ); +static int GetFilenames ( libvlc_int_t *, int, const char *[] ); static void Help ( libvlc_int_t *, char const *psz_help_name ); static void Usage ( libvlc_int_t *, char const *psz_module_name ); static void ListModules ( libvlc_int_t *, vlc_bool_t ); @@ -201,7 +201,10 @@ libvlc_int_t * libvlc_InternalCreate( void ) /* Find verbosity from VLC_VERBOSE environment variable */ psz_env = getenv( "VLC_VERBOSE" ); - p_libvlc->i_verbose = psz_env ? atoi( psz_env ) : -1; + if( psz_env != NULL ) + p_libvlc->i_verbose = atoi( psz_env ); + else + p_libvlc->i_verbose = 3; #if defined( HAVE_ISATTY ) && !defined( WIN32 ) p_libvlc->b_color = isatty( 2 ); /* 2 is for stderr */ #else @@ -211,6 +214,8 @@ libvlc_int_t * libvlc_InternalCreate( void ) /* Announce who we are - Do it only for first instance ? */ msg_Dbg( p_libvlc, COPYRIGHT_MESSAGE ); msg_Dbg( p_libvlc, "libvlc was configured with %s", CONFIGURE_LINE ); + if( strcmp( p_libvlc->psz_object_name, "cvlc" ) ) /* Not running with cvlc */ + msg_Info( p_libvlc, "Running vlc with the default interface. Use 'cvlc' to use vlc without interface."); /* Initialize mutexes */ vlc_mutex_init( p_libvlc, &p_libvlc->config_lock ); @@ -232,7 +237,8 @@ libvlc_int_t * libvlc_InternalCreate( void ) * - message queue, module bank and playlist initialization * - configuration and commandline parsing */ -int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc, char *ppsz_argv[] ) +int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc, + const char *ppsz_argv[] ) { char p_capabilities[200]; char * p_tmp = NULL; @@ -241,7 +247,6 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc, char *ppsz_argv[] ) char * psz_control = NULL; vlc_bool_t b_exit = VLC_FALSE; int i_ret = VLC_EEXIT; - module_t *p_help_module = NULL; playlist_t *p_playlist = NULL; vlc_value_t val; #if defined( ENABLE_NLS ) \ @@ -257,11 +262,11 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc, char *ppsz_argv[] ) /* Get the executable name (similar to the basename command) */ if( i_argc > 0 ) { - p_libvlc->psz_object_name = p_tmp = ppsz_argv[ 0 ]; - while( *p_tmp ) + const char *exe = p_libvlc->psz_object_name = ppsz_argv[0]; + while( *exe ) { - if( *p_tmp == '/' ) p_libvlc->psz_object_name = ++p_tmp; - else ++p_tmp; + if( *exe++ == '/' ) + p_libvlc->psz_object_name = exe; } } else @@ -283,24 +288,8 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc, char *ppsz_argv[] ) * options) */ module_InitBank( p_libvlc ); - /* Hack: insert the help module here */ - p_help_module = vlc_module_create( VLC_OBJECT(p_libvlc) ); - if( p_help_module == NULL ) - { - module_EndBank( p_libvlc ); - return VLC_EGENERIC; - } - p_help_module->psz_object_name = "help"; - p_help_module->psz_longname = N_("Help options"); - config_Duplicate( p_help_module, libvlc_config, libvlc_config_count ); - vlc_object_attach( p_help_module, libvlc_global.p_module_bank ); - /* End hack */ - if( config_LoadCmdLine( p_libvlc, &i_argc, ppsz_argv, VLC_TRUE ) ) { - vlc_object_detach( p_help_module ); - config_Free( p_help_module ); - vlc_object_destroy( p_help_module ); module_EndBank( p_libvlc ); return VLC_EGENERIC; } @@ -333,10 +322,6 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc, char *ppsz_argv[] ) libvlc_global.p_module_bank->b_cache_delete = VLC_TRUE; } - /* Hack: remove the help module here */ - vlc_object_detach( p_help_module ); - /* End hack */ - /* Will be re-done properly later on */ p_libvlc->i_verbose = config_GetInt( p_libvlc, "verbose" ); @@ -407,8 +392,6 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc, char *ppsz_argv[] ) if( b_exit ) { - config_Free( p_help_module ); - vlc_object_destroy( p_help_module ); module_EndBank( p_libvlc ); return i_ret; } @@ -460,10 +443,6 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc, char *ppsz_argv[] ) msg_Dbg( p_libvlc, "module bank initialized, found %i modules", libvlc_global.p_module_bank->i_children ); - /* Hack: insert the help module here */ - vlc_object_attach( p_help_module, libvlc_global.p_module_bank ); - /* End hack */ - /* Check for help on modules */ if( (p_tmp = config_GetPsz( p_libvlc, "module" )) ) { @@ -496,29 +475,19 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc, char *ppsz_argv[] ) /* Check for config file options */ if( config_GetInt( p_libvlc, "reset-config" ) ) { - vlc_object_detach( p_help_module ); config_ResetAll( p_libvlc ); config_LoadCmdLine( p_libvlc, &i_argc, ppsz_argv, VLC_TRUE ); config_SaveConfigFile( p_libvlc, NULL ); - vlc_object_attach( p_help_module, libvlc_global.p_module_bank ); } if( config_GetInt( p_libvlc, "save-config" ) ) { - vlc_object_detach( p_help_module ); config_LoadConfigFile( p_libvlc, NULL ); config_LoadCmdLine( p_libvlc, &i_argc, ppsz_argv, VLC_TRUE ); config_SaveConfigFile( p_libvlc, NULL ); - vlc_object_attach( p_help_module, libvlc_global.p_module_bank ); } - /* Hack: remove the help module here */ - vlc_object_detach( p_help_module ); - /* End hack */ - if( b_exit ) { - config_Free( p_help_module ); - vlc_object_destroy( p_help_module ); module_EndBank( p_libvlc ); return i_ret; } @@ -533,10 +502,6 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc, char *ppsz_argv[] ) */ config_LoadConfigFile( p_libvlc, NULL ); - /* Hack: insert the help module here */ - vlc_object_attach( p_help_module, libvlc_global.p_module_bank ); - /* End hack */ - /* * Override configuration with command line settings */ @@ -549,19 +514,10 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc, char *ppsz_argv[] ) "that they are valid.\n" ); PauseConsole(); #endif - vlc_object_detach( p_help_module ); - config_Free( p_help_module ); - vlc_object_destroy( p_help_module ); module_EndBank( p_libvlc ); return VLC_EGENERIC; } - /* Hack: remove the help module here */ - vlc_object_detach( p_help_module ); - config_Free( p_help_module ); - vlc_object_destroy( p_help_module ); - /* End hack */ - /* * System specific configuration */ @@ -815,7 +771,7 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc, char *ppsz_argv[] ) } else if( psz_control && *psz_control ) { - if( psz_modules ) free( psz_modules ); + free( psz_modules ); psz_modules = strdup( psz_control ); } @@ -838,10 +794,8 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc, char *ppsz_argv[] ) free( psz_temp ); } } - if ( psz_modules ) - { - free( psz_modules ); - } + free( psz_modules ); + free( psz_control ); /* * Always load the hotkeys interface if it exists @@ -853,6 +807,11 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc, char *ppsz_argv[] ) * we do it only when playlist exists, because dbus module needs it */ if( config_GetInt( p_libvlc, "one-instance" ) ) VLC_AddIntf( 0, "dbus,none", VLC_FALSE, VLC_FALSE ); + + /* Prevents the power management daemon to suspend the computer + * when VLC is active */ + if( config_GetInt( p_libvlc, "inhibit" ) ) + VLC_AddIntf( 0, "inhibit,none", VLC_FALSE, VLC_FALSE ); #endif /* @@ -1129,7 +1088,7 @@ int libvlc_InternalAddIntf( libvlc_int_t *p_libvlc, /* Try to run the interface */ p_intf->b_play = b_play; i_err = intf_RunThread( p_intf ); - if( i_err ) + if( i_err || p_intf->b_should_run_on_first_thread ) { vlc_object_detach( p_intf ); intf_Destroy( p_intf ); @@ -1232,7 +1191,7 @@ static inline int LoadMessages (void) * 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, char *ppsz_argv[] ) +static int GetFilenames( libvlc_int_t *p_vlc, int i_argc, const char *ppsz_argv[] ) { int i_opt, i_options; @@ -1253,7 +1212,7 @@ static int GetFilenames( libvlc_int_t *p_vlc, int i_argc, char *ppsz_argv[] ) * unnecessary lookups. */ VLC_AddTarget( p_vlc->i_object_id, ppsz_argv[i_opt], - (char const **)( i_options ? &ppsz_argv[i_opt + 1] : + ( i_options ? &ppsz_argv[i_opt + 1] : NULL ), i_options, PLAYLIST_INSERT, 0 ); } @@ -1323,6 +1282,7 @@ static void Usage( libvlc_int_t *p_this, char const *psz_module_name ) # define WHITE COL(37) # define GRAY "\033[0m" #define COLOR_FORMAT_STRING (WHITE" %s --%s"YELLOW"%s%s%s%s%s%s "GRAY) +#define COLOR_FORMAT_STRING_BOOL (WHITE" %s --%s%s%s%s%s%s%s "GRAY) #define LINE_START 8 #define PADDING_SPACES 25 @@ -1335,6 +1295,7 @@ static void Usage( libvlc_int_t *p_this, char const *psz_module_name ) char psz_spaces_text[PADDING_SPACES+LINE_START+1]; char psz_spaces_longtext[LINE_START+3]; char psz_format[sizeof(COLOR_FORMAT_STRING)]; + char psz_format_bool[sizeof(COLOR_FORMAT_STRING_BOOL)]; char psz_buffer[10000]; char psz_short[4]; int i_index; @@ -1351,9 +1312,15 @@ static void Usage( libvlc_int_t *p_this, char const *psz_module_name ) psz_spaces_longtext[LINE_START+2] = '\0'; if( b_color ) + { strcpy( psz_format, COLOR_FORMAT_STRING ); + strcpy( psz_format_bool, COLOR_FORMAT_STRING_BOOL ); + } else + { strcpy( psz_format, FORMAT_STRING ); + strcpy( psz_format_bool, FORMAT_STRING ); + } /* List all modules */ p_list = vlc_list_find( p_this, VLC_OBJECT_MODULE, FIND_ANYWHERE ); @@ -1437,8 +1404,8 @@ static void Usage( libvlc_int_t *p_this, char const *psz_module_name ) signed int i; size_t i_cur_width; - /* Skip deprecated options */ - if( p_item->psz_current ) + /* Skip removed options */ + if( p_item->b_removed ) { continue; } @@ -1600,9 +1567,9 @@ static void Usage( libvlc_int_t *p_this, char const *psz_module_name ) if( p_item->i_type == CONFIG_ITEM_BOOL && !b_help_module ) { - utf8_fprintf( stdout, psz_format, psz_short, p_item->psz_name, - psz_prefix, p_item->psz_name, psz_bra, psz_type, - psz_ket, psz_spaces ); + utf8_fprintf( stdout, psz_format_bool, psz_short, + p_item->psz_name, psz_prefix, p_item->psz_name, + psz_bra, psz_type, psz_ket, psz_spaces ); } else { @@ -1792,14 +1759,6 @@ static void ListModules( libvlc_int_t *p_this, vlc_bool_t b_verbose ) p_parser->psz_capability, p_parser->i_score ); } - if( p_parser->psz_program ) - { - if( b_color ) - utf8_fprintf( stdout, YELLOW " p %s\n"GRAY, - p_parser->psz_program ); - else - utf8_fprintf( stdout, " p %s\n", p_parser->psz_program ); - } } psz_spaces[i] = ' ';