mirror of
git://git.savannah.gnu.org/libtool.git
synced 2024-11-27 06:09:57 +08:00
Allow better compile time type checking for lt_dladvise.
* libltdl/lt__private.h (lt__handle, lt__advise): Typedefs removed in favour of... * libltdl/ltdl.h (lt_dlhandle), libltdl/libltdl/lt_dlloader.h (lt_dladvise): ...changing from void* to forward declarations. * libltdl/loaders/dlopen.c, libltdl/loaders/loadlibrary.c, libltdl/lt_dlloader.c, libltdl/ltdl.c: Remove many redundant type casts. * NEWS: Updated. Suggested by Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
This commit is contained in:
parent
d9a4d8f71a
commit
7b707dae15
14
ChangeLog
14
ChangeLog
@ -1,3 +1,17 @@
|
||||
2008-04-21 Gary V. Vaughan <gary@gnu.org>
|
||||
|
||||
Allow better compile time type checking for lt_dladvise.
|
||||
* libltdl/lt__private.h (lt__handle, lt__advise): Typedefs
|
||||
removed in favour of...
|
||||
* libltdl/ltdl.h (lt_dlhandle),
|
||||
libltdl/libltdl/lt_dlloader.h (lt_dladvise): ...changing from
|
||||
void* to forward declarations.
|
||||
* libltdl/loaders/dlopen.c, libltdl/loaders/loadlibrary.c,
|
||||
libltdl/lt_dlloader.c, libltdl/ltdl.c: Remove many redundant
|
||||
type casts.
|
||||
* NEWS: Updated.
|
||||
Suggested by Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
|
||||
|
||||
2008-04-21 Peter O'Gorman <peter@pogma.com>
|
||||
|
||||
basename does not take a list of strings.
|
||||
|
4
NEWS
4
NEWS
@ -6,6 +6,10 @@ New in 2.2.4: 2008-??-??: CVS version 2.2.3a, Libtool team:
|
||||
|
||||
- The documentation for lt_dlopenadvise showed the wrong type for
|
||||
the lt_dladvise parameter.
|
||||
- The public declarations for lt_dlhandle and lt_dladvise are now
|
||||
incomplete struct types rather than void*, which means that nearly
|
||||
all casting is eliminated allowing the compiler to provide more
|
||||
type checking.
|
||||
|
||||
New in 2.2.2: 2008-04-01: CVS version 2.2.1a, Libtool team:
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* lt__private.h -- internal apis for libltdl
|
||||
|
||||
Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
|
||||
Copyright (C) 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
||||
Written by Gary V. Vaughan, 2004
|
||||
|
||||
NOTE: The canonical source of this file is maintained with the
|
||||
@ -107,10 +107,8 @@ typedef struct {
|
||||
void * data;
|
||||
} lt_interface_data;
|
||||
|
||||
typedef struct lt__handle lt__handle;
|
||||
|
||||
struct lt__handle {
|
||||
lt__handle * next;
|
||||
lt_dlhandle next;
|
||||
const lt_dlvtable * vtable; /* dlopening interface */
|
||||
lt_dlinfo info; /* user visible fields */
|
||||
int depcount; /* number of dependencies */
|
||||
@ -121,8 +119,6 @@ struct lt__handle {
|
||||
int flags; /* various boolean stats */
|
||||
};
|
||||
|
||||
typedef struct lt__advise lt__advise;
|
||||
|
||||
struct lt__advise {
|
||||
unsigned int try_ext:1; /* try system library extensions. */
|
||||
unsigned int is_resident:1; /* module can't be unloaded. */
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* lt_dlloader.h -- dynamic library loader interface
|
||||
|
||||
Copyright (C) 2004, 2007 Free Software Foundation, Inc.
|
||||
Copyright (C) 2004, 2007, 2008 Free Software Foundation, Inc.
|
||||
Written by Gary V. Vaughan, 2004
|
||||
|
||||
NOTE: The canonical source of this file is maintained with the
|
||||
@ -38,7 +38,7 @@ LT_BEGIN_C_DECLS
|
||||
typedef void * lt_dlloader;
|
||||
typedef void * lt_module;
|
||||
typedef void * lt_user_data;
|
||||
typedef void * lt_dladvise;
|
||||
typedef struct lt__advise * lt_dladvise;
|
||||
|
||||
/* Function pointer types for module loader vtable entries: */
|
||||
typedef lt_module lt_module_open (lt_user_data data,
|
||||
|
@ -174,20 +174,20 @@ vm_open (lt_user_data LT__UNUSED loader_data, const char *filename,
|
||||
#ifdef RTLD_GLOBAL
|
||||
/* If there is some means of asking for global symbol resolution,
|
||||
do so. */
|
||||
if (((lt__advise *) advise)->is_symglobal)
|
||||
if (advise->is_symglobal)
|
||||
module_flags |= RTLD_GLOBAL;
|
||||
#else
|
||||
/* Otherwise, reset that bit so the caller can tell it wasn't
|
||||
acted on. */
|
||||
((lt__advise *) advise)->is_symglobal = 0;
|
||||
advise->is_symglobal = 0;
|
||||
#endif
|
||||
|
||||
/* And similarly for local only symbol resolution. */
|
||||
#ifdef RTLD_LOCAL
|
||||
if (((lt__advise *) advise)->is_symlocal)
|
||||
if (advise->is_symlocal)
|
||||
module_flags |= RTLD_LOCAL;
|
||||
#else
|
||||
((lt__advise *) advise)->is_symlocal = 0;
|
||||
advise->is_symlocal = 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -184,9 +184,9 @@ vm_open (lt_user_data LT__UNUSED loader_data, const char *filename,
|
||||
an already loaded module, and simulate failure if we
|
||||
find one. */
|
||||
{
|
||||
lt__handle * cur = 0;
|
||||
lt_dlhandle cur = 0;
|
||||
|
||||
while ((cur = (lt__handle *) lt_dlhandle_iterate (iface_id, (lt_dlhandle) cur)))
|
||||
while ((cur = lt_dlhandle_iterate (iface_id, cur)))
|
||||
{
|
||||
if (!cur->module)
|
||||
{
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* lt_dlloader.c -- dynamic library loader interface
|
||||
|
||||
Copyright (C) 2004, 2007 Free Software Foundation, Inc.
|
||||
Copyright (C) 2004, 2007, 2008 Free Software Foundation, Inc.
|
||||
Written by Gary V. Vaughan, 2004
|
||||
|
||||
NOTE: The canonical source of this file is maintained with the
|
||||
@ -169,7 +169,7 @@ lt_dlloader_remove (char *name)
|
||||
iface = lt_dlinterface_register (id_string, NULL);
|
||||
while ((handle = lt_dlhandle_iterate (iface, handle)))
|
||||
{
|
||||
lt__handle *cur = (lt__handle *) handle;
|
||||
lt_dlhandle cur = handle;
|
||||
if (cur->vtable == vtable)
|
||||
{
|
||||
in_use = 1;
|
||||
|
113
libltdl/ltdl.c
113
libltdl/ltdl.c
@ -1,7 +1,7 @@
|
||||
/* ltdl.c -- system independent dlopen wrapper
|
||||
|
||||
Copyright (C) 1998, 1999, 2000, 2004, 2005, 2006,
|
||||
2007 Free Software Foundation, Inc.
|
||||
2007, 2008 Free Software Foundation, Inc.
|
||||
Written by Thomas Tanner, 1998
|
||||
|
||||
NOTE: The canonical source of this file is maintained with the
|
||||
@ -60,9 +60,9 @@ or obtained by writing to the Free Software Foundation, Inc.,
|
||||
|
||||
/* Various boolean flags can be stored in the flags field of an
|
||||
lt_dlhandle... */
|
||||
#define LT_DLIS_RESIDENT(handle) (((lt__handle*)handle)->info.is_resident)
|
||||
#define LT_DLIS_SYMGLOBAL(handle) (((lt__handle*)handle)->info.is_symglobal)
|
||||
#define LT_DLIS_SYMLOCAL(handle) (((lt__handle*)handle)->info.is_symlocal)
|
||||
#define LT_DLIS_RESIDENT(handle) ((handle)->info.is_resident)
|
||||
#define LT_DLIS_SYMGLOBAL(handle) ((handle)->info.is_symglobal)
|
||||
#define LT_DLIS_SYMLOCAL(handle) ((handle)->info.is_symlocal)
|
||||
|
||||
|
||||
static const char objdir[] = LT_OBJDIR;
|
||||
@ -251,7 +251,7 @@ lt_dlexit (void)
|
||||
{
|
||||
/* shut down libltdl */
|
||||
lt_dlloader *loader = 0;
|
||||
lt__handle *handle = (lt__handle *) handles;
|
||||
lt_dlhandle handle = handles;
|
||||
int errors = 0;
|
||||
|
||||
if (!initialized)
|
||||
@ -268,18 +268,18 @@ lt_dlexit (void)
|
||||
|
||||
while (handles && LT_DLIS_RESIDENT (handles))
|
||||
{
|
||||
handles = ((lt__handle *) handles)->next;
|
||||
handles = handles->next;
|
||||
}
|
||||
|
||||
/* close all modules */
|
||||
for (level = 1; handle; ++level)
|
||||
{
|
||||
lt__handle *cur = (lt__handle *) handles;
|
||||
lt_dlhandle cur = handles;
|
||||
int saw_nonresident = 0;
|
||||
|
||||
while (cur)
|
||||
{
|
||||
lt__handle *tmp = cur;
|
||||
lt_dlhandle tmp = cur;
|
||||
cur = cur->next;
|
||||
if (!LT_DLIS_RESIDENT (tmp))
|
||||
{
|
||||
@ -296,11 +296,11 @@ lt_dlexit (void)
|
||||
pointed to by 'cur'. */
|
||||
if (cur)
|
||||
{
|
||||
for (tmp = (lt__handle *) handles; tmp; tmp = tmp->next)
|
||||
for (tmp = handles; tmp; tmp = tmp->next)
|
||||
if (tmp == cur)
|
||||
break;
|
||||
if (! tmp)
|
||||
cur = (lt__handle *) handles;
|
||||
cur = handles;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -351,12 +351,11 @@ lt_dlexit (void)
|
||||
the dlhandle is stored at the address given in PHANDLE. */
|
||||
static int
|
||||
tryall_dlopen (lt_dlhandle *phandle, const char *filename,
|
||||
lt_dladvise padvise, const lt_dlvtable *vtable)
|
||||
lt_dladvise advise, const lt_dlvtable *vtable)
|
||||
{
|
||||
lt__handle * handle = (lt__handle *) handles;
|
||||
lt_dlhandle handle = handles;
|
||||
const char * saved_error = 0;
|
||||
int errors = 0;
|
||||
lt__advise * advise = (lt__advise *) padvise;
|
||||
|
||||
#ifdef LT_DEBUG_LOADERS
|
||||
fprintf (stderr, "tryall_dlopen (%s, %s)\n",
|
||||
@ -384,7 +383,7 @@ tryall_dlopen (lt_dlhandle *phandle, const char *filename,
|
||||
goto done;
|
||||
}
|
||||
|
||||
handle = (lt__handle *) *phandle;
|
||||
handle = *phandle;
|
||||
if (filename)
|
||||
{
|
||||
/* Comment out the check of file permissions using access.
|
||||
@ -759,7 +758,7 @@ find_file (const char *search_path, const char *base_name, char **pdir)
|
||||
static int
|
||||
find_handle_callback (char *filename, void *data, void *data2)
|
||||
{
|
||||
lt_dlhandle *handle = (lt_dlhandle *) data;
|
||||
lt_dlhandle *phandle = (lt_dlhandle *) data;
|
||||
int notfound = access (filename, R_OK);
|
||||
lt_dladvise advise = (lt_dladvise) data2;
|
||||
|
||||
@ -769,8 +768,8 @@ find_handle_callback (char *filename, void *data, void *data2)
|
||||
|
||||
/* Try to dlopen the file, but do not continue searching in any
|
||||
case. */
|
||||
if (tryall_dlopen (handle, filename, advise, 0) != 0)
|
||||
*handle = 0;
|
||||
if (tryall_dlopen (phandle, filename, advise, 0) != 0)
|
||||
*phandle = 0;
|
||||
|
||||
return 1;
|
||||
}
|
||||
@ -779,23 +778,23 @@ find_handle_callback (char *filename, void *data, void *data2)
|
||||
found but could not be opened, *HANDLE will be set to 0. */
|
||||
static lt_dlhandle *
|
||||
find_handle (const char *search_path, const char *base_name,
|
||||
lt_dlhandle *handle, lt_dladvise advise)
|
||||
lt_dlhandle *phandle, lt_dladvise advise)
|
||||
{
|
||||
if (!search_path)
|
||||
return 0;
|
||||
|
||||
if (!foreach_dirinpath (search_path, base_name, find_handle_callback,
|
||||
handle, advise))
|
||||
phandle, advise))
|
||||
return 0;
|
||||
|
||||
return handle;
|
||||
return phandle;
|
||||
}
|
||||
|
||||
#if !defined(LTDL_DLOPEN_DEPLIBS)
|
||||
static int
|
||||
load_deplibs (lt_dlhandle handle, char * LT__UNUSED deplibs)
|
||||
{
|
||||
((lt__handle *) handle)->depcount = 0;
|
||||
handle->depcount = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -809,7 +808,7 @@ load_deplibs (lt_dlhandle handle, char *deplibs)
|
||||
char **names = 0;
|
||||
int errors = 0;
|
||||
|
||||
((lt__handle *) handle)->depcount = 0;
|
||||
handle->depcount = 0;
|
||||
|
||||
if (!deplibs)
|
||||
{
|
||||
@ -919,10 +918,10 @@ load_deplibs (lt_dlhandle handle, char *deplibs)
|
||||
later on if the loaded module cannot resolve all of its symbols. */
|
||||
if (depcount)
|
||||
{
|
||||
lt__handle *cur = (lt__handle *) handle;
|
||||
lt_dlhandle cur = handle;
|
||||
int j = 0;
|
||||
|
||||
cur->deplibs = (lt_dlhandle *) MALLOC (lt__handle, depcount);
|
||||
cur->deplibs = (lt_dlhandle) MALLOC (struct lt__handle, depcount);
|
||||
if (!cur->deplibs)
|
||||
goto cleanup_names;
|
||||
|
||||
@ -961,7 +960,7 @@ unload_deplibs (lt_dlhandle handle)
|
||||
{
|
||||
int i;
|
||||
int errors = 0;
|
||||
lt__handle *cur = (lt__handle *) handle;
|
||||
lt_dlhandle cur = handle;
|
||||
|
||||
if (cur->depcount)
|
||||
{
|
||||
@ -1152,14 +1151,14 @@ try_dlopen (lt_dlhandle *phandle, const char *filename, const char *ext,
|
||||
/* dlopen self? */
|
||||
if (!filename)
|
||||
{
|
||||
*phandle = (lt_dlhandle) lt__zalloc (sizeof (lt__handle));
|
||||
*phandle = (lt_dlhandle) lt__zalloc (sizeof (struct lt__handle));
|
||||
if (*phandle == 0)
|
||||
return 1;
|
||||
|
||||
newhandle = *phandle;
|
||||
|
||||
/* lt_dlclose()ing yourself is very bad! Disallow it. */
|
||||
((lt__handle *) newhandle)->info.is_resident = 1;
|
||||
newhandle->info.is_resident = 1;
|
||||
|
||||
if (tryall_dlopen (&newhandle, 0, advise, 0) != 0)
|
||||
{
|
||||
@ -1258,7 +1257,7 @@ try_dlopen (lt_dlhandle *phandle, const char *filename, const char *ext,
|
||||
|
||||
if (vtable)
|
||||
{
|
||||
*phandle = (lt_dlhandle) lt__zalloc (sizeof (lt__handle));
|
||||
*phandle = (lt_dlhandle) lt__zalloc (sizeof (struct lt__handle));
|
||||
|
||||
if (*phandle == NULL)
|
||||
{
|
||||
@ -1349,7 +1348,7 @@ try_dlopen (lt_dlhandle *phandle, const char *filename, const char *ext,
|
||||
fclose (file);
|
||||
|
||||
/* allocate the handle */
|
||||
*phandle = (lt_dlhandle) lt__zalloc (sizeof (lt__handle));
|
||||
*phandle = (lt_dlhandle) lt__zalloc (sizeof (struct lt__handle));
|
||||
if (*phandle == 0)
|
||||
++errors;
|
||||
|
||||
@ -1400,7 +1399,7 @@ try_dlopen (lt_dlhandle *phandle, const char *filename, const char *ext,
|
||||
else
|
||||
{
|
||||
/* not a libtool module */
|
||||
*phandle = (lt_dlhandle) lt__zalloc (sizeof (lt__handle));
|
||||
*phandle = (lt_dlhandle) lt__zalloc (sizeof (struct lt__handle));
|
||||
if (*phandle == 0)
|
||||
{
|
||||
++errors;
|
||||
@ -1444,13 +1443,13 @@ try_dlopen (lt_dlhandle *phandle, const char *filename, const char *ext,
|
||||
register_handle:
|
||||
MEMREASSIGN (*phandle, newhandle);
|
||||
|
||||
if (((lt__handle *) *phandle)->info.ref_count == 0)
|
||||
if ((*phandle)->info.ref_count == 0)
|
||||
{
|
||||
((lt__handle *) *phandle)->info.ref_count = 1;
|
||||
MEMREASSIGN (((lt__handle *) *phandle)->info.name, name);
|
||||
(*phandle)->info.ref_count = 1;
|
||||
MEMREASSIGN ((*phandle)->info.name, name);
|
||||
|
||||
((lt__handle *) *phandle)->next = (lt__handle *) handles;
|
||||
handles = *phandle;
|
||||
(*phandle)->next = handles;
|
||||
handles = *phandle;
|
||||
}
|
||||
|
||||
LT__SETERRORSTR (saved_error);
|
||||
@ -1511,7 +1510,7 @@ has_library_ext (const char *filename)
|
||||
int
|
||||
lt_dladvise_init (lt_dladvise *padvise)
|
||||
{
|
||||
lt__advise *advise = (lt__advise *) lt__zalloc (sizeof (lt__advise));
|
||||
lt_dladvise advise = (lt_dladvise) lt__zalloc (sizeof (struct lt__advise));
|
||||
*padvise = advise;
|
||||
return (advise ? 0 : 1);
|
||||
}
|
||||
@ -1528,7 +1527,7 @@ int
|
||||
lt_dladvise_ext (lt_dladvise *padvise)
|
||||
{
|
||||
assert (padvise && *padvise);
|
||||
((lt__advise *) *padvise)->try_ext = 1;
|
||||
(*padvise)->try_ext = 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1536,7 +1535,7 @@ int
|
||||
lt_dladvise_resident (lt_dladvise *padvise)
|
||||
{
|
||||
assert (padvise && *padvise);
|
||||
((lt__advise *) *padvise)->is_resident = 1;
|
||||
(*padvise)->is_resident = 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1544,7 +1543,7 @@ int
|
||||
lt_dladvise_local (lt_dladvise *padvise)
|
||||
{
|
||||
assert (padvise && *padvise);
|
||||
((lt__advise *) *padvise)->is_symlocal = 1;
|
||||
(*padvise)->is_symlocal = 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1552,7 +1551,7 @@ int
|
||||
lt_dladvise_global (lt_dladvise *padvise)
|
||||
{
|
||||
assert (padvise && *padvise);
|
||||
((lt__advise *) *padvise)->is_symglobal = 1;
|
||||
(*padvise)->is_symglobal = 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1589,9 +1588,7 @@ lt_dlopenadvise (const char *filename, lt_dladvise advise)
|
||||
int errors = 0;
|
||||
|
||||
/* Can't have symbols hidden and visible at the same time! */
|
||||
if (advise
|
||||
&& ((lt__advise *) advise)->is_symlocal
|
||||
&& ((lt__advise *) advise)->is_symglobal)
|
||||
if (advise && advise->is_symlocal && advise->is_symglobal)
|
||||
{
|
||||
LT__SETERROR (CONFLICTING_FLAGS);
|
||||
return 0;
|
||||
@ -1599,7 +1596,7 @@ lt_dlopenadvise (const char *filename, lt_dladvise advise)
|
||||
|
||||
if (!filename
|
||||
|| !advise
|
||||
|| !((lt__advise *) advise)->try_ext
|
||||
|| !advise->try_ext
|
||||
|| has_library_ext (filename))
|
||||
{
|
||||
/* Just incase we missed a code path in try_dlopen() that reports
|
||||
@ -1872,11 +1869,11 @@ lt_dlforeachfile (const char *search_path,
|
||||
int
|
||||
lt_dlclose (lt_dlhandle handle)
|
||||
{
|
||||
lt__handle *cur, *last;
|
||||
lt_dlhandle cur, last;
|
||||
int errors = 0;
|
||||
|
||||
/* check whether the handle is valid */
|
||||
last = cur = (lt__handle *) handles;
|
||||
last = cur = handles;
|
||||
while (cur && handle != cur)
|
||||
{
|
||||
last = cur;
|
||||
@ -1890,7 +1887,7 @@ lt_dlclose (lt_dlhandle handle)
|
||||
goto done;
|
||||
}
|
||||
|
||||
cur = (lt__handle *) handle;
|
||||
cur = handle;
|
||||
cur->info.ref_count--;
|
||||
|
||||
/* Note that even with resident modules, we must track the ref_count
|
||||
@ -1941,7 +1938,7 @@ lt_dlsym (lt_dlhandle place, const char *symbol)
|
||||
char *sym;
|
||||
void *address;
|
||||
lt_user_data data;
|
||||
lt__handle *handle;
|
||||
lt_dlhandle handle;
|
||||
|
||||
if (!place)
|
||||
{
|
||||
@ -1949,7 +1946,7 @@ lt_dlsym (lt_dlhandle place, const char *symbol)
|
||||
return 0;
|
||||
}
|
||||
|
||||
handle = (lt__handle *) place;
|
||||
handle = place;
|
||||
|
||||
if (!symbol)
|
||||
{
|
||||
@ -2189,7 +2186,7 @@ lt_dlmakeresident (lt_dlhandle handle)
|
||||
}
|
||||
else
|
||||
{
|
||||
((lt__handle *) handle)->info.is_resident = 1;
|
||||
handle->info.is_resident = 1;
|
||||
}
|
||||
|
||||
return errors;
|
||||
@ -2247,7 +2244,7 @@ lt_dlcaller_set_data (lt_dlinterface_id key, lt_dlhandle handle, void *data)
|
||||
{
|
||||
int n_elements = 0;
|
||||
void *stale = (void *) 0;
|
||||
lt__handle *cur = (lt__handle *) handle;
|
||||
lt_dlhandle cur = handle;
|
||||
int i;
|
||||
|
||||
if (cur->interface_data)
|
||||
@ -2293,7 +2290,7 @@ void *
|
||||
lt_dlcaller_get_data (lt_dlinterface_id key, lt_dlhandle handle)
|
||||
{
|
||||
void *result = (void *) 0;
|
||||
lt__handle *cur = (lt__handle *) handle;
|
||||
lt_dlhandle cur = handle;
|
||||
|
||||
/* Locate the index of the element with a matching KEY. */
|
||||
if (cur->interface_data)
|
||||
@ -2321,20 +2318,20 @@ lt_dlgetinfo (lt_dlhandle handle)
|
||||
return 0;
|
||||
}
|
||||
|
||||
return &(((lt__handle *) handle)->info);
|
||||
return &(handle->info);
|
||||
}
|
||||
|
||||
|
||||
lt_dlhandle
|
||||
lt_dlhandle_iterate (lt_dlinterface_id iface, lt_dlhandle place)
|
||||
{
|
||||
lt__handle *handle = (lt__handle *) place;
|
||||
lt_dlhandle handle = place;
|
||||
lt__interface_id *iterator = (lt__interface_id *) iface;
|
||||
|
||||
assert (iface); /* iface is a required argument */
|
||||
|
||||
if (!handle)
|
||||
handle = (lt__handle *) handles;
|
||||
handle = handles;
|
||||
else
|
||||
handle = handle->next;
|
||||
|
||||
@ -2345,7 +2342,7 @@ lt_dlhandle_iterate (lt_dlinterface_id iface, lt_dlhandle place)
|
||||
handle = handle->next;
|
||||
}
|
||||
|
||||
return (lt_dlhandle) handle;
|
||||
return handle;
|
||||
}
|
||||
|
||||
|
||||
@ -2358,7 +2355,7 @@ lt_dlhandle_fetch (lt_dlinterface_id iface, const char *module_name)
|
||||
|
||||
while ((handle = lt_dlhandle_iterate (iface, handle)))
|
||||
{
|
||||
lt__handle *cur = (lt__handle *) handle;
|
||||
lt_dlhandle cur = handle;
|
||||
if (cur && cur->info.name && streq (cur->info.name, module_name))
|
||||
break;
|
||||
}
|
||||
@ -2372,7 +2369,7 @@ lt_dlhandle_map (lt_dlinterface_id iface,
|
||||
int (*func) (lt_dlhandle handle, void *data), void *data)
|
||||
{
|
||||
lt__interface_id *iterator = (lt__interface_id *) iface;
|
||||
lt__handle *cur = (lt__handle *) handles;
|
||||
lt_dlhandle cur = handles;
|
||||
|
||||
assert (iface); /* iface is a required argument */
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* ltdl.h -- generic dlopen functions
|
||||
|
||||
Copyright (C) 1998-2000, 2004, 2005,
|
||||
2007 Free Software Foundation, Inc.
|
||||
2007, 2008 Free Software Foundation, Inc.
|
||||
Written by Thomas Tanner, 1998
|
||||
|
||||
NOTE: The canonical source of this file is maintained with the
|
||||
@ -47,7 +47,7 @@ LT_BEGIN_C_DECLS
|
||||
/* --- DYNAMIC MODULE LOADING API --- */
|
||||
|
||||
|
||||
typedef void * lt_dlhandle; /* A loaded module. */
|
||||
typedef struct lt__handle *lt_dlhandle; /* A loaded module. */
|
||||
|
||||
/* Initialisation and finalisation functions for libltdl. */
|
||||
LT_SCOPE int lt_dlinit (void);
|
||||
|
Loading…
Reference in New Issue
Block a user