summaryrefslogtreecommitdiffstats
path: root/src/windows/leashdll
diff options
context:
space:
mode:
authorSam Hartman <hartmans@mit.edu>2011-09-28 20:55:18 +0000
committerSam Hartman <hartmans@mit.edu>2011-09-28 20:55:18 +0000
commit43b0bdc2bfbb8ce198a0f031e394bcc35cde12f3 (patch)
treea75b35f72a0068981004b3fcc6b664981ae30a94 /src/windows/leashdll
parentebf757101939bf391061c366ecec8d34b4c190c3 (diff)
downloadkrb5-43b0bdc2bfbb8ce198a0f031e394bcc35cde12f3.tar.gz
krb5-43b0bdc2bfbb8ce198a0f031e394bcc35cde12f3.tar.xz
krb5-43b0bdc2bfbb8ce198a0f031e394bcc35cde12f3.zip
Moved LoadFuncs/UnloadFuncs() to windows/lib
Signed-off-by: Alexey Melnikov <aamelnikov@gmail.com> git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@25257 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/windows/leashdll')
-rw-r--r--src/windows/leashdll/Makefile.in5
-rw-r--r--src/windows/leashdll/include/loadfuncs.h41
-rw-r--r--src/windows/leashdll/loadfuncs.c88
3 files changed, 2 insertions, 132 deletions
diff --git a/src/windows/leashdll/Makefile.in b/src/windows/leashdll/Makefile.in
index 12f281bd23..8846b5ec6a 100644
--- a/src/windows/leashdll/Makefile.in
+++ b/src/windows/leashdll/Makefile.in
@@ -32,8 +32,7 @@ OBJS= $(OUTPRE)AFSroutines.$(OBJEXT) \
$(OUTPRE)timesync.$(OBJEXT) \
$(OUTPRE)winerr.$(OBJEXT) \
$(OUTPRE)winutil.$(OBJEXT) \
- $(OUTPRE)registry.$(OBJEXT) \
- $(OUTPRE)loadfuncs.$(OBJEXT)
+ $(OUTPRE)registry.$(OBJEXT)
#TODO: Fix resource compilation
RESFILE = $(OUTPRE)lsh_pwd.res
@@ -75,7 +74,7 @@ clean-windows::
$(OUTPRE)$(DLL_NAME).dll: $(DEF_FILE) $(OBJS) $(XOBJS)
link $(WINDLLFLAGS) -def:$(DEF_FILE) -out:$*.dll \
- $(OBJS) $(XOBJS) $(WINLIBS) $(SCLIB)
+ $(OBJS) $(XOBJS) $(WINLIBS) ../lib/$(OUTPRE)libwin.lib $(SCLIB)
$(_VC_MANIFEST_EMBED_DLL)
#TODO: Add dependencies on include files here
diff --git a/src/windows/leashdll/include/loadfuncs.h b/src/windows/leashdll/include/loadfuncs.h
deleted file mode 100644
index 7aef62d21c..0000000000
--- a/src/windows/leashdll/include/loadfuncs.h
+++ /dev/null
@@ -1,41 +0,0 @@
-#ifndef __LOADFUNCS_H__
-#define __LOADFUNCS_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <windows.h>
-
-typedef struct _FUNC_INFO {
- void** func_ptr_var;
- char* func_name;
-} FUNC_INFO;
-
-#define DECL_FUNC_PTR(x) FP_##x p##x
-#define MAKE_FUNC_INFO(x) { (void**) &p##x, #x }
-#define END_FUNC_INFO { 0, 0 }
-#define TYPEDEF_FUNC(ret, call, name, args) typedef ret (call *FP_##name) args
-
-void
-UnloadFuncs(
- FUNC_INFO fi[],
- HINSTANCE h
- );
-
-int
-LoadFuncs(
- const char* dll_name,
- FUNC_INFO fi[],
- HINSTANCE* ph, // [out, optional] - DLL handle
- int* pindex, // [out, optional] - index of last func loaded (-1 if none)
- int cleanup, // cleanup function pointers and unload on error
- int go_on, // continue loading even if some functions cannot be loaded
- int silent // do not pop-up a system dialog if DLL cannot be loaded
- );
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __LOADFUNCS_H__ */
diff --git a/src/windows/leashdll/loadfuncs.c b/src/windows/leashdll/loadfuncs.c
deleted file mode 100644
index 44ec54dfaa..0000000000
--- a/src/windows/leashdll/loadfuncs.c
+++ /dev/null
@@ -1,88 +0,0 @@
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-#include "loadfuncs.h"
-
-//
-// UnloadFuncs:
-//
-// This function will reset all the function pointers of a function loaded
-// by LaodFuncs and will free the DLL instance provided.
-//
-
-void
-UnloadFuncs(
- FUNC_INFO fi[],
- HINSTANCE h
- )
-{
- int n;
- if (fi)
- for (n = 0; fi[n].func_ptr_var; n++)
- *(fi[n].func_ptr_var) = NULL;
- if (h) FreeLibrary(h);
-}
-
-
-//
-// LoadFuncs:
-//
-// This function try to load the functions for a DLL. It returns 0 on failure
-// and non-zero on success. The parameters are descibed below.
-//
-
-int
-LoadFuncs(
- const char* dll_name,
- FUNC_INFO fi[],
- HINSTANCE* ph, // [out, optional] - DLL handle
- int* pindex, // [out, optional] - index of last func loaded (-1 if none)
- int cleanup, // cleanup function pointers and unload on error
- int go_on, // continue loading even if some functions cannot be loaded
- int silent // do not pop-up a system dialog if DLL cannot be loaded
-
- )
-{
- HINSTANCE h;
- int i, n, last_i;
- int error = 0;
- UINT em;
-
- if (ph) *ph = 0;
- if (pindex) *pindex = -1;
-
- for (n = 0; fi[n].func_ptr_var; n++)
- *(fi[n].func_ptr_var) = NULL;
-
- if (silent)
- em = SetErrorMode(SEM_FAILCRITICALERRORS);
- h = LoadLibrary(dll_name);
- if (silent)
- SetErrorMode(em);
-
- if (!h)
- return 0;
-
- last_i = -1;
- for (i = 0; (go_on || !error) && (i < n); i++)
- {
- void* p = (void*)GetProcAddress(h, fi[i].func_name);
- if (!p)
- error = 1;
- else
- {
- last_i = i;
- *(fi[i].func_ptr_var) = p;
- }
- }
- if (pindex) *pindex = last_i;
- if (error && cleanup && !go_on) {
- for (i = 0; i < n; i++) {
- *(fi[i].func_ptr_var) = NULL;
- }
- FreeLibrary(h);
- return 0;
- }
- if (ph) *ph = h;
- if (error) return 0;
- return 1;
-}