diff options
| author | tjw <tjw@edf5b092-35ff-0310-97b2-ce42778d08ea> | 2006-09-20 16:13:20 +0000 | 
|---|---|---|
| committer | tjw <tjw@edf5b092-35ff-0310-97b2-ce42778d08ea> | 2006-09-20 16:13:20 +0000 | 
| commit | 81bedfa3b19da126f355cf7d52489719fe79db71 (patch) | |
| tree | 04a6db7171db24f89b684846ee31296bf1fbfc72 /code | |
| parent | eb07490162d035aafd6256381c089f9135765ccc (diff) | |
| download | ioquake3-aero-81bedfa3b19da126f355cf7d52489719fe79db71.tar.gz ioquake3-aero-81bedfa3b19da126f355cf7d52489719fe79db71.zip | |
* (bug 2813) ioquake3 on win32 is no longer linked to SHFolder.dll.  instead
  it is dynamically loaded at run-time.  this means that win95/win98
  systems can fail the homepath detection gracefully if they don't have the
  dll installed (this dll is only provided by Internet Explorer updates
  on those systems)
git-svn-id: svn://svn.icculus.org/quake3/trunk@909 edf5b092-35ff-0310-97b2-ce42778d08ea
Diffstat (limited to 'code')
| -rw-r--r-- | code/win32/win_shared.c | 20 | 
1 files changed, 19 insertions, 1 deletions
| diff --git a/code/win32/win_shared.c b/code/win32/win_shared.c index 5ba8694..f28ff3a 100644 --- a/code/win32/win_shared.c +++ b/code/win32/win_shared.c @@ -287,14 +287,32 @@ char *Sys_GetCurrentUser( void )  char	*Sys_DefaultHomePath(void) {  	TCHAR szPath[MAX_PATH];  	static char path[MAX_OSPATH]; +	FARPROC qSHGetFolderPath; +	HMODULE shfolder = LoadLibrary("shfolder.dll"); +	 +	if(shfolder == NULL) { +		Com_Printf("Unable to load SHFolder.dll\n"); +		return NULL; +	} + +	qSHGetFolderPath = GetProcAddress(shfolder, "SHGetFolderPathA"); +	if(qSHGetFolderPath == NULL) +	{ +		Com_Printf("Unable to find SHGetFolderPath in SHFolder.dll\n"); +		FreeLibrary(shfolder); +		return NULL; +	} -	if( !SUCCEEDED( SHGetFolderPath( NULL, CSIDL_APPDATA, +	if( !SUCCEEDED( qSHGetFolderPath( NULL, CSIDL_APPDATA,  		NULL, 0, szPath ) ) )  	{ +		Com_Printf("Unable to detect CSIDL_APPDATA\n"); +		FreeLibrary(shfolder);  		return NULL;  	}  	Q_strncpyz( path, szPath, sizeof(path) );  	Q_strcat( path, sizeof(path), "\\Quake3" ); +	FreeLibrary(shfolder);  	if( !CreateDirectory( path, NULL ) )  	{  		if( GetLastError() != ERROR_ALREADY_EXISTS ) | 
