source: branches/samba-3.5.x/lib/replace/dlfcn.c@ 778

Last change on this file since 778 was 414, checked in by Herwig Bauernfeind, 15 years ago

Samba 3.5.0: Initial import

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