/* The config file is organized in sections, one per module. Look for
* the interesting section ( a section is of the form [foo] ) */
fseek( file, 0L, SEEK_SET );
+
+ /* Look for UTF-8 Byte Order Mark */
+ char * (*convert) (const char *) = FromLocaleDup;
+ char bom[3];
+
+ if ((fread (bom, 1, 3, file) == 3)
+ && (memcmp (bom, "\xEF\xBB\xBF", 3) == 0))
+ convert = strdup;
+ else
+ rewind (file); // no BOM, rewind
+
while( fgets( line, 1024, file ) )
{
if( (line[0] == '[')
free( p_item->psz_value );
p_item->psz_value = *psz_option_value ?
- strdup( psz_option_value ) : NULL;
+ convert( psz_option_value ) : NULL;
if( p_item->psz_value_saved )
free( p_item->psz_value_saved );
(p_item->psz_value && p_item->psz_value_orig &&
strcmp(p_item->psz_value,p_item->psz_value_orig)))
p_item->psz_value_saved = p_item->psz_value ?
- strdup( p_item->psz_value ) : NULL;
+ convert( p_item->psz_value ) : NULL;
vlc_mutex_unlock( p_item->p_lock );