* configuration.c management of the modules configuration
*****************************************************************************
* Copyright (C) 2001 VideoLAN
- * $Id: configuration.c,v 1.54 2003/04/07 11:48:51 gbazin Exp $
+ * $Id: configuration.c,v 1.58 2003/06/27 13:38:54 sam Exp $
*
* Authors: Gildas Bazin <gbazin@netcourrier.com>
*
/* free old string */
if( p_config->psz_value ) free( p_config->psz_value );
- if( psz_value ) p_config->psz_value = strdup( psz_value );
+ if( psz_value && *psz_value ) p_config->psz_value = strdup( psz_value );
else p_config->psz_value = NULL;
vlc_mutex_unlock( p_config->p_lock );
p_module->p_config[i].i_type = p_orig[i].i_type;
p_module->p_config[i].i_short = p_orig[i].i_short;
p_module->p_config[i].i_value = p_orig[i].i_value;
+ p_module->p_config[i].i_value_orig = p_orig[i].i_value;
p_module->p_config[i].i_min = p_orig[i].i_min;
p_module->p_config[i].i_max = p_orig[i].i_max;
p_module->p_config[i].f_value = p_orig[i].f_value;
+ p_module->p_config[i].f_value_orig = p_orig[i].f_value;
p_module->p_config[i].f_min = p_orig[i].f_min;
p_module->p_config[i].f_max = p_orig[i].f_max;
p_module->p_config[i].b_dirty = p_orig[i].b_dirty;
strdup( _(p_orig[i].psz_longtext) ) : NULL;
p_module->p_config[i].psz_value = p_orig[i].psz_value ?
strdup( p_orig[i].psz_value ) : NULL;
+ p_module->p_config[i].psz_value_orig = p_orig[i].psz_value ?
+ strdup( p_orig[i].psz_value ) : NULL;
p_module->p_config[i].p_lock = &p_module->object_lock;
if( p_item->psz_value )
free( p_item->psz_value );
+ if( p_item->psz_value_orig )
+ free( p_item->psz_value_orig );
+
if( p_item->ppsz_list )
{
for( i = 0; p_item->ppsz_list[i]; i++ )
}
}
+/*****************************************************************************
+ * config_ResetAll: reset the configuration data for all the modules.
+ *****************************************************************************/
+void __config_ResetAll( vlc_object_t *p_this )
+{
+ int i_index, i;
+ vlc_list_t *p_list;
+ module_t *p_module;
+
+ /* Acquire config file lock */
+ vlc_mutex_lock( &p_this->p_vlc->config_lock );
+
+ p_list = vlc_list_find( p_this, VLC_OBJECT_MODULE, FIND_ANYWHERE );
+
+ for( i_index = 0; i_index < p_list->i_count; i_index++ )
+ {
+ p_module = (module_t *)p_list->p_values[i_index].p_object ;
+ if( p_module->b_submodule ) continue;
+
+ for( i = 0; p_module->p_config[i].i_type != CONFIG_HINT_END; i++ )
+ {
+ p_module->p_config[i].i_value = p_module->p_config[i].i_value_orig;
+ p_module->p_config[i].f_value = p_module->p_config[i].f_value_orig;
+ if( p_module->p_config[i].psz_value )
+ free( p_module->p_config[i].psz_value );
+ p_module->p_config[i].psz_value =
+ p_module->p_config[i].psz_value_orig ?
+ strdup( p_module->p_config[i].psz_value_orig ) : NULL;
+ }
+ }
+
+ vlc_list_release( p_list );
+ vlc_mutex_unlock( &p_this->p_vlc->config_lock );
+}
+
/*****************************************************************************
* config_LoadConfigFile: loads the configuration file.
*****************************************************************************
fprintf( file, "# %s (%s)\n", p_item->psz_text,
(p_item->i_type == CONFIG_ITEM_BOOL) ?
_("boolean") : _("integer") );
+ if( p_item->i_value == p_item->i_value_orig )
+ fprintf( file, "#" );
fprintf( file, "%s=%i\n", p_item->psz_name, p_item->i_value );
break;
if( p_item->psz_text )
fprintf( file, "# %s (%s)\n", p_item->psz_text,
_("float") );
+ if( p_item->f_value == p_item->f_value_orig )
+ fprintf( file, "#" );
fprintf( file, "%s=%f\n", p_item->psz_name,
(double)p_item->f_value );
break;
if( p_item->psz_text )
fprintf( file, "# %s (%s)\n", p_item->psz_text,
_("string") );
+ if( (!p_item->psz_value && !p_item->psz_value_orig) ||
+ (p_item->psz_value && p_item->psz_value_orig &&
+ !strcmp( p_item->psz_value, p_item->psz_value_orig )) )
+ fprintf( file, "#" );
fprintf( file, "%s=%s\n", p_item->psz_name,
p_item->psz_value ? p_item->psz_value : "" );
}
HINSTANCE shfolder_dll;
SHGETFOLDERPATH SHGetFolderPath ;
- /* load the shell32 dll to retreive SHGetFolderPath */
+ /* load the shfolder dll to retrieve SHGetFolderPath */
if( ( shfolder_dll = LoadLibrary("shfolder.dll") ) != NULL )
{
SHGetFolderPath = (void *)GetProcAddress( shfolder_dll,