From 31b9f7d403ded21f17f47c375df40f7c24ad9149 Mon Sep 17 00:00:00 2001 From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= Date: Sun, 17 Jan 2010 21:55:39 +0200 Subject: [PATCH] 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. --- src/config/cmdline.c | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) 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; } -- 2.39.2