- if (IsConfigStringType (p_module->p_config[i].i_type))
- {
- free ((char *)p_module->p_config[i].value.psz);
- p_module->p_config[i].value.psz =
- strdupnull (p_module->p_config[i].orig.psz);
- }
- }
- }
-
- vlc_list_release( p_list );
- vlc_mutex_unlock( &priv->config_lock );
-}
-
-/**
- * config_GetDataDir: find directory where shared data is installed
- *
- * @return a string (always succeeds).
- */
-const char *config_GetDataDir( void )
-{
-#if defined (WIN32) || defined (UNDER_CE)
- return vlc_global()->psz_vlcpath;
-#elif defined(__APPLE__) || defined (SYS_BEOS)
- static char path[PATH_MAX] = "";
-
- if( *path == '\0' )
- {
- snprintf( path, sizeof( path ), "%s/share",
- vlc_global()->psz_vlcpath );
- path[sizeof( path ) - 1] = '\0';
- }
- return path;
-#else
- return DATA_PATH;
-#endif
-}
-
-/*****************************************************************************
- * config_GetHomeDir, config_GetUserDir: find the user's home directory.
- *****************************************************************************
- * This function will try by different ways to find the user's home path.
- * Note that this function is not reentrant, it should be called only once
- * at the beginning of main where the result will be stored for later use.
- *****************************************************************************/
-static char *GetDir( bool b_appdata )
-{
- const char *psz_localhome = NULL;
-
-#if defined(WIN32) && !defined(UNDER_CE)
- typedef HRESULT (WINAPI *SHGETFOLDERPATH)( HWND, int, HANDLE, DWORD,
- LPWSTR );
-#ifndef CSIDL_FLAG_CREATE
-# define CSIDL_FLAG_CREATE 0x8000
-#endif
-#ifndef CSIDL_APPDATA
-# define CSIDL_APPDATA 0x1A
-#endif
-#ifndef CSIDL_PROFILE
-# define CSIDL_PROFILE 0x28
-#endif
-#ifndef SHGFP_TYPE_CURRENT
-# define SHGFP_TYPE_CURRENT 0
-#endif
-
- HINSTANCE shfolder_dll;
- SHGETFOLDERPATH SHGetFolderPath ;
-
- /* load the shfolder dll to retrieve SHGetFolderPath */
- if( ( shfolder_dll = LoadLibrary( _T("SHFolder.dll") ) ) != NULL )
- {
- SHGetFolderPath = (void *)GetProcAddress( shfolder_dll,
- _T("SHGetFolderPathW") );
- if ( SHGetFolderPath != NULL )
- {
- wchar_t whomedir[MAX_PATH];
-
- /* get the "Application Data" folder for the current user */
- if( S_OK == SHGetFolderPath( NULL,
- (b_appdata ? CSIDL_APPDATA :
- CSIDL_PROFILE) | CSIDL_FLAG_CREATE,
- NULL, SHGFP_TYPE_CURRENT,
- whomedir ) )