Windows: remove trailing whitespace
[openafs.git] / src / WINNT / netidmgr_plugin / main.c
1 /*
2  * Copyright (c) 2005,2006 Secure Endpoints Inc.
3  *
4  * Permission is hereby granted, free of charge, to any person
5  * obtaining a copy of this software and associated documentation
6  * files (the "Software"), to deal in the Software without
7  * restriction, including without limitation the rights to use, copy,
8  * modify, merge, publish, distribute, sublicense, and/or sell copies
9  * of the Software, and to permit persons to whom the Software is
10  * furnished to do so, subject to the following conditions:
11  *
12  * The above copyright notice and this permission notice shall be
13  * included in all copies or substantial portions of the Software.
14  *
15  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
19  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
21  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22  * SOFTWARE.
23  */
24
25 /* $Id$ */
26
27 /* Disable the 'macro redefinition' warning which is getting
28    triggerred by a redefinition of the ENCRYPT and DECRYPT macros. */
29 #pragma warning (push)
30 #pragma warning (disable: 4005)
31
32 #include<afscred.h>
33 #include<kmm.h>
34 #include<dynimport.h>
35 #ifdef DEBUG
36 #include<assert.h>
37 #endif
38
39 #pragma warning (pop)
40
41 kmm_module h_khModule; /* KMM's handle to this module */
42 HINSTANCE hInstance;
43 HMODULE hResModule;    /* HMODULE to the resource library */
44
45 khm_handle csp_plugins      = NULL;
46 khm_handle csp_afscred      = NULL;
47 khm_handle csp_params       = NULL;
48
49 kmm_module_locale locales[] = {
50     LOCALE_DEF(MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_US), L"afscred_en_us.dll", KMM_MLOC_FLAG_DEFAULT)
51 };
52 int n_locales = ARRAYLENGTH(locales);
53
54 /* These two probably should not do anything */
55 void init_afs() {
56 }
57
58 void exit_afs() {
59 }
60
61 /* called by the NetIDMgr module manager */
62 KHMEXP khm_int32 KHMAPI init_module(kmm_module h_module) {
63     khm_int32 rv = KHM_ERROR_SUCCESS;
64     kmm_plugin_reg pi;
65     wchar_t buf[256];
66
67     h_khModule = h_module;
68
69     rv = kmm_set_locale_info(h_module, locales, n_locales);
70     if(KHM_SUCCEEDED(rv)) {
71         hResModule = kmm_get_resource_hmodule(h_module);
72     } else {
73         goto _exit;
74     }
75
76     ZeroMemory(&pi,sizeof(pi));
77
78     pi.msg_proc = afs_plugin_cb;
79     pi.name = AFS_PLUGIN_NAME;
80     pi.type = KHM_PITYPE_CRED;
81     pi.icon = LoadImage(hResModule, MAKEINTRESOURCE(IDI_AFSPLUGIN), IMAGE_ICON, 0, 0, LR_DEFAULTSIZE);
82     pi.dependencies = AFS_PLUGIN_DEPS;
83     pi.description = buf;
84
85     LoadString(hResModule, IDS_PLUGIN_DESC,
86                buf, ARRAYLENGTH(buf));
87
88     kmm_provide_plugin(h_module, &pi);
89
90     if(KHM_FAILED(rv = init_imports()))
91         goto _exit;
92
93     rv = kmm_get_plugins_config(0, &csp_plugins);
94     if(KHM_FAILED(rv)) goto _exit;
95
96     rv = khc_load_schema(csp_plugins, schema_afsconfig);
97     if(KHM_FAILED(rv)) goto _exit;
98
99     rv = khc_open_space(csp_plugins, CSNAME_AFSCRED, 0, &csp_afscred);
100     if(KHM_FAILED(rv)) goto _exit;
101
102     rv = khc_open_space(csp_afscred, CSNAME_PARAMS, 0, &csp_params);
103     if(KHM_FAILED(rv)) goto _exit;
104
105 _exit:
106     return rv;
107 }
108
109 /* called by the NetIDMgr module manager */
110 KHMEXP khm_int32 KHMAPI exit_module(kmm_module h_module) {
111     exit_imports();
112
113     if(csp_params) {
114         khc_close_space(csp_params);
115         csp_params = NULL;
116     }
117     if(csp_afscred) {
118         khc_close_space(csp_afscred);
119         csp_afscred = NULL;
120     }
121     if(csp_plugins) {
122         khc_unload_schema(csp_plugins, schema_afsconfig);
123         khc_close_space(csp_plugins);
124         csp_plugins = NULL;
125     }
126
127     return KHM_ERROR_SUCCESS; /* the return code is ignored */
128 }
129
130 BOOL WINAPI DllMain(HINSTANCE hinstDLL,
131                     DWORD fdwReason,
132                     LPVOID lpvReserved)
133 {
134     switch(fdwReason) {
135         case DLL_PROCESS_ATTACH:
136             hInstance = hinstDLL;
137             init_afs();
138             break;
139         case DLL_PROCESS_DETACH:
140             exit_afs();
141             break;
142         case DLL_THREAD_ATTACH:
143             break;
144         case DLL_THREAD_DETACH:
145             break;
146     }
147
148     return TRUE;
149 }