4 * Copyright 2011 David Hedberg for CodeWeavers
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
21 #include <wine/config.h>
30 #include <wine/debug.h>
32 WINE_DEFAULT_DEBUG_CHANNEL(mspatcha
);
34 /*****************************************************
35 * DllMain (MSPATCHA.@)
37 BOOL WINAPI
DllMain(HINSTANCE hinstDLL
, DWORD fdwReason
, LPVOID lpvReserved
)
39 TRACE("(0x%p, %d, %p)\n", hinstDLL
, fdwReason
, lpvReserved
);
43 case DLL_WINE_PREATTACH
:
44 return FALSE
; /* prefer native version */
45 case DLL_PROCESS_ATTACH
:
46 DisableThreadLibraryCalls(hinstDLL
);
53 static inline WCHAR
*strdupAW( const char *src
)
58 int len
= MultiByteToWideChar( CP_ACP
, 0, src
, -1, NULL
, 0 );
59 if ((dst
= HeapAlloc( GetProcessHeap(), 0, len
* sizeof(WCHAR
) )))
60 MultiByteToWideChar( CP_ACP
, 0, src
, -1, dst
, len
);
65 /*****************************************************
66 * ApplyPatchToFileA (MSPATCHA.1)
68 BOOL WINAPI
ApplyPatchToFileA(LPCSTR patch_file
, LPCSTR old_file
, LPCSTR new_file
, ULONG apply_flags
)
71 WCHAR
*patch_fileW
, *new_fileW
, *old_fileW
= NULL
;
73 if (!(patch_fileW
= strdupAW( patch_file
))) return FALSE
;
74 if (old_file
&& !(old_fileW
= strdupAW( old_file
)))
76 HeapFree( GetProcessHeap(), 0, patch_fileW
);
79 if (!(new_fileW
= strdupAW( new_file
)))
81 HeapFree( GetProcessHeap(), 0, patch_fileW
);
82 HeapFree( GetProcessHeap(), 0, old_fileW
);
85 ret
= ApplyPatchToFileW( patch_fileW
, old_fileW
, new_fileW
, apply_flags
);
86 HeapFree( GetProcessHeap(), 0, patch_fileW
);
87 HeapFree( GetProcessHeap(), 0, old_fileW
);
88 HeapFree( GetProcessHeap(), 0, new_fileW
);
92 /*****************************************************
93 * ApplyPatchToFileW (MSPATCHA.6)
95 BOOL WINAPI
ApplyPatchToFileW(LPCWSTR patch_file
, LPCWSTR old_file
, LPCWSTR new_file
, ULONG apply_flags
)
97 FIXME("stub - %s, %s, %s, %08x\n", debugstr_w(patch_file
), debugstr_w(old_file
),
98 debugstr_w(new_file
), apply_flags
);
100 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
104 /*****************************************************
105 * GetFilePatchSignatureA (MSPATCHA.7)
107 BOOL WINAPI
GetFilePatchSignatureA(LPCSTR filename
, ULONG flags
, PVOID data
, ULONG ignore_range_count
,
108 PPATCH_IGNORE_RANGE ignore_range
, ULONG retain_range_count
,
109 PPATCH_RETAIN_RANGE retain_range
, ULONG bufsize
, LPSTR buffer
)
111 FIXME("stub - %s, %x, %p, %u, %p, %u, %p, %u, %p\n", debugstr_a(filename
), flags
, data
,
112 ignore_range_count
, ignore_range
, retain_range_count
, retain_range
, bufsize
, buffer
);
113 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
117 /*****************************************************
118 * GetFilePatchSignatureW (MSPATCHA.9)
120 BOOL WINAPI
GetFilePatchSignatureW(LPCWSTR filename
, ULONG flags
, PVOID data
, ULONG ignore_range_count
,
121 PPATCH_IGNORE_RANGE ignore_range
, ULONG retain_range_count
,
122 PPATCH_RETAIN_RANGE retain_range
, ULONG bufsize
, LPWSTR buffer
)
124 FIXME("stub - %s, %x, %p, %u, %p, %u, %p, %u, %p\n", debugstr_w(filename
), flags
, data
,
125 ignore_range_count
, ignore_range
, retain_range_count
, retain_range
, bufsize
, buffer
);
126 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);