Fix typo.
[Samba/gebeck_regimport.git] / source3 / lib / replace / dlfcn.c
blob3b109d7e404695fedc102f91dfb23ab40e56ed9d
1 /*
2 Unix SMB/CIFS implementation.
3 Samba system utilities
4 Copyright (C) Andrew Tridgell 1992-1998
5 Copyright (C) Jeremy Allison 1998-2002
7 ** NOTE! The following LGPL license applies to the replace
8 ** library. This does NOT imply that all of Samba is released
9 ** under the LGPL
11 This library is free software; you can redistribute it and/or
12 modify it under the terms of the GNU Lesser General Public
13 License as published by the Free Software Foundation; either
14 version 3 of the License, or (at your option) any later version.
16 This library is distributed in the hope that it will be useful,
17 but WITHOUT ANY WARRANTY; without even the implied warranty of
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 Lesser General Public License for more details.
21 You should have received a copy of the GNU Lesser General Public
22 License along with this library; if not, see <http://www.gnu.org/licenses/>.
25 #include "replace.h"
26 #ifdef HAVE_DL_H
27 #include <dl.h>
28 #endif
30 #ifndef HAVE_DLOPEN
31 #ifdef DLOPEN_TAKES_UNSIGNED_FLAGS
32 void *rep_dlopen(const char *name, unsigned int flags)
33 #else
34 void *rep_dlopen(const char *name, int flags)
35 #endif
37 #ifdef HAVE_SHL_LOAD
38 if (name == NULL)
39 return PROG_HANDLE;
40 return (void *)shl_load(name, flags, 0);
41 #else
42 return NULL;
43 #endif
45 #endif
47 #ifndef HAVE_DLSYM
48 void *rep_dlsym(void *handle, const char *symbol)
50 #ifdef HAVE_SHL_FINDSYM
51 void *sym_addr;
52 if (!shl_findsym((shl_t *)&handle, symbol, TYPE_UNDEFINED, &sym_addr))
53 return sym_addr;
54 #endif
55 return NULL;
57 #endif
59 #ifndef HAVE_DLERROR
60 char *rep_dlerror(void)
62 return "dynamic loading of objects not supported on this platform";
64 #endif
66 #ifndef HAVE_DLCLOSE
67 int rep_dlclose(void *handle)
69 #ifdef HAVE_SHL_CLOSE
70 return shl_unload((shl_t)handle);
71 #else
72 return 0;
73 #endif
75 #endif