Use separate test module for dns-cert.c.
[gnupg.git] / common / dynload.h
index 3c46520..e029b2b 100644 (file)
@@ -1,45 +1,71 @@
-/* dlfcn.h - W32 functions for run-time dynamic loading
- *      Copyright (C) 2003 Free Software Foundation, Inc.
+/* dynload.h - Wrapper functions for run-time dynamic loading
+ *      Copyright (C) 2003, 2010 Free Software Foundation, Inc.
  *
- * This file is part of GnuPG.
+ * This file is part of JNLIB, which is a subsystem of GnuPG.
  *
- * GnuPG is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
+ * JNLIB is free software; you can redistribute it and/or modify it
+ * under the terms of either
  *
- * GnuPG is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
+ *   - the GNU Lesser General Public License as published by the Free
+ *     Software Foundation; either version 3 of the License, or (at
+ *     your option) any later version.
  *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ * or
+ *
+ *   - the GNU General Public License as published by the Free
+ *     Software Foundation; either version 2 of the License, or (at
+ *     your option) any later version.
+ *
+ * or both in parallel, as here.
+ *
+ * JNLIB is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copies of the GNU General Public License
+ * and the GNU Lesser General Public License along with this program;
+ * if not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef GNUPG_DYNLOAD_H
-#define GNUPG_DYNLOAD_H
+#ifndef LIBJNLIB_DYNLOAD_H
+#define LIBJNLIB_DYNLOAD_H
+
 #ifndef __MINGW32__
-#include <dlfcn.h>
+# include <dlfcn.h>
 #else
-#include <windows.h>
+# include <windows.h>
+# include "utf8conv.h"
+# include "mischelp.h"
+# define RTLD_LAZY 0
 
-#define RTLD_LAZY 0
-
-static __inline__ void *
-dlopen (const char * name, int flag)
+static inline void *
+dlopen (const char *name, int flag)
 {
-  void * hd = LoadLibrary (name);
+  void *hd;
+#ifdef HAVE_W32CE_SYSTEM
+  wchar_t *wname = utf8_to_wchar (name);
+  hd = wname? LoadLibrary (wname) : NULL;
+  _jnlib_free (wname);
+#else
+  hd = LoadLibrary (name);
+#endif
+  (void)flag;
   return hd;
 }
 
-static __inline__ void *
+static inline void *
 dlsym (void *hd, const char *sym)
 {
   if (hd && sym)
     {
-      void * fnc = GetProcAddress (hd, sym);
+#ifdef HAVE_W32CE_SYSTEM
+      wchar_t *wsym = utf8_to_wchar (sym);
+      void *fnc = wsym? GetProcAddress (hd, wsym) : NULL;
+      _jnlib_free (wsym);
+#else
+      void *fnc = GetProcAddress (hd, sym);
+#endif
       if (!fnc)
         return NULL;
       return fnc;
@@ -48,16 +74,16 @@ dlsym (void *hd, const char *sym)
 }
 
 
-static __inline__ const char *
+static inline const char *
 dlerror (void)
 {
   static char buf[32];
-  sprintf (buf, "ec=%lu", GetLastError ());
+  snprintf (buf, sizeof buf, "ec=%lu", GetLastError ());
   return buf;
 }
 
 
-static __inline__ int
+static inline int
 dlclose (void * hd)
 {
   if (hd)
@@ -66,6 +92,6 @@ dlclose (void * hd)
       return 0;
     }
   return -1;
-}  
-#endif /*__MINGW32__*/
-#endif /*GNUPG_DYNLOAD_H*/
+}
+# endif /*__MINGW32__*/
+#endif /*LIBJNLIB_DYNLOAD_H*/