diff --git a/3rdParty/Storm/Source/storm.cpp b/3rdParty/Storm/Source/storm.cpp index a361d2954..93f9d9bb1 100644 --- a/3rdParty/Storm/Source/storm.cpp +++ b/3rdParty/Storm/Source/storm.cpp @@ -227,7 +227,7 @@ int STORMAPI SBigToBinaryBuffer(void *buffer, int length, int a3, int a4) rInt; void __stdcall SDrawMessageBox(char *,char *,int) rVoid; void __cdecl SDrawDestroy(void) rVoid; BOOLEAN __cdecl StormDestroy(void) rBool; -BOOLEAN __stdcall SFileSetBasePath(char *) rBool; +BOOL __stdcall SFileSetBasePath(char *) rBool; void __cdecl SDrawRealizePalette(void) rVoid; BOOL __cdecl SVidPlayContinue(void) rBool; BOOL __stdcall SNetGetOwnerTurnsWaiting(DWORD *) rBool; diff --git a/3rdParty/Storm/Source/storm.h b/3rdParty/Storm/Source/storm.h index 6a80540c3..c0d6daf5f 100644 --- a/3rdParty/Storm/Source/storm.h +++ b/3rdParty/Storm/Source/storm.h @@ -1313,7 +1313,7 @@ int STORMAPI SBigToBinaryBuffer(void *buffer, int length, int a3, int a4); void __stdcall SDrawMessageBox(char *,char *,int); void __cdecl SDrawDestroy(void); BOOLEAN __cdecl StormDestroy(void); -BOOLEAN __stdcall SFileSetBasePath(char *); +BOOL __stdcall SFileSetBasePath(char *); void __cdecl SDrawRealizePalette(void); BOOL __cdecl SVidPlayContinue(void); BOOL __stdcall SNetGetOwnerTurnsWaiting(DWORD *); diff --git a/Source/init.cpp b/Source/init.cpp index 765430a8c..21d59ec6f 100644 --- a/Source/init.cpp +++ b/Source/init.cpp @@ -254,16 +254,12 @@ void init_archives() HANDLE init_test_access(char *mpq_path, char *mpq_name, char *reg_loc, int flags, int fs) { - char *v5; // esi - char *v7; // eax - char Filename[MAX_PATH]; // [esp+Ch] [ebp-314h] - char Buffer[MAX_PATH]; // [esp+110h] [ebp-210h] - char v15[MAX_PATH]; // [esp+214h] [ebp-10Ch] - char *mpq_namea; // [esp+318h] [ebp-8h] - HANDLE archive; // [esp+31Ch] [ebp-4h] - - mpq_namea = mpq_name; - v5 = mpq_path; + char *last_slash_pos; + char Filename[MAX_PATH]; + char Buffer[MAX_PATH]; + char archive_path[MAX_PATH]; + HANDLE archive; + if (!GetCurrentDirectory(sizeof(Buffer), Buffer)) app_fatal("Can't get program path"); init_strip_trailing_slash(Buffer); @@ -271,47 +267,47 @@ HANDLE init_test_access(char *mpq_path, char *mpq_name, char *reg_loc, int flags app_fatal("SFileSetBasePath"); if (!GetModuleFileName(ghInst, Filename, sizeof(Filename))) app_fatal("Can't get program name"); - v7 = strrchr(Filename, '\\'); - if (v7) - *v7 = 0; + last_slash_pos = strrchr(Filename, '\\'); + if (last_slash_pos) + *last_slash_pos = '\0'; init_strip_trailing_slash(Filename); - strcpy(v5, Buffer); - strcat(v5, mpq_namea); + strcpy(mpq_path, Buffer); + strcat(mpq_path, mpq_name); #ifdef COPYPROT - if (SFileOpenArchive(v5, flags, fs, &archive)) + if (SFileOpenArchive(mpq_path, flags, fs, &archive)) #else - if (SFileOpenArchive(v5, flags, FS_PC, &archive)) + if (SFileOpenArchive(mpq_path, flags, FS_PC, &archive)) #endif return archive; if (strcmp(Filename, Buffer)) { - strcpy(v5, Filename); - strcat(v5, mpq_namea); + strcpy(mpq_path, Filename); + strcat(mpq_path, mpq_name); #ifdef COPYPROT - if (SFileOpenArchive(v5, flags, fs, &archive)) + if (SFileOpenArchive(mpq_path, flags, fs, &archive)) #else - if (SFileOpenArchive(v5, flags, FS_PC, &archive)) + if (SFileOpenArchive(mpq_path, flags, FS_PC, &archive)) #endif return archive; } - v15[0] = 0; + archive_path[0] = '\0'; if (reg_loc) { - if (SRegLoadString("Archives", (const char *)reg_loc, 0, v15, sizeof(v15))) { - init_strip_trailing_slash(v15); - strcpy(v5, v15); - strcat(v5, mpq_namea); + if (SRegLoadString("Archives", reg_loc, 0, archive_path, sizeof(archive_path))) { + init_strip_trailing_slash(archive_path); + strcpy(mpq_path, archive_path); + strcat(mpq_path, mpq_name); #ifdef COPYPROT - if (SFileOpenArchive(v5, flags, fs, &archive)) + if (SFileOpenArchive(mpq_path, flags, fs, &archive)) #else - if (SFileOpenArchive(v5, flags, FS_PC, &archive)) + if (SFileOpenArchive(mpq_path, flags, FS_PC, &archive)) #endif return archive; } } - if (fs == FS_CD && init_read_test_file(v15, mpq_namea, flags, &archive)) { - strcpy(v5, v15); + if (fs != FS_PC && init_read_test_file(archive_path, mpq_name, flags, &archive)) { + strcpy(mpq_path, archive_path); return archive; } - return 0; + return NULL; } char *init_strip_trailing_slash(char *path)