agent/
[gnupg.git] / jnlib / dynload.h
blob54774650db3b39806527ca65ee4970cd0be47511
1 /* dynload.h - Wrapper functions for run-time dynamic loading
2 * Copyright (C) 2003 Free Software Foundation, Inc.
4 * This file is part of JNLIB.
6 * JNLIB is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU Lesser General Public License as
8 * published by the Free Software Foundation; either version 3 of
9 * the License, or (at your option) any later version.
11 * JNLIB is distributed in the hope that it will be useful, but
12 * 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 program; if not, see <http://www.gnu.org/licenses/>.
20 #ifndef LIBJNLIB_DYNLOAD_H
21 #define LIBJNLIB_DYNLOAD_H
23 #ifndef __MINGW32__
24 # include <dlfcn.h>
25 #else
26 # include <windows.h>
28 # define RTLD_LAZY 0
30 static inline void *
31 dlopen (const char * name, int flag)
33 void * hd = LoadLibrary (name);
34 (void)flag;
35 return hd;
38 static inline void *
39 dlsym (void *hd, const char *sym)
41 if (hd && sym)
43 void * fnc = GetProcAddress (hd, sym);
44 if (!fnc)
45 return NULL;
46 return fnc;
48 return NULL;
52 static inline const char *
53 dlerror (void)
55 static char buf[32];
56 sprintf (buf, "ec=%lu", GetLastError ());
57 return buf;
61 static inline int
62 dlclose (void * hd)
64 if (hd)
66 CloseHandle (hd);
67 return 0;
69 return -1;
71 # endif /*__MINGW32__*/
72 #endif /*LIBJNLIB_DYNLOAD_H*/