From: RĂ©mi Denis-Courmont Date: Sun, 17 Jan 2010 19:55:39 +0000 (+0200) Subject: Load the command line into the LibVLC object variables (fixes #1941)... X-Git-Tag: 1.1.0-ff~1141 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=31b9f7d403ded21f17f47c375df40f7c24ad9149;p=vlc Load the command line into the LibVLC object variables (fixes #1941)... ...instead of the configuration. As a side effect, the command line parameter should not be visible in the preferences, and more importantly not be saved as part of the persistent configuration (fixes #1428) (and really fixes older #1106). We might be able to remove a few "dummy" change_unsaveable(). Some of them really were just work-arounds for this bug. In principle, we could possibly remove all of them as long as we keep add_internal(). Note that this commit will render any command line option inoperant if it is read with config_Get*() instead of var_Inherit*() or var_*Get*(). I already fixed the most commonly used occurences, but there are some left, especially inside plugins. --- diff --git a/src/config/cmdline.c b/src/config/cmdline.c index 5f2a6ab8f7..0172668bb9 100644 --- a/src/config/cmdline.c +++ b/src/config/cmdline.c @@ -217,7 +217,7 @@ int __config_LoadCmdLine( vlc_object_t *p_this, int *pi_argc, if( i_cmd == 0 ) { module_config_t *p_conf; - char *psz_name = (char *)p_longopts[i_index].name; + const char *psz_name = p_longopts[i_index].name; /* Check if we deal with a --nofoo or --no-foo long option */ if( flag ) psz_name += psz_name[2] == '-' ? 3 : 2; @@ -273,19 +273,26 @@ int __config_LoadCmdLine( vlc_object_t *p_this, int *pi_argc, case CONFIG_ITEM_MODULE_LIST: case CONFIG_ITEM_MODULE_LIST_CAT: case CONFIG_ITEM_MODULE_CAT: - config_PutPsz( p_this, psz_name, optarg ); + var_Create( p_this, psz_name, VLC_VAR_STRING ); + var_SetString( p_this, psz_name, optarg ); break; case CONFIG_ITEM_INTEGER: - config_PutInt( p_this, psz_name, strtol(optarg, 0, 0)); + var_Create( p_this, psz_name, VLC_VAR_INTEGER ); + var_SetInteger( p_this, psz_name, + strtol(optarg, NULL, 0)); break; case CONFIG_ITEM_FLOAT: - config_PutFloat( p_this, psz_name, us_atof(optarg) ); + var_Create( p_this, psz_name, VLC_VAR_FLOAT ); + var_SetFloat( p_this, psz_name, us_atof(optarg) ); break; case CONFIG_ITEM_KEY: - config_PutInt( p_this, psz_name, ConfigStringToKey( optarg ) ); + var_Create( p_this, psz_name, VLC_VAR_INTEGER ); + var_SetInteger( p_this, psz_name, + ConfigStringToKey( optarg ) ); break; case CONFIG_ITEM_BOOL: - config_PutInt( p_this, psz_name, !flag ); + var_Create( p_this, psz_name, VLC_VAR_BOOL ); + var_SetBool( p_this, psz_name, !flag ); break; } continue; @@ -295,6 +302,7 @@ int __config_LoadCmdLine( vlc_object_t *p_this, int *pi_argc, /* A short option has been recognized */ if( pp_shortopts[i_cmd] != NULL ) { + const char *name = pp_shortopts[i_cmd]->psz_name; switch( pp_shortopts[i_cmd]->i_type ) { case CONFIG_ITEM_STRING: @@ -305,9 +313,11 @@ int __config_LoadCmdLine( vlc_object_t *p_this, int *pi_argc, case CONFIG_ITEM_MODULE_CAT: case CONFIG_ITEM_MODULE_LIST: case CONFIG_ITEM_MODULE_LIST_CAT: - config_PutPsz( p_this, pp_shortopts[i_cmd]->psz_name, optarg ); + var_Create( p_this, name, VLC_VAR_STRING ); + var_SetString( p_this, name, optarg ); break; case CONFIG_ITEM_INTEGER: + var_Create( p_this, name, VLC_VAR_INTEGER ); if( i_cmd == 'v' ) { if( optarg ) @@ -330,17 +340,17 @@ int __config_LoadCmdLine( vlc_object_t *p_this, int *pi_argc, { i_verbose++; /* -v */ } - config_PutInt( p_this, pp_shortopts[i_cmd]->psz_name, - i_verbose ); + var_SetInteger( p_this, name, i_verbose ); } else { - config_PutInt( p_this, pp_shortopts[i_cmd]->psz_name, - strtol(optarg, 0, 0) ); + var_SetInteger( p_this, name, + strtol(optarg, NULL, 0) ); } break; case CONFIG_ITEM_BOOL: - config_PutInt( p_this, pp_shortopts[i_cmd]->psz_name, 1 ); + var_Create( p_this, name, VLC_VAR_BOOL ); + var_SetBool( p_this, name, true ); break; }