summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2007-05-29 15:18:20 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 14:53:03 -0500
commit867f7f4b7499c810adf3d5b391966321709e864d (patch)
tree45c8da0650259f9b749e08023c306030c3569594
parent9f6c762b0acfd65da7d4b9ed80d107400aca1bbd (diff)
downloadsamba-867f7f4b7499c810adf3d5b391966321709e864d.tar.gz
samba-867f7f4b7499c810adf3d5b391966321709e864d.tar.xz
samba-867f7f4b7499c810adf3d5b391966321709e864d.zip
r23208: on some HP-UX boxes dlfcn.h is available and use unsigned int flags
for dlopen but no library contains the function... metze (This used to be commit 0c7e3ed9625d512522a0cc7278e705fbbfc316f4)
-rw-r--r--source4/lib/replace/dlfcn.c4
-rw-r--r--source4/lib/replace/dlfcn.m417
-rw-r--r--source4/lib/replace/replace.h4
3 files changed, 19 insertions, 6 deletions
diff --git a/source4/lib/replace/dlfcn.c b/source4/lib/replace/dlfcn.c
index 22f9f8bf79b..55b38bb9eb7 100644
--- a/source4/lib/replace/dlfcn.c
+++ b/source4/lib/replace/dlfcn.c
@@ -26,7 +26,11 @@
#include "replace.h"
#ifndef HAVE_DLOPEN
+#ifdef DLOPEN_TAKES_UNSIGNED_FLAGS
+void *rep_dlopen(const char *name, unsigned int flags)
+#else
void *rep_dlopen(const char *name, int flags)
+#endif
{
return NULL;
}
diff --git a/source4/lib/replace/dlfcn.m4 b/source4/lib/replace/dlfcn.m4
index d42409ac630..a1b57d10ec4 100644
--- a/source4/lib/replace/dlfcn.m4
+++ b/source4/lib/replace/dlfcn.m4
@@ -5,12 +5,17 @@ LIBS=""
libreplace_cv_dlfcn=no
AC_SEARCH_LIBS(dlopen, dl)
-if test x"${ac_cv_search_dlopen}" = x"no"; then
- libreplace_cv_dlfcn=yes
-else
- AC_CHECK_HEADERS(dlfcn.h)
- AC_CHECK_FUNCS([dlopen dlsym dlerror dlclose],[],[libreplace_cv_dlfcn=yes])
-fi
+AC_CHECK_HEADERS(dlfcn.h)
+AC_CHECK_FUNCS([dlopen dlsym dlerror dlclose],[],[libreplace_cv_dlfcn=yes])
+
+AC_VERIFY_C_PROTOTYPE([void *dlopen(const char* filename, unsigned int flags)],
+ [
+ return 0;
+ ],[
+ AC_DEFINE(DLOPEN_TAKES_UNSIGNED_FLAGS, 1, [Whether dlopen takes unsinged int flags])
+ ],[],[
+ #include <dlfcn.h>
+ ])
if test x"${libreplace_cv_dlfcn}" = x"yes";then
LIBREPLACEOBJ="${LIBREPLACEOBJ} dlfcn.o"
diff --git a/source4/lib/replace/replace.h b/source4/lib/replace/replace.h
index 1259400d6fc..f584cd42fab 100644
--- a/source4/lib/replace/replace.h
+++ b/source4/lib/replace/replace.h
@@ -228,8 +228,12 @@ char *rep_dlerror(void);
#ifndef HAVE_DLOPEN
#define dlopen rep_dlopen
+#ifdef DLOPEN_TAKES_UNSIGNED_FLAGS
+void *rep_dlopen(const char *name, unsigned int flags);
+#else
void *rep_dlopen(const char *name, int flags);
#endif
+#endif
#ifndef HAVE_DLSYM
#define dlsym rep_dlsym