Revert "Windows: cs_CZ localization"
[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 #include <krbcompat_delayload.h>
39
40 #pragma warning (pop)
41
42 kmm_module h_khModule; /* KMM's handle to this module */
43 HINSTANCE hInstance;
44 HMODULE hResModule;    /* HMODULE to the resource library */
45
46 khm_handle csp_plugins      = NULL;
47 khm_handle csp_afscred      = NULL;
48 khm_handle csp_params       = NULL;
49
50 kmm_module_locale locales[] = {
51     LOCALE_DEF(MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_US), L"afscred_en_us.dll", KMM_MLOC_FLAG_DEFAULT)
52 };
53 int n_locales = ARRAYLENGTH(locales);
54
55 /* These two probably should not do anything */
56 void init_afs() {
57 }
58
59 void exit_afs() {
60 }
61
62 /* called by the NetIDMgr module manager */
63 KHMEXP khm_int32 KHMAPI init_module(kmm_module h_module) {
64     khm_int32 rv = KHM_ERROR_SUCCESS;
65     kmm_plugin_reg pi;
66     wchar_t buf[256];
67
68     h_khModule = h_module;
69
70     rv = kmm_set_locale_info(h_module, locales, n_locales);
71     if(KHM_SUCCEEDED(rv)) {
72         hResModule = kmm_get_resource_hmodule(h_module);
73     } else {
74         goto _exit;
75     }
76
77     DelayLoadHeimdal();
78
79     ZeroMemory(&pi,sizeof(pi));
80
81     pi.msg_proc = afs_plugin_cb;
82     pi.name = AFS_PLUGIN_NAME;
83     pi.type = KHM_PITYPE_CRED;
84     pi.icon = LoadImage(hResModule, MAKEINTRESOURCE(IDI_AFSPLUGIN), IMAGE_ICON, 0, 0, LR_DEFAULTSIZE);
85     pi.dependencies = AFS_PLUGIN_DEPS;
86     pi.description = buf;
87
88     LoadString(hResModule, IDS_PLUGIN_DESC,
89                buf, ARRAYLENGTH(buf));
90
91     kmm_provide_plugin(h_module, &pi);
92
93     if(KHM_FAILED(rv = init_imports()))
94         goto _exit;
95
96     rv = kmm_get_plugins_config(0, &csp_plugins);
97     if(KHM_FAILED(rv)) goto _exit;
98
99     rv = khc_load_schema(csp_plugins, schema_afsconfig);
100     if(KHM_FAILED(rv)) goto _exit;
101
102     rv = khc_open_space(csp_plugins, CSNAME_AFSCRED, 0, &csp_afscred);
103     if(KHM_FAILED(rv)) goto _exit;
104
105     rv = khc_open_space(csp_afscred, CSNAME_PARAMS, 0, &csp_params);
106     if(KHM_FAILED(rv)) goto _exit;
107
108 _exit:
109     return rv;
110 }
111
112 /* called by the NetIDMgr module manager */
113 KHMEXP khm_int32 KHMAPI exit_module(kmm_module h_module) {
114     exit_imports();
115
116     if(csp_params) {
117         khc_close_space(csp_params);
118         csp_params = NULL;
119     }
120     if(csp_afscred) {
121         khc_close_space(csp_afscred);
122         csp_afscred = NULL;
123     }
124     if(csp_plugins) {
125         khc_unload_schema(csp_plugins, schema_afsconfig);
126         khc_close_space(csp_plugins);
127         csp_plugins = NULL;
128     }
129
130     return KHM_ERROR_SUCCESS; /* the return code is ignored */
131 }
132
133 BOOL WINAPI DllMain(HINSTANCE hinstDLL,
134                     DWORD fdwReason,
135                     LPVOID lpvReserved)
136 {
137     switch(fdwReason) {
138         case DLL_PROCESS_ATTACH:
139             hInstance = hinstDLL;
140             init_afs();
141             break;
142         case DLL_PROCESS_DETACH:
143             exit_afs();
144             break;
145         case DLL_THREAD_ATTACH:
146             break;
147         case DLL_THREAD_DETACH:
148             break;
149     }
150
151     return TRUE;
152 }