2008-02-09 Marcus Brinkmann <marcus@g10code.de>
[gnupg.git] / jnlib / dynload.h
bloba58bc19f9282ab1ad8ead43a1da54100e36dfff4
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 return hd;
37 static inline void *
38 dlsym (void *hd, const char *sym)
40 if (hd && sym)
42 void * fnc = GetProcAddress (hd, sym);
43 if (!fnc)
44 return NULL;
45 return fnc;
47 return NULL;
51 static inline const char *
52 dlerror (void)
54 static char buf[32];
55 sprintf (buf, "ec=%lu", GetLastError ());
56 return buf;
60 static inline int
61 dlclose (void * hd)
63 if (hd)
65 CloseHandle (hd);
66 return 0;
68 return -1;
70 # endif /*__MINGW32__*/
71 #endif /*LIBJNLIB_DYNLOAD_H*/