Hans Leidekker : mspatcha: Forward ApplyPatchToFileA to ApplyPatchToFileW.

Alexandre Julliard julliard at winehq.org
Tue Oct 4 17:43:04 CDT 2011


Module: wine
Branch: master
Commit: 50110d4bbde7589155284880a57a6ffdb283b233
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=50110d4bbde7589155284880a57a6ffdb283b233

Author: Hans Leidekker <hans at codeweavers.com>
Date:   Tue Oct  4 14:59:41 2011 -0500

mspatcha: Forward ApplyPatchToFileA to ApplyPatchToFileW.

---

 dlls/mspatcha/mspatcha.spec   |    2 +-
 dlls/mspatcha/mspatcha_main.c |   41 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 42 insertions(+), 1 deletions(-)

diff --git a/dlls/mspatcha/mspatcha.spec b/dlls/mspatcha/mspatcha.spec
index ca9bc7d..40feedf 100644
--- a/dlls/mspatcha/mspatcha.spec
+++ b/dlls/mspatcha/mspatcha.spec
@@ -1,4 +1,4 @@
-1 stub ApplyPatchToFileA
+1 stdcall ApplyPatchToFileA(str str str long)
 2 stub ApplyPatchToFileByHandles
 3 stub ApplyPatchToFileByHandlesEx
 4 stub ApplyPatchToFileExA
diff --git a/dlls/mspatcha/mspatcha_main.c b/dlls/mspatcha/mspatcha_main.c
index 0110a41..ed763c9 100644
--- a/dlls/mspatcha/mspatcha_main.c
+++ b/dlls/mspatcha/mspatcha_main.c
@@ -24,6 +24,8 @@
 
 #include "windef.h"
 #include "winbase.h"
+#include "winnls.h"
+#include "patchapi.h"
 #include "wine/debug.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(mspatcha);
@@ -49,6 +51,45 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
     return TRUE;
 }
 
+static inline WCHAR *strdupAW( const char *src )
+{
+    WCHAR *dst = NULL;
+    if (src)
+    {
+        int len = MultiByteToWideChar( CP_ACP, 0, src, -1, NULL, 0 );
+        if ((dst = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) )))
+            MultiByteToWideChar( CP_ACP, 0, src, -1, dst, len );
+    }
+    return dst;
+}
+
+/*****************************************************
+ *    ApplyPatchToFileA (MSPATCHA.6)
+ */
+BOOL WINAPI ApplyPatchToFileA(LPCSTR patch_file, LPCSTR old_file, LPCSTR new_file, ULONG apply_flags)
+{
+    BOOL ret;
+    WCHAR *patch_fileW, *new_fileW, *old_fileW = NULL;
+
+    if (!(patch_fileW = strdupAW( patch_file ))) return FALSE;
+    if (old_file && !(old_fileW = strdupAW( old_file )))
+    {
+        HeapFree( GetProcessHeap(), 0, patch_fileW );
+        return FALSE;
+    }
+    if (!(new_fileW = strdupAW( new_file )))
+    {
+        HeapFree( GetProcessHeap(), 0, patch_fileW );
+        HeapFree( GetProcessHeap(), 0, old_fileW );
+        return FALSE;
+    }
+    ret = ApplyPatchToFileW( patch_fileW, old_fileW, new_fileW, apply_flags );
+    HeapFree( GetProcessHeap(), 0, patch_fileW );
+    HeapFree( GetProcessHeap(), 0, old_fileW );
+    HeapFree( GetProcessHeap(), 0, new_fileW );
+    return ret;
+}
+
 /*****************************************************
  *    ApplyPatchToFileW (MSPATCHA.6)
  */




More information about the wine-cvs mailing list