summaryrefslogtreecommitdiffstats
path: root/loader/win32.c
diff options
context:
space:
mode:
Diffstat (limited to 'loader/win32.c')
-rw-r--r--loader/win32.c54
1 files changed, 53 insertions, 1 deletions
diff --git a/loader/win32.c b/loader/win32.c
index 712e24d0ab..e03ee4c0a5 100644
--- a/loader/win32.c
+++ b/loader/win32.c
@@ -3666,7 +3666,7 @@ static WIN_BOOL WINAPI expWriteFile(HANDLE h,LPCVOID pv,DWORD size,LPDWORD wr,LP
static DWORD WINAPI expSetFilePointer(HANDLE h, LONG val, LPLONG ext, DWORD whence)
{
int wh;
- dbgprintf("SetFilePointer(%d, 0x%x, 0x%x = %d, %d)\n", h, val, ext, *ext, whence);
+ dbgprintf("SetFilePointer(%d, 0x%x, 0x%x = %d, %d)\n", h, val, ext, ext ? *ext : NULL, whence);
//why would DLL want temporary file with >2Gb size?
switch(whence)
{
@@ -4046,6 +4046,16 @@ static int exp_initterm(INITTERMFUNC *start, INITTERMFUNC *end)
}
#endif
+/* Fake _initterm_e from msvcr80.dll, needed by sirenacm.dll
+ * NOTE: If I make this an alias for _initterm, then sirenacm.dll tries to call
+ other uninmplemented functions; keep this in mind if some future codec needs
+ a real implementation of this function */
+static int exp_initterm_e(INITTERMFUNC *start, INITTERMFUNC *end)
+{
+ dbgprintf("_initterm_e(0x%x, 0x%x)\n", start, end);
+ return 0;
+}
+
static void* exp__dllonexit()
{
// FIXME extract from WINE
@@ -4819,6 +4829,30 @@ static WIN_BOOL WINAPI expEnumDisplaySettingsA(LPCSTR name ,DWORD n,
return 1;
}
+// Fake implementation of _decode_pointer from msvcr80.dll, needed by sirenacm.dll
+// NOTE: undocumented function, probably the declaration is not right
+static int exp_decode_pointer(void *ptr)
+{
+ dbgprintf("_decode_pointer (0x%08x)\n", ptr);
+ return 0;
+}
+
+/* Fake implementation of sdt::_Lockit::_Lockit(void) from msvcp60.dll
+ Needed by SCLS.DLL */
+static int exp_0Lockit_dummy(void)
+{
+ dbgprintf("0Lockit_dummy (??0_Lockit@std@@QAE@XZ)\n");
+ return 0;
+}
+
+/* Fake implementation of sdt::_Lockit::~_Lockit(void) from msvcp60.dll
+ Needed by SCLS.DLL */
+static int exp_1Lockit_dummy(void)
+{
+ dbgprintf("1Lockit_dummy (??1_Lockit@std@@QAE@XZ)\n");
+ return 0;
+}
+
struct exports
{
char name[64];
@@ -5247,6 +5281,22 @@ struct exports exp_shlwapi[]={
FF(PathFindFileNameA, -1)
};
+struct exports exp_msvcr80[]={
+ FF(_CIpow,-1)
+ FF(_CIsin,-1)
+ FF(_CIcos,-1)
+ FF(_CIsqrt,-1)
+ FF(memset,-1)
+ FF(_initterm_e, -1)
+ FF(_initterm, -1)
+ FF(_decode_pointer, -1)
+};
+
+struct exports exp_msvcp60[]={
+ {"??0_Lockit@std@@QAE@XZ", -1, exp_0Lockit_dummy},
+ {"??1_Lockit@std@@QAE@XZ", -1, exp_1Lockit_dummy}
+};
+
#define LL(X) \
{#X".dll", sizeof(exp_##X)/sizeof(struct exports), exp_##X},
@@ -5272,6 +5322,8 @@ struct libs libraries[]={
#endif
LL(comdlg32)
LL(shlwapi)
+ LL(msvcr80)
+ LL(msvcp60)
};
static WIN_BOOL WINAPI ext_stubs(void)