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
29 #include "wine/debug.h"
31 WINE_DEFAULT_DEBUG_CHANNEL(mspatcha
);
33 /*****************************************************
34 * DllMain (MSPATCHA.@)
36 BOOL WINAPI
DllMain(HINSTANCE hinstDLL
, DWORD fdwReason
, LPVOID lpvReserved
)
38 TRACE("(0x%p, %d, %p)\n", hinstDLL
, fdwReason
, lpvReserved
);
42 case DLL_WINE_PREATTACH
:
43 return FALSE
; /* prefer native version */
44 case DLL_PROCESS_ATTACH
:
45 DisableThreadLibraryCalls(hinstDLL
);
47 case DLL_PROCESS_DETACH
:
54 static inline WCHAR
*strdupAW( const char *src
)
59 int len
= MultiByteToWideChar( CP_ACP
, 0, src
, -1, NULL
, 0 );
60 if ((dst
= HeapAlloc( GetProcessHeap(), 0, len
* sizeof(WCHAR
) )))
61 MultiByteToWideChar( CP_ACP
, 0, src
, -1, dst
, len
);
66 /*****************************************************
67 * ApplyPatchToFileA (MSPATCHA.1)
69 BOOL WINAPI
ApplyPatchToFileA(LPCSTR patch_file
, LPCSTR old_file
, LPCSTR new_file
, ULONG apply_flags
)
72 WCHAR
*patch_fileW
, *new_fileW
, *old_fileW
= NULL
;
74 if (!(patch_fileW
= strdupAW( patch_file
))) return FALSE
;
75 if (old_file
&& !(old_fileW
= strdupAW( old_file
)))
77 HeapFree( GetProcessHeap(), 0, patch_fileW
);
80 if (!(new_fileW
= strdupAW( new_file
)))
82 HeapFree( GetProcessHeap(), 0, patch_fileW
);
83 HeapFree( GetProcessHeap(), 0, old_fileW
);
86 ret
= ApplyPatchToFileW( patch_fileW
, old_fileW
, new_fileW
, apply_flags
);
87 HeapFree( GetProcessHeap(), 0, patch_fileW
);
88 HeapFree( GetProcessHeap(), 0, old_fileW
);
89 HeapFree( GetProcessHeap(), 0, new_fileW
);
93 /*****************************************************
94 * ApplyPatchToFileW (MSPATCHA.6)
96 BOOL WINAPI
ApplyPatchToFileW(LPCWSTR patch_file
, LPCWSTR old_file
, LPCWSTR new_file
, ULONG apply_flags
)
98 FIXME("stub - %s, %s, %s, %08x\n", debugstr_w(patch_file
), debugstr_w(old_file
),
99 debugstr_w(new_file
), apply_flags
);
101 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
105 /*****************************************************
106 * GetFilePatchSignatureA (MSPATCHA.7)
108 BOOL WINAPI
GetFilePatchSignatureA(LPCSTR filename
, ULONG flags
, PVOID data
, ULONG ignore_range_count
,
109 PPATCH_IGNORE_RANGE ignore_range
, ULONG retain_range_count
,
110 PPATCH_RETAIN_RANGE retain_range
, ULONG bufsize
, LPSTR buffer
)
112 FIXME("stub - %s, %x, %p, %u, %p, %u, %p, %u, %p\n", debugstr_a(filename
), flags
, data
,
113 ignore_range_count
, ignore_range
, retain_range_count
, retain_range
, bufsize
, buffer
);
114 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
118 /*****************************************************
119 * GetFilePatchSignatureW (MSPATCHA.9)
121 BOOL WINAPI
GetFilePatchSignatureW(LPCWSTR filename
, ULONG flags
, PVOID data
, ULONG ignore_range_count
,
122 PPATCH_IGNORE_RANGE ignore_range
, ULONG retain_range_count
,
123 PPATCH_RETAIN_RANGE retain_range
, ULONG bufsize
, LPWSTR buffer
)
125 FIXME("stub - %s, %x, %p, %u, %p, %u, %p, %u, %p\n", debugstr_w(filename
), flags
, data
,
126 ignore_range_count
, ignore_range
, retain_range_count
, retain_range
, bufsize
, buffer
);
127 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);