mirror of https://github.com/DrBeef/ioq3quest.git
* (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)
This commit is contained in:
parent
ea0f646068
commit
ea997b340e
2
Makefile
2
Makefile
|
@ -468,7 +468,7 @@ ifeq ($(PLATFORM),mingw32)
|
|||
|
||||
BINEXT=.exe
|
||||
|
||||
LDFLAGS= -mwindows -lshfolder -lwsock32 -lgdi32 -lwinmm -lole32
|
||||
LDFLAGS= -mwindows -lwsock32 -lgdi32 -lwinmm -lole32
|
||||
CLIENT_LDFLAGS=
|
||||
|
||||
ifeq ($(USE_CURL),1)
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
if( !SUCCEEDED( SHGetFolderPath( NULL, CSIDL_APPDATA,
|
||||
qSHGetFolderPath = GetProcAddress(shfolder, "SHGetFolderPathA");
|
||||
if(qSHGetFolderPath == NULL)
|
||||
{
|
||||
Com_Printf("Unable to find SHGetFolderPath in SHFolder.dll\n");
|
||||
FreeLibrary(shfolder);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
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 )
|
||||
|
|
Loading…
Reference in New Issue