AC_CHECK_HEADERS([sys/socket.h poll.h sys/poll.h sys/un.h])
AC_CHECK_HEADERS([arpa/inet.h netinet/in.h netinet/tcp.h])
AC_CHECK_HEADERS([sys/param.h sys/uio.h libgen.h pwd.h grp.h])
-AC_CHECK_HEADERS([sys/wait.h sys/mman.h syslog.h netdb.h])
+AC_CHECK_HEADERS([sys/wait.h sys/mman.h syslog.h netdb.h dlfcn.h])
AC_CHECK_HEADERS([err.h pthread.h endian.h sys/endian.h byteswap.h])
dnl ucred.h may have prereqs
AC_CHECK_HEADERS([ucred.h sys/ucred.h], [], [], [
};
static inline const struct passwd * getpwnam(const char *u) { return NULL; }
+
+/*
+ * Minimal dlopen, dlsym, dlclose, dlerror compat.
+ */
+
+#define RTLD_LAZY 1
+#define RTLD_NOW 2
+
+static inline void *dlopen(const char *fn, int flag)
+{
+ HMODULE h = LoadLibraryEx(fn, NULL, 0);
+ return h;
+}
+
+static inline void *dlsym(void *hptr, const char *fname)
+{
+ HMODULE h = hptr;
+ FARPROC f = GetProcAddress(h, fname);
+ return f;
+}
+
+static inline int dlclose(void *hptr)
+{
+ HMODULE h = hptr;
+ return FreeLibrary(h) ? 0 : -1;
+}
+
+static inline const char *dlerror(void)
+{
+ return strerror(errno);
+}
+
#endif