/*****************************************************************************
* configuration.c management of the modules configuration
*****************************************************************************
- * Copyright (C) 2001 VideoLAN
- * $Id: configuration.c,v 1.70 2003/11/08 18:23:40 titer Exp $
+ * Copyright (C) 2001-2004 VideoLAN
+ * $Id: configuration.c,v 1.76 2004/01/29 17:04:01 gbazin Exp $
*
* Authors: Gildas Bazin <gbazin@netcourrier.com>
*
#if defined( HAVE_SYS_TYPES_H )
# include <sys/types.h>
#endif
-#if defined( WIN32 ) && !defined( UNDER_CE )
-# include <direct.h>
+#if defined( WIN32 )
+# if !defined( UNDER_CE )
+# include <direct.h>
+# endif
+#include <tchar.h>
#endif
{
p_module->p_config[i] = p_orig[i];
+ p_module->p_config[i].i_value_orig = p_orig[i].i_value;
+ p_module->p_config[i].f_value_orig = p_orig[i].f_value;
+
p_module->p_config[i].psz_type = p_orig[i].psz_type ?
strdup( p_orig[i].psz_type ) : NULL;
p_module->p_config[i].psz_name = p_orig[i].psz_name ?
}
}
+ /* duplicate the actions list */
+ if( p_orig[i].i_action )
+ {
+ int j;
+
+ p_module->p_config[i].ppf_action =
+ malloc( p_orig[i].i_action * sizeof(void *) );
+ p_module->p_config[i].ppsz_action_text =
+ malloc( p_orig[i].i_action * sizeof(char *) );
+
+ for( j = 0; j < p_orig[i].i_action; j++ )
+ {
+ p_module->p_config[i].ppf_action[j] =
+ p_orig[i].ppf_action[j];
+ p_module->p_config[i].ppsz_action_text[j] =
+ p_orig[i].ppsz_action_text[j] ?
+ strdup( p_orig[i].ppsz_action_text[j] ) : NULL;
+ }
+ }
+
p_module->p_config[i].pf_callback = p_orig[i].pf_callback;
}
}
if( p_item->ppsz_list_text ) free( p_item->ppsz_list_text );
if( p_item->pi_list ) free( p_item->pi_list );
}
+
+ if( p_item->i_action )
+ {
+ for( i = 0; i < p_item->i_action; i++ )
+ {
+ if( p_item->ppsz_action_text[i] )
+ free( p_item->ppsz_action_text[i] );
+ }
+ if( p_item->ppf_action ) free( p_item->ppf_action );
+ if( p_item->ppsz_action_text ) free( p_item->ppsz_action_text );
+ }
}
free( p_module->p_config );
if( p_item->psz_text )
fprintf( file, "# %s (%s)\n", p_item->psz_text,
_("key") );
+ if( p_item->i_value == p_item->i_value_orig )
+ fprintf( file, "#" );
psz_key = ConfigKeyToString( p_item->i_value );
fprintf( file, "%s=%s\n", p_item->psz_name,
psz_key ? psz_key : "" );
if ( psz_key ) free( psz_key );
break;
-
+
case CONFIG_ITEM_FLOAT:
if( p_item->psz_text )
fprintf( file, "# %s (%s)\n", p_item->psz_text,
#if defined(WIN32) || defined(UNDER_CE)
typedef HRESULT (WINAPI *SHGETFOLDERPATH)( HWND, int, HANDLE, DWORD,
- LPTSTR );
+ LPSTR );
# define CSIDL_FLAG_CREATE 0x8000
# define CSIDL_APPDATA 0x1A
# define SHGFP_TYPE_CURRENT 0
SHGETFOLDERPATH SHGetFolderPath ;
/* load the shfolder dll to retrieve SHGetFolderPath */
- if( ( shfolder_dll = LoadLibrary("shfolder.dll") ) != NULL )
+ if( ( shfolder_dll = LoadLibrary( _T("SHFolder.dll") ) ) != NULL )
{
SHGetFolderPath = (void *)GetProcAddress( shfolder_dll,
- "SHGetFolderPathA" );
+ _T("SHGetFolderPathA") );
if ( SHGetFolderPath != NULL )
{
p_homedir = (char *)malloc( MAX_PATH );