mirror of
https://github.com/DrBeef/ioq3quest.git
synced 2024-11-10 14:52:00 +00:00
* (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 changed files with 20 additions and 2 deletions
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 a new issue