diff options
author | Stefan Metzmacher <metze@samba.org> | 2007-05-29 15:18:20 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 14:53:03 -0500 |
commit | 867f7f4b7499c810adf3d5b391966321709e864d (patch) | |
tree | 45c8da0650259f9b749e08023c306030c3569594 | |
parent | 9f6c762b0acfd65da7d4b9ed80d107400aca1bbd (diff) | |
download | samba-867f7f4b7499c810adf3d5b391966321709e864d.tar.gz samba-867f7f4b7499c810adf3d5b391966321709e864d.tar.bz2 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.c | 4 | ||||
-rw-r--r-- | source4/lib/replace/dlfcn.m4 | 17 | ||||
-rw-r--r-- | source4/lib/replace/replace.h | 4 |
3 files changed, 19 insertions, 6 deletions
diff --git a/source4/lib/replace/dlfcn.c b/source4/lib/replace/dlfcn.c index 22f9f8bf79..55b38bb9eb 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 d42409ac63..a1b57d10ec 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 1259400d6f..f584cd42fa 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 |