debug_git(): add a newline after each message
[git-cheetah.git] / dll.c
blobbab9d9a038bd44ca02e985990625be4b7bf2879a
1 #include <shlobj.h>
2 #include "dll.h"
3 #include "ext.h"
4 #include "factory.h"
6 /*
7 * The following is just the necessary infrastructure for having a .dll
8 * which can be registered as a COM object.
9 */
11 HRESULT PASCAL DllGetClassObject(REFCLSID obj_guid, REFIID factory_guid,
12 void **factory_handle)
14 if (IsEqualCLSID(obj_guid, &CLSID_git_shell_ext) ||
15 IsEqualCLSID(obj_guid, &CLSID_git_menu))
16 return class_factory_query_interface(&factory,
17 factory_guid, factory_handle);
19 *factory_handle = 0;
20 return CLASS_E_CLASSNOTAVAILABLE;
23 HRESULT PASCAL DllCanUnloadNow(void)
25 return (object_count || lock_count) ? S_FALSE : S_OK;
28 HRESULT PASCAL DllRegisterServer(void)
30 char module[MAX_PATH];
31 wchar_t module_name[MAX_PATH];
32 ITypeLib *typelib = NULL;
34 GetModuleFileName(NULL, module, MAX_PATH);
35 MultiByteToWideChar(CP_ACP, 0, module, -1, module_name, MAX_PATH);
36 if (LoadTypeLib(module_name, &typelib) == S_OK) {
37 HRESULT result = RegisterTypeLib(typelib, module_name, NULL);
38 typelib->lpVtbl->Release(typelib);
39 return result;
41 return 1;
44 HRESULT PASCAL DllUnregisterServer(void)
46 return S_OK;
49 BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved)
51 if (reason == DLL_PROCESS_ATTACH) {
52 object_count = lock_count = 0;
53 DisableThreadLibraryCalls(instance);
56 return 1;