mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-10 14:00:21 +02:00
* upstream/ltdl.c: New copy from libtool 1.4.3.
* raw-ltdl.c: Merged in changes from libtool 1.4.3.
This commit is contained in:
parent
fc41ba03f3
commit
f5d6f0fcab
2 changed files with 374 additions and 313 deletions
|
@ -94,6 +94,11 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
|||
|
||||
#include "raw-ltdl.h"
|
||||
|
||||
#if WITH_DMALLOC
|
||||
# include <dmalloc.h>
|
||||
#endif
|
||||
|
||||
|
||||
/* Saves on those hard to debug '\0' typos.... */
|
||||
#define LT_EOS_CHAR '\0'
|
||||
|
||||
|
@ -167,6 +172,18 @@ SCMLTSTATIC LT_GLOBAL_DATA void (*lt_dlfree) LT_PARAMS((lt_ptr ptr))
|
|||
|
||||
/* The following macros reduce the amount of typing needed to cast
|
||||
assigned memory. */
|
||||
#if WITH_DMALLOC
|
||||
|
||||
#define LT_DLMALLOC(tp, n) ((tp *) xmalloc ((n) * sizeof(tp)))
|
||||
#define LT_DLREALLOC(tp, p, n) ((tp *) xrealloc ((p), (n) * sizeof(tp)))
|
||||
#define LT_DLFREE(p) \
|
||||
LT_STMT_START { if (p) (p) = (xfree (p), (lt_ptr) 0); } LT_STMT_END
|
||||
|
||||
#define LT_EMALLOC(tp, n) ((tp *) xmalloc ((n) * sizeof(tp)))
|
||||
#define LT_EREALLOC(tp, p, n) ((tp *) xrealloc ((p), (n) * sizeof(tp)))
|
||||
|
||||
#else
|
||||
|
||||
#define LT_DLMALLOC(tp, n) ((tp *) lt_dlmalloc ((n) * sizeof(tp)))
|
||||
#define LT_DLREALLOC(tp, p, n) ((tp *) rpl_realloc ((p), (n) * sizeof(tp)))
|
||||
#define LT_DLFREE(p) \
|
||||
|
@ -175,8 +192,10 @@ SCMLTSTATIC LT_GLOBAL_DATA void (*lt_dlfree) LT_PARAMS((lt_ptr ptr))
|
|||
#define LT_EMALLOC(tp, n) ((tp *) lt_emalloc ((n) * sizeof(tp)))
|
||||
#define LT_EREALLOC(tp, p, n) ((tp *) lt_erealloc ((p), (n) * sizeof(tp)))
|
||||
|
||||
#endif
|
||||
|
||||
#define LT_DLMEM_REASSIGN(p, q) LT_STMT_START { \
|
||||
if ((p) != (q)) { lt_dlfree (p); (p) = (q); (q) = 0; } \
|
||||
if ((p) != (q)) { if (p) lt_dlfree (p); (p) = (q); (q) = 0; } \
|
||||
} LT_STMT_END
|
||||
|
||||
|
||||
|
@ -188,11 +207,11 @@ SCMLTSTATIC LT_GLOBAL_DATA void (*lt_dlfree) LT_PARAMS((lt_ptr ptr))
|
|||
|
||||
static char *strdup LT_PARAMS((const char *str));
|
||||
|
||||
char *
|
||||
static char *
|
||||
strdup(str)
|
||||
const char *str;
|
||||
{
|
||||
char *tmp = 0;
|
||||
char *tmp = NULL;
|
||||
|
||||
if (str)
|
||||
{
|
||||
|
@ -214,16 +233,16 @@ strdup(str)
|
|||
|
||||
static int strcmp LT_PARAMS((const char *str1, const char *str2));
|
||||
|
||||
int
|
||||
static int
|
||||
strcmp (str1, str2)
|
||||
const char *str1;
|
||||
const char *str2;
|
||||
{
|
||||
if (str1 == str2)
|
||||
return 0;
|
||||
if (str1 == 0)
|
||||
if (str1 == NULL)
|
||||
return -1;
|
||||
if (str2 == 0)
|
||||
if (str2 == NULL)
|
||||
return 1;
|
||||
|
||||
for (;*str1 && *str2; ++str1, ++str2)
|
||||
|
@ -246,7 +265,7 @@ strcmp (str1, str2)
|
|||
|
||||
static const char *strchr LT_PARAMS((const char *str, int ch));
|
||||
|
||||
const char*
|
||||
static const char*
|
||||
strchr(str, ch)
|
||||
const char *str;
|
||||
int ch;
|
||||
|
@ -272,12 +291,12 @@ strchr(str, ch)
|
|||
|
||||
static const char *strrchr LT_PARAMS((const char *str, int ch));
|
||||
|
||||
const char*
|
||||
static const char*
|
||||
strrchr(str, ch)
|
||||
const char *str;
|
||||
int ch;
|
||||
{
|
||||
const char *p, *q = 0;
|
||||
const char *p, *q = NULL;
|
||||
|
||||
for (p = str; *p != LT_EOS_CHAR; ++p)
|
||||
{
|
||||
|
@ -306,7 +325,7 @@ strrchr(str, ch)
|
|||
|
||||
static lt_ptr memcpy LT_PARAMS((lt_ptr dest, const lt_ptr src, size_t size));
|
||||
|
||||
lt_ptr
|
||||
static lt_ptr
|
||||
memcpy (dest, src, size)
|
||||
lt_ptr dest;
|
||||
const lt_ptr src;
|
||||
|
@ -330,7 +349,7 @@ memcpy (dest, src, size)
|
|||
|
||||
static lt_ptr memmove LT_PARAMS((lt_ptr dest, const lt_ptr src, size_t size));
|
||||
|
||||
lt_ptr
|
||||
static lt_ptr
|
||||
memmove (dest, src, size)
|
||||
lt_ptr dest;
|
||||
const lt_ptr src;
|
||||
|
@ -371,22 +390,22 @@ memmove (dest, src, size)
|
|||
of the source unless you know enough about, or wrote malloc. So
|
||||
this code is disabled... */
|
||||
|
||||
lt_ptr
|
||||
static lt_ptr
|
||||
realloc (ptr, size)
|
||||
lt_ptr ptr;
|
||||
size_t size;
|
||||
{
|
||||
if (size <= 0)
|
||||
if (size == 0)
|
||||
{
|
||||
/* For zero or less bytes, free the original memory */
|
||||
if (ptr != 0)
|
||||
if (ptr != NULL)
|
||||
{
|
||||
lt_dlfree (ptr);
|
||||
}
|
||||
|
||||
return (lt_ptr) 0;
|
||||
}
|
||||
else if (ptr == 0)
|
||||
else if (ptr == NULL)
|
||||
{
|
||||
/* Allow reallocation of a NULL pointer. */
|
||||
return lt_dlmalloc (size);
|
||||
|
@ -417,7 +436,7 @@ realloc (ptr, size)
|
|||
static error_t argz_append LT_PARAMS((char **pargz, size_t *pargz_len,
|
||||
const char *buf, size_t buf_len));
|
||||
|
||||
error_t
|
||||
static error_t
|
||||
argz_append (pargz, pargz_len, buf, buf_len)
|
||||
char **pargz;
|
||||
size_t *pargz_len;
|
||||
|
@ -459,7 +478,7 @@ argz_append (pargz, pargz_len, buf, buf_len)
|
|||
static error_t argz_create_sep LT_PARAMS((const char *str, int delim,
|
||||
char **pargz, size_t *pargz_len));
|
||||
|
||||
error_t
|
||||
static error_t
|
||||
argz_create_sep (str, delim, pargz, pargz_len)
|
||||
const char *str;
|
||||
int delim;
|
||||
|
@ -467,7 +486,7 @@ argz_create_sep (str, delim, pargz, pargz_len)
|
|||
size_t *pargz_len;
|
||||
{
|
||||
size_t argz_len;
|
||||
char *argz = 0;
|
||||
char *argz = NULL;
|
||||
|
||||
assert (str);
|
||||
assert (pargz);
|
||||
|
@ -522,7 +541,7 @@ argz_create_sep (str, delim, pargz, pargz_len)
|
|||
static error_t argz_insert LT_PARAMS((char **pargz, size_t *pargz_len,
|
||||
char *before, const char *entry));
|
||||
|
||||
error_t
|
||||
static error_t
|
||||
argz_insert (pargz, pargz_len, before, entry)
|
||||
char **pargz;
|
||||
size_t *pargz_len;
|
||||
|
@ -533,11 +552,6 @@ argz_insert (pargz, pargz_len, before, entry)
|
|||
assert (pargz_len);
|
||||
assert (entry && *entry);
|
||||
|
||||
/* Either PARGZ/PARGZ_LEN is empty and BEFORE is NULL,
|
||||
or BEFORE points into an address within the ARGZ vector. */
|
||||
assert ((!*pargz && !*pargz_len && !before)
|
||||
|| ((*pargz <= before) && (before < (*pargz + *pargz_len))));
|
||||
|
||||
/* No BEFORE address indicates ENTRY should be inserted after the
|
||||
current last element. */
|
||||
if (!before)
|
||||
|
@ -584,7 +598,7 @@ argz_insert (pargz, pargz_len, before, entry)
|
|||
static char *argz_next LT_PARAMS((char *argz, size_t argz_len,
|
||||
const char *entry));
|
||||
|
||||
char *
|
||||
static char *
|
||||
argz_next (argz, argz_len, entry)
|
||||
char *argz;
|
||||
size_t argz_len;
|
||||
|
@ -629,7 +643,7 @@ argz_next (argz, argz_len, entry)
|
|||
static void argz_stringify LT_PARAMS((char *argz, size_t argz_len,
|
||||
int sep));
|
||||
|
||||
void
|
||||
static void
|
||||
argz_stringify (argz, argz_len, sep)
|
||||
char *argz;
|
||||
size_t argz_len;
|
||||
|
@ -753,11 +767,11 @@ static const char sys_search_path[] = LTDL_SYSSEARCHPATH;
|
|||
|
||||
/* The mutex functions stored here are global, and are necessarily the
|
||||
same for all threads that wish to share access to libltdl. */
|
||||
static lt_dlmutex_lock *lt_dlmutex_lock_func = 0;
|
||||
static lt_dlmutex_unlock *lt_dlmutex_unlock_func = 0;
|
||||
static lt_dlmutex_seterror *lt_dlmutex_seterror_func = 0;
|
||||
static lt_dlmutex_geterror *lt_dlmutex_geterror_func = 0;
|
||||
static const char *lt_dllast_error = 0;
|
||||
static lt_dlmutex_lock *lt_dlmutex_lock_func = NULL;
|
||||
static lt_dlmutex_unlock *lt_dlmutex_unlock_func = NULL;
|
||||
static lt_dlmutex_seterror *lt_dlmutex_seterror_func = NULL;
|
||||
static lt_dlmutex_geterror *lt_dlmutex_geterror_func = NULL;
|
||||
static const char *lt_dllast_error = NULL;
|
||||
|
||||
|
||||
/* Either set or reset the mutex functions. Either all the arguments must
|
||||
|
@ -805,7 +819,7 @@ lt_dlmutex_register (lock, unlock, seterror, geterror)
|
|||
|
||||
/* --- ERROR HANDLING --- */
|
||||
|
||||
static const char **user_error_strings = 0;
|
||||
static const char **user_error_strings = NULL;
|
||||
static int errorcount = LT_ERROR_MAX;
|
||||
|
||||
int
|
||||
|
@ -814,7 +828,7 @@ lt_dladderror (diagnostic)
|
|||
{
|
||||
int errindex = 0;
|
||||
int result = -1;
|
||||
const char **temp = (const char **) 0;
|
||||
const char **temp = NULL;
|
||||
|
||||
assert (diagnostic);
|
||||
|
||||
|
@ -864,7 +878,7 @@ lt_dlseterror (errindex)
|
|||
return errors;
|
||||
}
|
||||
|
||||
lt_ptr
|
||||
static lt_ptr
|
||||
lt_emalloc (size)
|
||||
size_t size;
|
||||
{
|
||||
|
@ -874,7 +888,7 @@ lt_emalloc (size)
|
|||
return mem;
|
||||
}
|
||||
|
||||
lt_ptr
|
||||
static lt_ptr
|
||||
lt_erealloc (addr, size)
|
||||
lt_ptr addr;
|
||||
size_t size;
|
||||
|
@ -885,14 +899,14 @@ lt_erealloc (addr, size)
|
|||
return mem;
|
||||
}
|
||||
|
||||
char *
|
||||
static char *
|
||||
lt_estrdup (str)
|
||||
const char *str;
|
||||
{
|
||||
char *dup = strdup (str);
|
||||
if (LT_STRLEN (str) && !dup)
|
||||
char *copy = strdup (str);
|
||||
if (LT_STRLEN (str) && !copy)
|
||||
LT_DLMUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
|
||||
return dup;
|
||||
return copy;
|
||||
}
|
||||
|
||||
|
||||
|
@ -1126,7 +1140,7 @@ sys_shl_sym (loader_data, module, symbol)
|
|||
lt_module module;
|
||||
const char *symbol;
|
||||
{
|
||||
lt_ptr address = 0;
|
||||
lt_ptr address = NULL;
|
||||
|
||||
/* sys_shl_open should never return a NULL module handle */
|
||||
if (module == (lt_module) 0)
|
||||
|
@ -1170,16 +1184,16 @@ sys_wll_open (loader_data, filename)
|
|||
const char *filename;
|
||||
{
|
||||
lt_dlhandle cur;
|
||||
lt_module module = 0;
|
||||
const char *errormsg = 0;
|
||||
char *searchname = 0;
|
||||
lt_module module = NULL;
|
||||
const char *errormsg = NULL;
|
||||
char *searchname = NULL;
|
||||
char *ext;
|
||||
char self_name_buf[MAX_PATH];
|
||||
|
||||
if (!filename)
|
||||
{
|
||||
/* Get the name of main module */
|
||||
*self_name_buf = 0;
|
||||
*self_name_buf = '\0';
|
||||
GetModuleFileName (NULL, self_name_buf, sizeof (self_name_buf));
|
||||
filename = ext = self_name_buf;
|
||||
}
|
||||
|
@ -1229,7 +1243,7 @@ sys_wll_open (loader_data, filename)
|
|||
{
|
||||
if (!cur->module)
|
||||
{
|
||||
cur = 0;
|
||||
cur = NULL;
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -1245,7 +1259,7 @@ sys_wll_open (loader_data, filename)
|
|||
if (cur || !module)
|
||||
{
|
||||
LT_DLMUTEX_SETERROR (LT_DLSTRERROR (CANNOT_OPEN));
|
||||
module = 0;
|
||||
module = NULL;
|
||||
}
|
||||
|
||||
return module;
|
||||
|
@ -1351,13 +1365,13 @@ sys_bedl_sym (loader_data, module, symbol)
|
|||
lt_module module;
|
||||
const char *symbol;
|
||||
{
|
||||
lt_ptr address = 0;
|
||||
lt_ptr address = NULL;
|
||||
image_id image = (image_id) module;
|
||||
|
||||
if (get_image_symbol (image, symbol, B_SYMBOL_TYPE_ANY, address) != B_OK)
|
||||
{
|
||||
LT_DLMUTEX_SETERROR (LT_DLSTRERROR (SYMBOL_NOT_FOUND));
|
||||
address = 0;
|
||||
address = NULL;
|
||||
}
|
||||
|
||||
return address;
|
||||
|
@ -1394,7 +1408,7 @@ sys_dld_open (loader_data, filename)
|
|||
{
|
||||
LT_DLMUTEX_SETERROR (LT_DLSTRERROR (CANNOT_OPEN));
|
||||
LT_DLFREE (module);
|
||||
module = 0;
|
||||
module = NULL;
|
||||
}
|
||||
|
||||
return module;
|
||||
|
@ -1456,8 +1470,8 @@ typedef struct lt_dlsymlists_t
|
|||
const lt_dlsymlist *syms;
|
||||
} lt_dlsymlists_t;
|
||||
|
||||
static const lt_dlsymlist *default_preloaded_symbols = 0;
|
||||
static lt_dlsymlists_t *preloaded_symbols = 0;
|
||||
static const lt_dlsymlist *default_preloaded_symbols = NULL;
|
||||
static lt_dlsymlists_t *preloaded_symbols = NULL;
|
||||
|
||||
static int
|
||||
presym_init (loader_data)
|
||||
|
@ -1467,7 +1481,7 @@ presym_init (loader_data)
|
|||
|
||||
LT_DLMUTEX_LOCK ();
|
||||
|
||||
preloaded_symbols = 0;
|
||||
preloaded_symbols = NULL;
|
||||
if (default_preloaded_symbols)
|
||||
{
|
||||
errors = lt_dlpreload (default_preloaded_symbols);
|
||||
|
@ -1493,7 +1507,7 @@ presym_free_symlists ()
|
|||
lists = lists->next;
|
||||
LT_DLFREE (tmp);
|
||||
}
|
||||
preloaded_symbols = 0;
|
||||
preloaded_symbols = NULL;
|
||||
|
||||
LT_DLMUTEX_UNLOCK ();
|
||||
|
||||
|
@ -1602,7 +1616,7 @@ presym_close (loader_data, module)
|
|||
lt_module module;
|
||||
{
|
||||
/* Just to silence gcc -Wall */
|
||||
module = 0;
|
||||
module = NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1693,13 +1707,21 @@ static int lt_argz_insert LT_PARAMS((char **pargz,
|
|||
static int lt_argz_insertinorder LT_PARAMS((char **pargz,
|
||||
size_t *pargz_len,
|
||||
const char *entry));
|
||||
static int lt_argz_insertdir LT_PARAMS((char **pargz,
|
||||
size_t *pargz_len,
|
||||
const char *dirnam,
|
||||
struct dirent *dp));
|
||||
static int lt_dlpath_insertdir LT_PARAMS((char **ppath,
|
||||
char *before,
|
||||
const char *dir));
|
||||
static int list_files_by_dir LT_PARAMS((const char *dirnam,
|
||||
char **pargz,
|
||||
size_t *pargz_len));
|
||||
static int file_not_found LT_PARAMS((void));
|
||||
|
||||
static char *user_search_path= 0;
|
||||
static lt_dlloader *loaders = 0;
|
||||
static lt_dlhandle handles = 0;
|
||||
static char *user_search_path= NULL;
|
||||
static lt_dlloader *loaders = NULL;
|
||||
static lt_dlhandle handles = NULL;
|
||||
static int initialized = 0;
|
||||
|
||||
/* Initialize libltdl. */
|
||||
|
@ -1713,8 +1735,8 @@ lt_dlinit ()
|
|||
/* Initialize only at first call. */
|
||||
if (++initialized == 1)
|
||||
{
|
||||
handles = 0;
|
||||
user_search_path = 0; /* empty search path */
|
||||
handles = NULL;
|
||||
user_search_path = NULL; /* empty search path */
|
||||
|
||||
#if HAVE_LIBDL && !defined(__CYGWIN__)
|
||||
errors += lt_dlloader_add (lt_dlloader_next (0), &sys_dl, "dlopen");
|
||||
|
@ -1849,7 +1871,7 @@ lt_dlexit ()
|
|||
|
||||
LT_DLMEM_REASSIGN (loader, next);
|
||||
}
|
||||
loaders = 0;
|
||||
loaders = NULL;
|
||||
}
|
||||
|
||||
done:
|
||||
|
@ -1910,7 +1932,7 @@ tryall_dlopen (handle, filename)
|
|||
}
|
||||
else
|
||||
{
|
||||
cur->info.filename = 0;
|
||||
cur->info.filename = NULL;
|
||||
}
|
||||
|
||||
while (loader)
|
||||
|
@ -1919,7 +1941,7 @@ tryall_dlopen (handle, filename)
|
|||
|
||||
cur->module = loader->module_open (data, filename);
|
||||
|
||||
if (cur->module != 0)
|
||||
if (cur->module != NULL)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
@ -1950,7 +1972,7 @@ tryall_dlopen_module (handle, prefix, dirname, dlname)
|
|||
const char *dlname;
|
||||
{
|
||||
int error = 0;
|
||||
char *filename = 0;
|
||||
char *filename = NULL;
|
||||
size_t filename_len = 0;
|
||||
size_t dirname_len = LT_STRLEN (dirname);
|
||||
|
||||
|
@ -1960,7 +1982,7 @@ tryall_dlopen_module (handle, prefix, dirname, dlname)
|
|||
#ifdef LT_DIRSEP_CHAR
|
||||
/* Only canonicalized names (i.e. with DIRSEP chars already converted)
|
||||
should make it into this function: */
|
||||
assert (strchr (dirname, LT_DIRSEP_CHAR) == 0);
|
||||
assert (strchr (dirname, LT_DIRSEP_CHAR) == NULL);
|
||||
#endif
|
||||
|
||||
if (dirname_len > 0)
|
||||
|
@ -2045,7 +2067,7 @@ canonicalize_path (path, pcanonical)
|
|||
const char *path;
|
||||
char **pcanonical;
|
||||
{
|
||||
char *canonical = 0;
|
||||
char *canonical = NULL;
|
||||
|
||||
assert (path && *path);
|
||||
assert (pcanonical);
|
||||
|
@ -2147,11 +2169,11 @@ foreach_dirinpath (search_path, base_name, func, data1, data2)
|
|||
{
|
||||
int result = 0;
|
||||
int filenamesize = 0;
|
||||
int lenbase = LT_STRLEN (base_name);
|
||||
size_t lenbase = LT_STRLEN (base_name);
|
||||
size_t argz_len = 0;
|
||||
char * argz = 0;
|
||||
char * filename = 0;
|
||||
char * canonical = 0;
|
||||
char *argz = NULL;
|
||||
char *filename = NULL;
|
||||
char *canonical = NULL;
|
||||
|
||||
LT_DLMUTEX_LOCK ();
|
||||
|
||||
|
@ -2168,10 +2190,10 @@ foreach_dirinpath (search_path, base_name, func, data1, data2)
|
|||
goto cleanup;
|
||||
|
||||
{
|
||||
char *dir_name = 0;
|
||||
char *dir_name = NULL;
|
||||
while ((dir_name = argz_next (argz, argz_len, dir_name)))
|
||||
{
|
||||
int lendir = LT_STRLEN (dir_name);
|
||||
size_t lendir = LT_STRLEN (dir_name);
|
||||
|
||||
if (lendir +1 +lenbase >= filenamesize)
|
||||
{
|
||||
|
@ -2182,7 +2204,9 @@ foreach_dirinpath (search_path, base_name, func, data1, data2)
|
|||
goto cleanup;
|
||||
}
|
||||
|
||||
strncpy (filename, dir_name, lendir);
|
||||
assert (filenamesize > lendir);
|
||||
strcpy (filename, dir_name);
|
||||
|
||||
if (base_name && *base_name)
|
||||
{
|
||||
if (filename[lendir -1] != '/')
|
||||
|
@ -2233,7 +2257,7 @@ find_file_callback (filename, data1, data2)
|
|||
|
||||
LT_DLFREE (*pdir);
|
||||
*pdir = lt_estrdup (filename);
|
||||
is_done = (*pdir == 0) ? -1 : 1;
|
||||
is_done = (*pdir == NULL) ? -1 : 1;
|
||||
}
|
||||
|
||||
return is_done;
|
||||
|
@ -2245,7 +2269,7 @@ find_file (search_path, base_name, pdir)
|
|||
const char *base_name;
|
||||
char **pdir;
|
||||
{
|
||||
FILE *file = 0;
|
||||
FILE *file = NULL;
|
||||
|
||||
foreach_dirinpath (search_path, base_name, find_file_callback, pdir, &file);
|
||||
|
||||
|
@ -2258,17 +2282,17 @@ find_handle_callback (filename, data, ignored)
|
|||
lt_ptr data;
|
||||
lt_ptr ignored;
|
||||
{
|
||||
lt_dlhandle *handle = (lt_dlhandle *) data;
|
||||
int found = !access (filename, F_OK);
|
||||
lt_dlhandle *handle = (lt_dlhandle *) data;
|
||||
int notfound = access (filename, R_OK);
|
||||
|
||||
/* Bail out if file cannot be read... */
|
||||
if (!found)
|
||||
if (notfound)
|
||||
return 0;
|
||||
|
||||
/* Try to dlopen the file, but do not continue searching in any
|
||||
case. */
|
||||
if (tryall_dlopen (handle, filename) != 0)
|
||||
*handle = 0;
|
||||
*handle = NULL;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
@ -2297,10 +2321,10 @@ load_deplibs (handle, deplibs)
|
|||
char *deplibs;
|
||||
{
|
||||
#if LTDL_DLOPEN_DEPLIBS
|
||||
char *p, *save_search_path = 0;
|
||||
char *p, *save_search_path = NULL;
|
||||
int depcount = 0;
|
||||
int i;
|
||||
char **names = 0;
|
||||
char **names = NULL;
|
||||
#endif
|
||||
int errors = 0;
|
||||
|
||||
|
@ -2336,7 +2360,7 @@ load_deplibs (handle, deplibs)
|
|||
if (strncmp(p, "-L", 2) == 0 || strncmp(p, "-R", 2) == 0)
|
||||
{
|
||||
char save = *end;
|
||||
*end = 0; /* set a temporary string terminator */
|
||||
*end = '\0'; /* set a temporary string terminator */
|
||||
if (lt_dladdsearchdir(p+2))
|
||||
{
|
||||
goto cleanup;
|
||||
|
@ -2393,7 +2417,7 @@ load_deplibs (handle, deplibs)
|
|||
{
|
||||
char *name;
|
||||
char save = *end;
|
||||
*end = 0; /* set a temporary string terminator */
|
||||
*end = '\0'; /* set a temporary string terminator */
|
||||
if (strncmp(p, "-l", 2) == 0)
|
||||
{
|
||||
size_t name_len = 3+ /* "lib" */ LT_STRLEN (p + 2);
|
||||
|
@ -2482,7 +2506,7 @@ trim (dest, str)
|
|||
/* remove the leading and trailing "'" from str
|
||||
and store the result in dest */
|
||||
const char *end = strrchr (str, '\'');
|
||||
int len = LT_STRLEN (str);
|
||||
size_t len = LT_STRLEN (str);
|
||||
char *tmp;
|
||||
|
||||
LT_DLFREE (*dest);
|
||||
|
@ -2499,7 +2523,7 @@ trim (dest, str)
|
|||
}
|
||||
else
|
||||
{
|
||||
*dest = 0;
|
||||
*dest = NULL;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -2520,22 +2544,22 @@ free_vars (dlname, oldname, libdir, deplibs)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
static int
|
||||
try_dlopen (phandle, filename)
|
||||
lt_dlhandle *phandle;
|
||||
const char *filename;
|
||||
{
|
||||
const char * ext = 0;
|
||||
const char * saved_error = 0;
|
||||
char * canonical = 0;
|
||||
char * base_name = 0;
|
||||
char * dir = 0;
|
||||
char * name = 0;
|
||||
const char * ext = NULL;
|
||||
const char * saved_error = NULL;
|
||||
char * canonical = NULL;
|
||||
char * base_name = NULL;
|
||||
char * dir = NULL;
|
||||
char * name = NULL;
|
||||
int errors = 0;
|
||||
lt_dlhandle newhandle;
|
||||
|
||||
assert (phandle);
|
||||
assert (*phandle == 0);
|
||||
assert (*phandle == NULL);
|
||||
|
||||
LT_DLMUTEX_GETERROR (saved_error);
|
||||
|
||||
|
@ -2543,7 +2567,7 @@ try_dlopen (phandle, filename)
|
|||
if (!filename)
|
||||
{
|
||||
*phandle = (lt_dlhandle) LT_EMALLOC (struct lt_dlhandle_struct, 1);
|
||||
if (*phandle == 0)
|
||||
if (*phandle == NULL)
|
||||
return 1;
|
||||
|
||||
memset (*phandle, 0, sizeof(struct lt_dlhandle_struct));
|
||||
|
@ -2600,14 +2624,13 @@ try_dlopen (phandle, filename)
|
|||
if (ext && strcmp (ext, archive_ext) == 0)
|
||||
{
|
||||
/* this seems to be a libtool module */
|
||||
FILE * file = 0;
|
||||
char * dlname = 0;
|
||||
char * old_name = 0;
|
||||
char * libdir = 0;
|
||||
char * deplibs = 0;
|
||||
char * line = 0;
|
||||
FILE * file = NULL;
|
||||
char * dlname = NULL;
|
||||
char * old_name = NULL;
|
||||
char * libdir = NULL;
|
||||
char * deplibs = NULL;
|
||||
char * line = NULL;
|
||||
size_t line_len;
|
||||
int i;
|
||||
|
||||
/* if we can't find the installed flag, it is probably an
|
||||
installed libtool archive, produced with an old version
|
||||
|
@ -2623,23 +2646,26 @@ try_dlopen (phandle, filename)
|
|||
}
|
||||
|
||||
/* canonicalize the module name */
|
||||
for (i = 0; i < ext - base_name; ++i)
|
||||
{
|
||||
if (isalnum ((int)(base_name[i])))
|
||||
{
|
||||
name[i] = base_name[i];
|
||||
}
|
||||
else
|
||||
{
|
||||
name[i] = '_';
|
||||
}
|
||||
}
|
||||
name[ext - base_name] = LT_EOS_CHAR;
|
||||
{
|
||||
size_t i;
|
||||
for (i = 0; i < ext - base_name; ++i)
|
||||
{
|
||||
if (isalnum ((int)(base_name[i])))
|
||||
{
|
||||
name[i] = base_name[i];
|
||||
}
|
||||
else
|
||||
{
|
||||
name[i] = '_';
|
||||
}
|
||||
}
|
||||
name[ext - base_name] = LT_EOS_CHAR;
|
||||
}
|
||||
|
||||
/* Now try to open the .la file. If there is no directory name
|
||||
component, try to find it first in user_search_path and then other
|
||||
prescribed paths. Otherwise (or in any case if the module was not
|
||||
yet found) try opening just the module name as passed. */
|
||||
/* Now try to open the .la file. If there is no directory name
|
||||
component, try to find it first in user_search_path and then other
|
||||
prescribed paths. Otherwise (or in any case if the module was not
|
||||
yet found) try opening just the module name as passed. */
|
||||
if (!dir)
|
||||
{
|
||||
const char *search_path;
|
||||
|
@ -2698,7 +2724,7 @@ try_dlopen (phandle, filename)
|
|||
/* read the .la file */
|
||||
while (!feof (file))
|
||||
{
|
||||
if (!fgets (line, line_len, file))
|
||||
if (!fgets (line, (int) line_len, file))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
@ -2708,7 +2734,7 @@ try_dlopen (phandle, filename)
|
|||
while ((line[LT_STRLEN(line) -1] != '\n') && (!feof (file)))
|
||||
{
|
||||
line = LT_DLREALLOC (char, line, line_len *2);
|
||||
if (!fgets (&line[line_len -1], line_len +1, file))
|
||||
if (!fgets (&line[line_len -1], (int) line_len +1, file))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
@ -2766,7 +2792,7 @@ try_dlopen (phandle, filename)
|
|||
errors += trim (&dlname, &line[sizeof (STR_LIBRARY_NAMES) - 1]);
|
||||
if (!errors
|
||||
&& dlname
|
||||
&& (last_libname = strrchr (dlname, ' ')) != 0)
|
||||
&& (last_libname = strrchr (dlname, ' ')) != NULL)
|
||||
{
|
||||
last_libname = lt_estrdup (last_libname + 1);
|
||||
if (!last_libname)
|
||||
|
@ -2787,7 +2813,7 @@ try_dlopen (phandle, filename)
|
|||
|
||||
/* allocate the handle */
|
||||
*phandle = (lt_dlhandle) LT_EMALLOC (struct lt_dlhandle_struct, 1);
|
||||
if (*phandle == 0)
|
||||
if (*phandle == NULL)
|
||||
++errors;
|
||||
|
||||
if (errors)
|
||||
|
@ -2831,7 +2857,7 @@ try_dlopen (phandle, filename)
|
|||
{
|
||||
/* not a libtool module */
|
||||
*phandle = (lt_dlhandle) LT_EMALLOC (struct lt_dlhandle_struct, 1);
|
||||
if (*phandle == 0)
|
||||
if (*phandle == NULL)
|
||||
{
|
||||
++errors;
|
||||
goto cleanup;
|
||||
|
@ -2856,8 +2882,10 @@ try_dlopen (phandle, filename)
|
|||
#endif
|
||||
)))
|
||||
{
|
||||
if (tryall_dlopen (&newhandle, filename) != 0)
|
||||
newhandle = 0;
|
||||
if (tryall_dlopen (&newhandle, filename) != 0)
|
||||
{
|
||||
newhandle = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
if (!newhandle)
|
||||
|
@ -2896,7 +2924,7 @@ lt_dlhandle
|
|||
lt_dlopen (filename)
|
||||
const char *filename;
|
||||
{
|
||||
lt_dlhandle handle = 0;
|
||||
lt_dlhandle handle = NULL;
|
||||
|
||||
/* Just incase we missed a code path in try_dlopen() that reports
|
||||
an error, but forgets to reset handle... */
|
||||
|
@ -2911,7 +2939,7 @@ lt_dlopen (filename)
|
|||
static int
|
||||
file_not_found ()
|
||||
{
|
||||
const char *error = 0;
|
||||
const char *error = NULL;
|
||||
|
||||
LT_DLMUTEX_GETERROR (error);
|
||||
if (error == LT_DLSTRERROR (FILE_NOT_FOUND))
|
||||
|
@ -2928,10 +2956,10 @@ lt_dlhandle
|
|||
lt_dlopenext (filename)
|
||||
const char *filename;
|
||||
{
|
||||
lt_dlhandle handle = 0;
|
||||
char * tmp = 0;
|
||||
char * ext = 0;
|
||||
int len;
|
||||
lt_dlhandle handle = NULL;
|
||||
char * tmp = NULL;
|
||||
char * ext = NULL;
|
||||
size_t len;
|
||||
int errors = 0;
|
||||
|
||||
if (!filename)
|
||||
|
@ -3011,7 +3039,7 @@ lt_dlopenext (filename)
|
|||
}
|
||||
|
||||
|
||||
int
|
||||
static int
|
||||
lt_argz_insert (pargz, pargz_len, before, entry)
|
||||
char **pargz;
|
||||
size_t *pargz_len;
|
||||
|
@ -3037,13 +3065,13 @@ lt_argz_insert (pargz, pargz_len, before, entry)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
static int
|
||||
lt_argz_insertinorder (pargz, pargz_len, entry)
|
||||
char **pargz;
|
||||
size_t *pargz_len;
|
||||
const char *entry;
|
||||
{
|
||||
char *before = 0;
|
||||
char *before = NULL;
|
||||
|
||||
assert (pargz);
|
||||
assert (pargz_len);
|
||||
|
@ -3068,9 +3096,9 @@ lt_argz_insertdir (pargz, pargz_len, dirnam, dp)
|
|||
const char *dirnam;
|
||||
struct dirent *dp;
|
||||
{
|
||||
char *buf = 0;
|
||||
char *buf = NULL;
|
||||
size_t buf_len = 0;
|
||||
char *end = 0;
|
||||
char *end = NULL;
|
||||
size_t end_offset = 0;
|
||||
size_t dir_len = 0;
|
||||
int errors = 0;
|
||||
|
@ -3133,7 +3161,7 @@ list_files_by_dir (dirnam, pargz, pargz_len)
|
|||
char **pargz;
|
||||
size_t *pargz_len;
|
||||
{
|
||||
DIR *dirp = 0;
|
||||
DIR *dirp = NULL;
|
||||
int errors = 0;
|
||||
|
||||
assert (dirnam && *dirnam);
|
||||
|
@ -3144,7 +3172,7 @@ list_files_by_dir (dirnam, pargz, pargz_len)
|
|||
dirp = opendir (dirnam);
|
||||
if (dirp)
|
||||
{
|
||||
struct dirent *dp = 0;
|
||||
struct dirent *dp = NULL;
|
||||
|
||||
while ((dp = readdir (dirp)))
|
||||
if (dp->d_name[0] != '.')
|
||||
|
@ -3175,7 +3203,7 @@ foreachfile_callback (dirname, data1, data2)
|
|||
= (int (*) LT_PARAMS((const char *filename, lt_ptr data))) data1;
|
||||
|
||||
int is_done = 0;
|
||||
char *argz = 0;
|
||||
char *argz = NULL;
|
||||
size_t argz_len = 0;
|
||||
|
||||
if (list_files_by_dir (dirname, &argz, &argz_len) != 0)
|
||||
|
@ -3184,7 +3212,7 @@ foreachfile_callback (dirname, data1, data2)
|
|||
goto cleanup;
|
||||
|
||||
{
|
||||
char *filename = 0;
|
||||
char *filename = NULL;
|
||||
while ((filename = argz_next (argz, argz_len, filename)))
|
||||
if ((is_done = (*func) (filename, data2)))
|
||||
break;
|
||||
|
@ -3294,6 +3322,9 @@ lt_dlclose (handle)
|
|||
errors += handle->loader->module_close (data, handle->module);
|
||||
errors += unload_deplibs(handle);
|
||||
|
||||
/* It is up to the callers to free the data itself. */
|
||||
LT_DLFREE (handle->caller_data);
|
||||
|
||||
LT_DLFREE (handle->info.filename);
|
||||
LT_DLFREE (handle->info.name);
|
||||
LT_DLFREE (handle);
|
||||
|
@ -3318,7 +3349,7 @@ lt_dlsym (handle, symbol)
|
|||
lt_dlhandle handle;
|
||||
const char *symbol;
|
||||
{
|
||||
int lensym;
|
||||
size_t lensym;
|
||||
char lsym[LT_SYMBOL_LENGTH];
|
||||
char *sym;
|
||||
lt_ptr address;
|
||||
|
@ -3418,15 +3449,15 @@ lt_dlerror ()
|
|||
return error ? error : LT_DLSTRERROR (UNKNOWN);
|
||||
}
|
||||
|
||||
int
|
||||
static int
|
||||
lt_dlpath_insertdir (ppath, before, dir)
|
||||
char **ppath;
|
||||
char *before;
|
||||
const char *dir;
|
||||
{
|
||||
int errors = 0;
|
||||
char *canonical = 0;
|
||||
char *argz = 0;
|
||||
char *canonical = NULL;
|
||||
char *argz = NULL;
|
||||
size_t argz_len = 0;
|
||||
|
||||
assert (ppath);
|
||||
|
@ -3441,13 +3472,13 @@ lt_dlpath_insertdir (ppath, before, dir)
|
|||
assert (canonical && *canonical);
|
||||
|
||||
/* If *PPATH is empty, set it to DIR. */
|
||||
if (*ppath == 0)
|
||||
if (*ppath == NULL)
|
||||
{
|
||||
assert (!before); /* BEFORE cannot be set without PPATH. */
|
||||
assert (dir); /* Without DIR, don't call this function! */
|
||||
|
||||
*ppath = lt_estrdup (dir);
|
||||
if (*ppath == 0)
|
||||
if (*ppath == NULL)
|
||||
++errors;
|
||||
|
||||
return errors;
|
||||
|
@ -3681,7 +3712,7 @@ lt_dlcaller_set_data (key, handle, data)
|
|||
lt_ptr data;
|
||||
{
|
||||
int n_elements = 0;
|
||||
lt_ptr stale = (lt_ptr) 0;
|
||||
lt_ptr stale = NULL;
|
||||
int i;
|
||||
|
||||
/* This needs to be locked so that the caller data can be updated
|
||||
|
@ -3710,7 +3741,7 @@ lt_dlcaller_set_data (key, handle, data)
|
|||
|
||||
if (!temp)
|
||||
{
|
||||
stale = 0;
|
||||
stale = NULL;
|
||||
goto done;
|
||||
}
|
||||
|
||||
|
@ -3770,12 +3801,12 @@ lt_dlloader_add (place, dlloader, loader_name)
|
|||
const char *loader_name;
|
||||
{
|
||||
int errors = 0;
|
||||
lt_dlloader *node = 0, *ptr = 0;
|
||||
lt_dlloader *node = NULL, *ptr = NULL;
|
||||
|
||||
if ((dlloader == 0) /* diagnose null parameters */
|
||||
|| (dlloader->module_open == 0)
|
||||
|| (dlloader->module_close == 0)
|
||||
|| (dlloader->find_sym == 0))
|
||||
if ((dlloader == NULL) /* diagnose null parameters */
|
||||
|| (dlloader->module_open == NULL)
|
||||
|| (dlloader->module_close == NULL)
|
||||
|| (dlloader->find_sym == NULL))
|
||||
{
|
||||
LT_DLMUTEX_SETERROR (LT_DLSTRERROR (INVALID_LOADER));
|
||||
return 1;
|
||||
|
@ -3786,7 +3817,7 @@ lt_dlloader_add (place, dlloader, loader_name)
|
|||
if (!node)
|
||||
return 1;
|
||||
|
||||
node->next = 0;
|
||||
node->next = NULL;
|
||||
node->loader_name = loader_name;
|
||||
node->sym_prefix = dlloader->sym_prefix;
|
||||
node->dlloader_exit = dlloader->dlloader_exit;
|
||||
|
@ -3922,7 +3953,7 @@ const char *
|
|||
lt_dlloader_name (place)
|
||||
lt_dlloader *place;
|
||||
{
|
||||
const char *name = 0;
|
||||
const char *name = NULL;
|
||||
|
||||
if (place)
|
||||
{
|
||||
|
@ -3942,7 +3973,7 @@ lt_user_data *
|
|||
lt_dlloader_data (place)
|
||||
lt_dlloader *place;
|
||||
{
|
||||
lt_user_data *data = 0;
|
||||
lt_user_data *data = NULL;
|
||||
|
||||
if (place)
|
||||
{
|
||||
|
@ -3962,7 +3993,7 @@ lt_dlloader *
|
|||
lt_dlloader_find (loader_name)
|
||||
const char *loader_name;
|
||||
{
|
||||
lt_dlloader *place = 0;
|
||||
lt_dlloader *place = NULL;
|
||||
|
||||
LT_DLMUTEX_LOCK ();
|
||||
for (place = loaders; place; place = place->next)
|
||||
|
|
|
@ -94,6 +94,10 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
|||
|
||||
#include "ltdl.h"
|
||||
|
||||
#if WITH_DMALLOC
|
||||
# include <dmalloc.h>
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -166,6 +170,18 @@ LT_GLOBAL_DATA void (*lt_dlfree) LT_PARAMS((lt_ptr ptr))
|
|||
|
||||
/* The following macros reduce the amount of typing needed to cast
|
||||
assigned memory. */
|
||||
#if WITH_DMALLOC
|
||||
|
||||
#define LT_DLMALLOC(tp, n) ((tp *) xmalloc ((n) * sizeof(tp)))
|
||||
#define LT_DLREALLOC(tp, p, n) ((tp *) xrealloc ((p), (n) * sizeof(tp)))
|
||||
#define LT_DLFREE(p) \
|
||||
LT_STMT_START { if (p) (p) = (xfree (p), (lt_ptr) 0); } LT_STMT_END
|
||||
|
||||
#define LT_EMALLOC(tp, n) ((tp *) xmalloc ((n) * sizeof(tp)))
|
||||
#define LT_EREALLOC(tp, p, n) ((tp *) xrealloc ((p), (n) * sizeof(tp)))
|
||||
|
||||
#else
|
||||
|
||||
#define LT_DLMALLOC(tp, n) ((tp *) lt_dlmalloc ((n) * sizeof(tp)))
|
||||
#define LT_DLREALLOC(tp, p, n) ((tp *) rpl_realloc ((p), (n) * sizeof(tp)))
|
||||
#define LT_DLFREE(p) \
|
||||
|
@ -174,8 +190,10 @@ LT_GLOBAL_DATA void (*lt_dlfree) LT_PARAMS((lt_ptr ptr))
|
|||
#define LT_EMALLOC(tp, n) ((tp *) lt_emalloc ((n) * sizeof(tp)))
|
||||
#define LT_EREALLOC(tp, p, n) ((tp *) lt_erealloc ((p), (n) * sizeof(tp)))
|
||||
|
||||
#endif
|
||||
|
||||
#define LT_DLMEM_REASSIGN(p, q) LT_STMT_START { \
|
||||
if ((p) != (q)) { lt_dlfree (p); (p) = (q); (q) = 0; } \
|
||||
if ((p) != (q)) { if (p) lt_dlfree (p); (p) = (q); (q) = 0; } \
|
||||
} LT_STMT_END
|
||||
|
||||
|
||||
|
@ -187,11 +205,11 @@ LT_GLOBAL_DATA void (*lt_dlfree) LT_PARAMS((lt_ptr ptr))
|
|||
|
||||
static char *strdup LT_PARAMS((const char *str));
|
||||
|
||||
char *
|
||||
static char *
|
||||
strdup(str)
|
||||
const char *str;
|
||||
{
|
||||
char *tmp = 0;
|
||||
char *tmp = NULL;
|
||||
|
||||
if (str)
|
||||
{
|
||||
|
@ -213,16 +231,16 @@ strdup(str)
|
|||
|
||||
static int strcmp LT_PARAMS((const char *str1, const char *str2));
|
||||
|
||||
int
|
||||
static int
|
||||
strcmp (str1, str2)
|
||||
const char *str1;
|
||||
const char *str2;
|
||||
{
|
||||
if (str1 == str2)
|
||||
return 0;
|
||||
if (str1 == 0)
|
||||
if (str1 == NULL)
|
||||
return -1;
|
||||
if (str2 == 0)
|
||||
if (str2 == NULL)
|
||||
return 1;
|
||||
|
||||
for (;*str1 && *str2; ++str1, ++str2)
|
||||
|
@ -245,7 +263,7 @@ strcmp (str1, str2)
|
|||
|
||||
static const char *strchr LT_PARAMS((const char *str, int ch));
|
||||
|
||||
const char*
|
||||
static const char*
|
||||
strchr(str, ch)
|
||||
const char *str;
|
||||
int ch;
|
||||
|
@ -271,12 +289,12 @@ strchr(str, ch)
|
|||
|
||||
static const char *strrchr LT_PARAMS((const char *str, int ch));
|
||||
|
||||
const char*
|
||||
static const char*
|
||||
strrchr(str, ch)
|
||||
const char *str;
|
||||
int ch;
|
||||
{
|
||||
const char *p, *q = 0;
|
||||
const char *p, *q = NULL;
|
||||
|
||||
for (p = str; *p != LT_EOS_CHAR; ++p)
|
||||
{
|
||||
|
@ -305,7 +323,7 @@ strrchr(str, ch)
|
|||
|
||||
static lt_ptr memcpy LT_PARAMS((lt_ptr dest, const lt_ptr src, size_t size));
|
||||
|
||||
lt_ptr
|
||||
static lt_ptr
|
||||
memcpy (dest, src, size)
|
||||
lt_ptr dest;
|
||||
const lt_ptr src;
|
||||
|
@ -329,7 +347,7 @@ memcpy (dest, src, size)
|
|||
|
||||
static lt_ptr memmove LT_PARAMS((lt_ptr dest, const lt_ptr src, size_t size));
|
||||
|
||||
lt_ptr
|
||||
static lt_ptr
|
||||
memmove (dest, src, size)
|
||||
lt_ptr dest;
|
||||
const lt_ptr src;
|
||||
|
@ -364,22 +382,22 @@ memmove (dest, src, size)
|
|||
#undef realloc
|
||||
#define realloc rpl_realloc
|
||||
|
||||
lt_ptr
|
||||
static lt_ptr
|
||||
realloc (ptr, size)
|
||||
lt_ptr ptr;
|
||||
size_t size;
|
||||
{
|
||||
if (size <= 0)
|
||||
if (size == 0)
|
||||
{
|
||||
/* For zero or less bytes, free the original memory */
|
||||
if (ptr != 0)
|
||||
if (ptr != NULL)
|
||||
{
|
||||
lt_dlfree (ptr);
|
||||
}
|
||||
|
||||
return (lt_ptr) 0;
|
||||
}
|
||||
else if (ptr == 0)
|
||||
else if (ptr == NULL)
|
||||
{
|
||||
/* Allow reallocation of a NULL pointer. */
|
||||
return lt_dlmalloc (size);
|
||||
|
@ -408,7 +426,7 @@ realloc (ptr, size)
|
|||
static error_t argz_append LT_PARAMS((char **pargz, size_t *pargz_len,
|
||||
const char *buf, size_t buf_len));
|
||||
|
||||
error_t
|
||||
static error_t
|
||||
argz_append (pargz, pargz_len, buf, buf_len)
|
||||
char **pargz;
|
||||
size_t *pargz_len;
|
||||
|
@ -450,7 +468,7 @@ argz_append (pargz, pargz_len, buf, buf_len)
|
|||
static error_t argz_create_sep LT_PARAMS((const char *str, int delim,
|
||||
char **pargz, size_t *pargz_len));
|
||||
|
||||
error_t
|
||||
static error_t
|
||||
argz_create_sep (str, delim, pargz, pargz_len)
|
||||
const char *str;
|
||||
int delim;
|
||||
|
@ -458,7 +476,7 @@ argz_create_sep (str, delim, pargz, pargz_len)
|
|||
size_t *pargz_len;
|
||||
{
|
||||
size_t argz_len;
|
||||
char *argz = 0;
|
||||
char *argz = NULL;
|
||||
|
||||
assert (str);
|
||||
assert (pargz);
|
||||
|
@ -513,7 +531,7 @@ argz_create_sep (str, delim, pargz, pargz_len)
|
|||
static error_t argz_insert LT_PARAMS((char **pargz, size_t *pargz_len,
|
||||
char *before, const char *entry));
|
||||
|
||||
error_t
|
||||
static error_t
|
||||
argz_insert (pargz, pargz_len, before, entry)
|
||||
char **pargz;
|
||||
size_t *pargz_len;
|
||||
|
@ -524,11 +542,6 @@ argz_insert (pargz, pargz_len, before, entry)
|
|||
assert (pargz_len);
|
||||
assert (entry && *entry);
|
||||
|
||||
/* Either PARGZ/PARGZ_LEN is empty and BEFORE is NULL,
|
||||
or BEFORE points into an address within the ARGZ vector. */
|
||||
assert ((!*pargz && !*pargz_len && !before)
|
||||
|| ((*pargz <= before) && (before < (*pargz + *pargz_len))));
|
||||
|
||||
/* No BEFORE address indicates ENTRY should be inserted after the
|
||||
current last element. */
|
||||
if (!before)
|
||||
|
@ -575,7 +588,7 @@ argz_insert (pargz, pargz_len, before, entry)
|
|||
static char *argz_next LT_PARAMS((char *argz, size_t argz_len,
|
||||
const char *entry));
|
||||
|
||||
char *
|
||||
static char *
|
||||
argz_next (argz, argz_len, entry)
|
||||
char *argz;
|
||||
size_t argz_len;
|
||||
|
@ -620,7 +633,7 @@ argz_next (argz, argz_len, entry)
|
|||
static void argz_stringify LT_PARAMS((char *argz, size_t argz_len,
|
||||
int sep));
|
||||
|
||||
void
|
||||
static void
|
||||
argz_stringify (argz, argz_len, sep)
|
||||
char *argz;
|
||||
size_t argz_len;
|
||||
|
@ -744,11 +757,11 @@ static const char sys_search_path[] = LTDL_SYSSEARCHPATH;
|
|||
|
||||
/* The mutex functions stored here are global, and are necessarily the
|
||||
same for all threads that wish to share access to libltdl. */
|
||||
static lt_dlmutex_lock *lt_dlmutex_lock_func = 0;
|
||||
static lt_dlmutex_unlock *lt_dlmutex_unlock_func = 0;
|
||||
static lt_dlmutex_seterror *lt_dlmutex_seterror_func = 0;
|
||||
static lt_dlmutex_geterror *lt_dlmutex_geterror_func = 0;
|
||||
static const char *lt_dllast_error = 0;
|
||||
static lt_dlmutex_lock *lt_dlmutex_lock_func = NULL;
|
||||
static lt_dlmutex_unlock *lt_dlmutex_unlock_func = NULL;
|
||||
static lt_dlmutex_seterror *lt_dlmutex_seterror_func = NULL;
|
||||
static lt_dlmutex_geterror *lt_dlmutex_geterror_func = NULL;
|
||||
static const char *lt_dllast_error = NULL;
|
||||
|
||||
|
||||
/* Either set or reset the mutex functions. Either all the arguments must
|
||||
|
@ -797,7 +810,7 @@ lt_dlmutex_register (lock, unlock, seterror, geterror)
|
|||
/* --- ERROR HANDLING --- */
|
||||
|
||||
|
||||
static const char **user_error_strings = 0;
|
||||
static const char **user_error_strings = NULL;
|
||||
static int errorcount = LT_ERROR_MAX;
|
||||
|
||||
int
|
||||
|
@ -806,7 +819,7 @@ lt_dladderror (diagnostic)
|
|||
{
|
||||
int errindex = 0;
|
||||
int result = -1;
|
||||
const char **temp = (const char **) 0;
|
||||
const char **temp = NULL;
|
||||
|
||||
assert (diagnostic);
|
||||
|
||||
|
@ -856,7 +869,7 @@ lt_dlseterror (errindex)
|
|||
return errors;
|
||||
}
|
||||
|
||||
lt_ptr
|
||||
static lt_ptr
|
||||
lt_emalloc (size)
|
||||
size_t size;
|
||||
{
|
||||
|
@ -866,7 +879,7 @@ lt_emalloc (size)
|
|||
return mem;
|
||||
}
|
||||
|
||||
lt_ptr
|
||||
static lt_ptr
|
||||
lt_erealloc (addr, size)
|
||||
lt_ptr addr;
|
||||
size_t size;
|
||||
|
@ -877,14 +890,14 @@ lt_erealloc (addr, size)
|
|||
return mem;
|
||||
}
|
||||
|
||||
char *
|
||||
static char *
|
||||
lt_estrdup (str)
|
||||
const char *str;
|
||||
{
|
||||
char *dup = strdup (str);
|
||||
if (LT_STRLEN (str) && !dup)
|
||||
char *copy = strdup (str);
|
||||
if (LT_STRLEN (str) && !copy)
|
||||
LT_DLMUTEX_SETERROR (LT_DLSTRERROR (NO_MEMORY));
|
||||
return dup;
|
||||
return copy;
|
||||
}
|
||||
|
||||
|
||||
|
@ -1118,7 +1131,7 @@ sys_shl_sym (loader_data, module, symbol)
|
|||
lt_module module;
|
||||
const char *symbol;
|
||||
{
|
||||
lt_ptr address = 0;
|
||||
lt_ptr address = NULL;
|
||||
|
||||
/* sys_shl_open should never return a NULL module handle */
|
||||
if (module == (lt_module) 0)
|
||||
|
@ -1162,16 +1175,16 @@ sys_wll_open (loader_data, filename)
|
|||
const char *filename;
|
||||
{
|
||||
lt_dlhandle cur;
|
||||
lt_module module = 0;
|
||||
const char *errormsg = 0;
|
||||
char *searchname = 0;
|
||||
lt_module module = NULL;
|
||||
const char *errormsg = NULL;
|
||||
char *searchname = NULL;
|
||||
char *ext;
|
||||
char self_name_buf[MAX_PATH];
|
||||
|
||||
if (!filename)
|
||||
{
|
||||
/* Get the name of main module */
|
||||
*self_name_buf = 0;
|
||||
*self_name_buf = '\0';
|
||||
GetModuleFileName (NULL, self_name_buf, sizeof (self_name_buf));
|
||||
filename = ext = self_name_buf;
|
||||
}
|
||||
|
@ -1221,7 +1234,7 @@ sys_wll_open (loader_data, filename)
|
|||
{
|
||||
if (!cur->module)
|
||||
{
|
||||
cur = 0;
|
||||
cur = NULL;
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -1237,7 +1250,7 @@ sys_wll_open (loader_data, filename)
|
|||
if (cur || !module)
|
||||
{
|
||||
LT_DLMUTEX_SETERROR (LT_DLSTRERROR (CANNOT_OPEN));
|
||||
module = 0;
|
||||
module = NULL;
|
||||
}
|
||||
|
||||
return module;
|
||||
|
@ -1343,13 +1356,13 @@ sys_bedl_sym (loader_data, module, symbol)
|
|||
lt_module module;
|
||||
const char *symbol;
|
||||
{
|
||||
lt_ptr address = 0;
|
||||
lt_ptr address = NULL;
|
||||
image_id image = (image_id) module;
|
||||
|
||||
if (get_image_symbol (image, symbol, B_SYMBOL_TYPE_ANY, address) != B_OK)
|
||||
{
|
||||
LT_DLMUTEX_SETERROR (LT_DLSTRERROR (SYMBOL_NOT_FOUND));
|
||||
address = 0;
|
||||
address = NULL;
|
||||
}
|
||||
|
||||
return address;
|
||||
|
@ -1386,7 +1399,7 @@ sys_dld_open (loader_data, filename)
|
|||
{
|
||||
LT_DLMUTEX_SETERROR (LT_DLSTRERROR (CANNOT_OPEN));
|
||||
LT_DLFREE (module);
|
||||
module = 0;
|
||||
module = NULL;
|
||||
}
|
||||
|
||||
return module;
|
||||
|
@ -1448,8 +1461,8 @@ typedef struct lt_dlsymlists_t
|
|||
const lt_dlsymlist *syms;
|
||||
} lt_dlsymlists_t;
|
||||
|
||||
static const lt_dlsymlist *default_preloaded_symbols = 0;
|
||||
static lt_dlsymlists_t *preloaded_symbols = 0;
|
||||
static const lt_dlsymlist *default_preloaded_symbols = NULL;
|
||||
static lt_dlsymlists_t *preloaded_symbols = NULL;
|
||||
|
||||
static int
|
||||
presym_init (loader_data)
|
||||
|
@ -1459,7 +1472,7 @@ presym_init (loader_data)
|
|||
|
||||
LT_DLMUTEX_LOCK ();
|
||||
|
||||
preloaded_symbols = 0;
|
||||
preloaded_symbols = NULL;
|
||||
if (default_preloaded_symbols)
|
||||
{
|
||||
errors = lt_dlpreload (default_preloaded_symbols);
|
||||
|
@ -1485,7 +1498,7 @@ presym_free_symlists ()
|
|||
lists = lists->next;
|
||||
LT_DLFREE (tmp);
|
||||
}
|
||||
preloaded_symbols = 0;
|
||||
preloaded_symbols = NULL;
|
||||
|
||||
LT_DLMUTEX_UNLOCK ();
|
||||
|
||||
|
@ -1594,7 +1607,7 @@ presym_close (loader_data, module)
|
|||
lt_module module;
|
||||
{
|
||||
/* Just to silence gcc -Wall */
|
||||
module = 0;
|
||||
module = NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1685,13 +1698,21 @@ static int lt_argz_insert LT_PARAMS((char **pargz,
|
|||
static int lt_argz_insertinorder LT_PARAMS((char **pargz,
|
||||
size_t *pargz_len,
|
||||
const char *entry));
|
||||
static int lt_argz_insertdir LT_PARAMS((char **pargz,
|
||||
size_t *pargz_len,
|
||||
const char *dirnam,
|
||||
struct dirent *dp));
|
||||
static int lt_dlpath_insertdir LT_PARAMS((char **ppath,
|
||||
char *before,
|
||||
const char *dir));
|
||||
static int list_files_by_dir LT_PARAMS((const char *dirnam,
|
||||
char **pargz,
|
||||
size_t *pargz_len));
|
||||
static int file_not_found LT_PARAMS((void));
|
||||
|
||||
static char *user_search_path= 0;
|
||||
static lt_dlloader *loaders = 0;
|
||||
static lt_dlhandle handles = 0;
|
||||
static char *user_search_path= NULL;
|
||||
static lt_dlloader *loaders = NULL;
|
||||
static lt_dlhandle handles = NULL;
|
||||
static int initialized = 0;
|
||||
|
||||
/* Initialize libltdl. */
|
||||
|
@ -1705,8 +1726,8 @@ lt_dlinit ()
|
|||
/* Initialize only at first call. */
|
||||
if (++initialized == 1)
|
||||
{
|
||||
handles = 0;
|
||||
user_search_path = 0; /* empty search path */
|
||||
handles = NULL;
|
||||
user_search_path = NULL; /* empty search path */
|
||||
|
||||
#if HAVE_LIBDL && !defined(__CYGWIN__)
|
||||
errors += lt_dlloader_add (lt_dlloader_next (0), &sys_dl, "dlopen");
|
||||
|
@ -1841,7 +1862,7 @@ lt_dlexit ()
|
|||
|
||||
LT_DLMEM_REASSIGN (loader, next);
|
||||
}
|
||||
loaders = 0;
|
||||
loaders = NULL;
|
||||
}
|
||||
|
||||
done:
|
||||
|
@ -1902,7 +1923,7 @@ tryall_dlopen (handle, filename)
|
|||
}
|
||||
else
|
||||
{
|
||||
cur->info.filename = 0;
|
||||
cur->info.filename = NULL;
|
||||
}
|
||||
|
||||
while (loader)
|
||||
|
@ -1911,7 +1932,7 @@ tryall_dlopen (handle, filename)
|
|||
|
||||
cur->module = loader->module_open (data, filename);
|
||||
|
||||
if (cur->module != 0)
|
||||
if (cur->module != NULL)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
@ -1942,7 +1963,7 @@ tryall_dlopen_module (handle, prefix, dirname, dlname)
|
|||
const char *dlname;
|
||||
{
|
||||
int error = 0;
|
||||
char *filename = 0;
|
||||
char *filename = NULL;
|
||||
size_t filename_len = 0;
|
||||
size_t dirname_len = LT_STRLEN (dirname);
|
||||
|
||||
|
@ -1952,7 +1973,7 @@ tryall_dlopen_module (handle, prefix, dirname, dlname)
|
|||
#ifdef LT_DIRSEP_CHAR
|
||||
/* Only canonicalized names (i.e. with DIRSEP chars already converted)
|
||||
should make it into this function: */
|
||||
assert (strchr (dirname, LT_DIRSEP_CHAR) == 0);
|
||||
assert (strchr (dirname, LT_DIRSEP_CHAR) == NULL);
|
||||
#endif
|
||||
|
||||
if (dirname[dirname_len -1] == '/')
|
||||
|
@ -2036,7 +2057,7 @@ canonicalize_path (path, pcanonical)
|
|||
const char *path;
|
||||
char **pcanonical;
|
||||
{
|
||||
char *canonical = 0;
|
||||
char *canonical = NULL;
|
||||
|
||||
assert (path && *path);
|
||||
assert (pcanonical);
|
||||
|
@ -2138,11 +2159,11 @@ foreach_dirinpath (search_path, base_name, func, data1, data2)
|
|||
{
|
||||
int result = 0;
|
||||
int filenamesize = 0;
|
||||
int lenbase = LT_STRLEN (base_name);
|
||||
size_t lenbase = LT_STRLEN (base_name);
|
||||
size_t argz_len = 0;
|
||||
char * argz = 0;
|
||||
char * filename = 0;
|
||||
char * canonical = 0;
|
||||
char *argz = NULL;
|
||||
char *filename = NULL;
|
||||
char *canonical = NULL;
|
||||
|
||||
LT_DLMUTEX_LOCK ();
|
||||
|
||||
|
@ -2159,10 +2180,10 @@ foreach_dirinpath (search_path, base_name, func, data1, data2)
|
|||
goto cleanup;
|
||||
|
||||
{
|
||||
char *dir_name = 0;
|
||||
char *dir_name = NULL;
|
||||
while ((dir_name = argz_next (argz, argz_len, dir_name)))
|
||||
{
|
||||
int lendir = LT_STRLEN (dir_name);
|
||||
size_t lendir = LT_STRLEN (dir_name);
|
||||
|
||||
if (lendir +1 +lenbase >= filenamesize)
|
||||
{
|
||||
|
@ -2173,7 +2194,9 @@ foreach_dirinpath (search_path, base_name, func, data1, data2)
|
|||
goto cleanup;
|
||||
}
|
||||
|
||||
strncpy (filename, dir_name, lendir);
|
||||
assert (filenamesize > lendir);
|
||||
strcpy (filename, dir_name);
|
||||
|
||||
if (base_name && *base_name)
|
||||
{
|
||||
if (filename[lendir -1] != '/')
|
||||
|
@ -2224,7 +2247,7 @@ find_file_callback (filename, data1, data2)
|
|||
|
||||
LT_DLFREE (*pdir);
|
||||
*pdir = lt_estrdup (filename);
|
||||
is_done = (*pdir == 0) ? -1 : 1;
|
||||
is_done = (*pdir == NULL) ? -1 : 1;
|
||||
}
|
||||
|
||||
return is_done;
|
||||
|
@ -2236,7 +2259,7 @@ find_file (search_path, base_name, pdir)
|
|||
const char *base_name;
|
||||
char **pdir;
|
||||
{
|
||||
FILE *file = 0;
|
||||
FILE *file = NULL;
|
||||
|
||||
foreach_dirinpath (search_path, base_name, find_file_callback, pdir, &file);
|
||||
|
||||
|
@ -2249,17 +2272,17 @@ find_handle_callback (filename, data, ignored)
|
|||
lt_ptr data;
|
||||
lt_ptr ignored;
|
||||
{
|
||||
lt_dlhandle *handle = (lt_dlhandle *) data;
|
||||
int found = access (filename, R_OK);
|
||||
lt_dlhandle *handle = (lt_dlhandle *) data;
|
||||
int notfound = access (filename, R_OK);
|
||||
|
||||
/* Bail out if file cannot be read... */
|
||||
if (!found)
|
||||
if (notfound)
|
||||
return 0;
|
||||
|
||||
/* Try to dlopen the file, but do not continue searching in any
|
||||
case. */
|
||||
if (tryall_dlopen (handle, filename) != 0)
|
||||
*handle = 0;
|
||||
*handle = NULL;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
@ -2288,10 +2311,10 @@ load_deplibs (handle, deplibs)
|
|||
char *deplibs;
|
||||
{
|
||||
#if LTDL_DLOPEN_DEPLIBS
|
||||
char *p, *save_search_path = 0;
|
||||
char *p, *save_search_path = NULL;
|
||||
int depcount = 0;
|
||||
int i;
|
||||
char **names = 0;
|
||||
char **names = NULL;
|
||||
#endif
|
||||
int errors = 0;
|
||||
|
||||
|
@ -2327,7 +2350,7 @@ load_deplibs (handle, deplibs)
|
|||
if (strncmp(p, "-L", 2) == 0 || strncmp(p, "-R", 2) == 0)
|
||||
{
|
||||
char save = *end;
|
||||
*end = 0; /* set a temporary string terminator */
|
||||
*end = '\0'; /* set a temporary string terminator */
|
||||
if (lt_dladdsearchdir(p+2))
|
||||
{
|
||||
goto cleanup;
|
||||
|
@ -2384,7 +2407,7 @@ load_deplibs (handle, deplibs)
|
|||
{
|
||||
char *name;
|
||||
char save = *end;
|
||||
*end = 0; /* set a temporary string terminator */
|
||||
*end = '\0'; /* set a temporary string terminator */
|
||||
if (strncmp(p, "-l", 2) == 0)
|
||||
{
|
||||
size_t name_len = 3+ /* "lib" */ LT_STRLEN (p + 2);
|
||||
|
@ -2473,7 +2496,7 @@ trim (dest, str)
|
|||
/* remove the leading and trailing "'" from str
|
||||
and store the result in dest */
|
||||
const char *end = strrchr (str, '\'');
|
||||
int len = LT_STRLEN (str);
|
||||
size_t len = LT_STRLEN (str);
|
||||
char *tmp;
|
||||
|
||||
LT_DLFREE (*dest);
|
||||
|
@ -2490,7 +2513,7 @@ trim (dest, str)
|
|||
}
|
||||
else
|
||||
{
|
||||
*dest = 0;
|
||||
*dest = NULL;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -2511,22 +2534,22 @@ free_vars (dlname, oldname, libdir, deplibs)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
static int
|
||||
try_dlopen (phandle, filename)
|
||||
lt_dlhandle *phandle;
|
||||
const char *filename;
|
||||
{
|
||||
const char * ext = 0;
|
||||
const char * saved_error = 0;
|
||||
char * canonical = 0;
|
||||
char * base_name = 0;
|
||||
char * dir = 0;
|
||||
char * name = 0;
|
||||
const char * ext = NULL;
|
||||
const char * saved_error = NULL;
|
||||
char * canonical = NULL;
|
||||
char * base_name = NULL;
|
||||
char * dir = NULL;
|
||||
char * name = NULL;
|
||||
int errors = 0;
|
||||
lt_dlhandle newhandle;
|
||||
|
||||
assert (phandle);
|
||||
assert (*phandle == 0);
|
||||
assert (*phandle == NULL);
|
||||
|
||||
LT_DLMUTEX_GETERROR (saved_error);
|
||||
|
||||
|
@ -2534,7 +2557,7 @@ try_dlopen (phandle, filename)
|
|||
if (!filename)
|
||||
{
|
||||
*phandle = (lt_dlhandle) LT_EMALLOC (struct lt_dlhandle_struct, 1);
|
||||
if (*phandle == 0)
|
||||
if (*phandle == NULL)
|
||||
return 1;
|
||||
|
||||
memset (*phandle, 0, sizeof(struct lt_dlhandle_struct));
|
||||
|
@ -2591,14 +2614,13 @@ try_dlopen (phandle, filename)
|
|||
if (ext && strcmp (ext, archive_ext) == 0)
|
||||
{
|
||||
/* this seems to be a libtool module */
|
||||
FILE * file = 0;
|
||||
char * dlname = 0;
|
||||
char * old_name = 0;
|
||||
char * libdir = 0;
|
||||
char * deplibs = 0;
|
||||
char * line = 0;
|
||||
FILE * file = NULL;
|
||||
char * dlname = NULL;
|
||||
char * old_name = NULL;
|
||||
char * libdir = NULL;
|
||||
char * deplibs = NULL;
|
||||
char * line = NULL;
|
||||
size_t line_len;
|
||||
int i;
|
||||
|
||||
/* if we can't find the installed flag, it is probably an
|
||||
installed libtool archive, produced with an old version
|
||||
|
@ -2614,23 +2636,26 @@ try_dlopen (phandle, filename)
|
|||
}
|
||||
|
||||
/* canonicalize the module name */
|
||||
for (i = 0; i < ext - base_name; ++i)
|
||||
{
|
||||
if (isalnum ((int)(base_name[i])))
|
||||
{
|
||||
name[i] = base_name[i];
|
||||
}
|
||||
else
|
||||
{
|
||||
name[i] = '_';
|
||||
}
|
||||
}
|
||||
name[ext - base_name] = LT_EOS_CHAR;
|
||||
{
|
||||
size_t i;
|
||||
for (i = 0; i < ext - base_name; ++i)
|
||||
{
|
||||
if (isalnum ((int)(base_name[i])))
|
||||
{
|
||||
name[i] = base_name[i];
|
||||
}
|
||||
else
|
||||
{
|
||||
name[i] = '_';
|
||||
}
|
||||
}
|
||||
name[ext - base_name] = LT_EOS_CHAR;
|
||||
}
|
||||
|
||||
/* Now try to open the .la file. If there is no directory name
|
||||
component, try to find it first in user_search_path and then other
|
||||
prescribed paths. Otherwise (or in any case if the module was not
|
||||
yet found) try opening just the module name as passed. */
|
||||
/* Now try to open the .la file. If there is no directory name
|
||||
component, try to find it first in user_search_path and then other
|
||||
prescribed paths. Otherwise (or in any case if the module was not
|
||||
yet found) try opening just the module name as passed. */
|
||||
if (!dir)
|
||||
{
|
||||
const char *search_path;
|
||||
|
@ -2689,7 +2714,7 @@ try_dlopen (phandle, filename)
|
|||
/* read the .la file */
|
||||
while (!feof (file))
|
||||
{
|
||||
if (!fgets (line, line_len, file))
|
||||
if (!fgets (line, (int) line_len, file))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
@ -2699,7 +2724,7 @@ try_dlopen (phandle, filename)
|
|||
while (line[LT_STRLEN(line) -1] != '\n')
|
||||
{
|
||||
line = LT_DLREALLOC (char, line, line_len *2);
|
||||
if (!fgets (&line[line_len -1], line_len +1, file))
|
||||
if (!fgets (&line[line_len -1], (int) line_len +1, file))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
@ -2757,7 +2782,7 @@ try_dlopen (phandle, filename)
|
|||
errors += trim (&dlname, &line[sizeof (STR_LIBRARY_NAMES) - 1]);
|
||||
if (!errors
|
||||
&& dlname
|
||||
&& (last_libname = strrchr (dlname, ' ')) != 0)
|
||||
&& (last_libname = strrchr (dlname, ' ')) != NULL)
|
||||
{
|
||||
last_libname = lt_estrdup (last_libname + 1);
|
||||
if (!last_libname)
|
||||
|
@ -2778,7 +2803,7 @@ try_dlopen (phandle, filename)
|
|||
|
||||
/* allocate the handle */
|
||||
*phandle = (lt_dlhandle) LT_EMALLOC (struct lt_dlhandle_struct, 1);
|
||||
if (*phandle == 0)
|
||||
if (*phandle == NULL)
|
||||
++errors;
|
||||
|
||||
if (errors)
|
||||
|
@ -2822,7 +2847,7 @@ try_dlopen (phandle, filename)
|
|||
{
|
||||
/* not a libtool module */
|
||||
*phandle = (lt_dlhandle) LT_EMALLOC (struct lt_dlhandle_struct, 1);
|
||||
if (*phandle == 0)
|
||||
if (*phandle == NULL)
|
||||
{
|
||||
++errors;
|
||||
goto cleanup;
|
||||
|
@ -2847,7 +2872,10 @@ try_dlopen (phandle, filename)
|
|||
#endif
|
||||
)))
|
||||
{
|
||||
tryall_dlopen (&newhandle, filename);
|
||||
if (tryall_dlopen (&newhandle, filename) != 0)
|
||||
{
|
||||
newhandle = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
if (!newhandle)
|
||||
|
@ -2886,7 +2914,7 @@ lt_dlhandle
|
|||
lt_dlopen (filename)
|
||||
const char *filename;
|
||||
{
|
||||
lt_dlhandle handle = 0;
|
||||
lt_dlhandle handle = NULL;
|
||||
|
||||
/* Just incase we missed a code path in try_dlopen() that reports
|
||||
an error, but forgets to reset handle... */
|
||||
|
@ -2898,10 +2926,10 @@ lt_dlopen (filename)
|
|||
|
||||
/* If the last error messge store was `FILE_NOT_FOUND', then return
|
||||
non-zero. */
|
||||
int
|
||||
static int
|
||||
file_not_found ()
|
||||
{
|
||||
const char *error = 0;
|
||||
const char *error = NULL;
|
||||
|
||||
LT_DLMUTEX_GETERROR (error);
|
||||
if (error == LT_DLSTRERROR (FILE_NOT_FOUND))
|
||||
|
@ -2918,12 +2946,11 @@ lt_dlhandle
|
|||
lt_dlopenext (filename)
|
||||
const char *filename;
|
||||
{
|
||||
lt_dlhandle handle = 0;
|
||||
char * tmp = 0;
|
||||
char * ext = 0;
|
||||
int len;
|
||||
lt_dlhandle handle = NULL;
|
||||
char * tmp = NULL;
|
||||
char * ext = NULL;
|
||||
size_t len;
|
||||
int errors = 0;
|
||||
int file_found = 1; /* until proven otherwise */
|
||||
|
||||
if (!filename)
|
||||
{
|
||||
|
@ -3002,7 +3029,7 @@ lt_dlopenext (filename)
|
|||
}
|
||||
|
||||
|
||||
int
|
||||
static int
|
||||
lt_argz_insert (pargz, pargz_len, before, entry)
|
||||
char **pargz;
|
||||
size_t *pargz_len;
|
||||
|
@ -3028,13 +3055,13 @@ lt_argz_insert (pargz, pargz_len, before, entry)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
static int
|
||||
lt_argz_insertinorder (pargz, pargz_len, entry)
|
||||
char **pargz;
|
||||
size_t *pargz_len;
|
||||
const char *entry;
|
||||
{
|
||||
char *before = 0;
|
||||
char *before = NULL;
|
||||
|
||||
assert (pargz);
|
||||
assert (pargz_len);
|
||||
|
@ -3052,16 +3079,16 @@ lt_argz_insertinorder (pargz, pargz_len, entry)
|
|||
return lt_argz_insert (pargz, pargz_len, before, entry);
|
||||
}
|
||||
|
||||
int
|
||||
static int
|
||||
lt_argz_insertdir (pargz, pargz_len, dirnam, dp)
|
||||
char **pargz;
|
||||
size_t *pargz_len;
|
||||
const char *dirnam;
|
||||
struct dirent *dp;
|
||||
{
|
||||
char *buf = 0;
|
||||
char *buf = NULL;
|
||||
size_t buf_len = 0;
|
||||
char *end = 0;
|
||||
char *end = NULL;
|
||||
size_t end_offset = 0;
|
||||
size_t dir_len = 0;
|
||||
int errors = 0;
|
||||
|
@ -3118,13 +3145,13 @@ lt_argz_insertdir (pargz, pargz_len, dirnam, dp)
|
|||
return errors;
|
||||
}
|
||||
|
||||
int
|
||||
static int
|
||||
list_files_by_dir (dirnam, pargz, pargz_len)
|
||||
const char *dirnam;
|
||||
char **pargz;
|
||||
size_t *pargz_len;
|
||||
{
|
||||
DIR *dirp = 0;
|
||||
DIR *dirp = NULL;
|
||||
int errors = 0;
|
||||
|
||||
assert (dirnam && *dirnam);
|
||||
|
@ -3135,7 +3162,7 @@ list_files_by_dir (dirnam, pargz, pargz_len)
|
|||
dirp = opendir (dirnam);
|
||||
if (dirp)
|
||||
{
|
||||
struct dirent *dp = 0;
|
||||
struct dirent *dp = NULL;
|
||||
|
||||
while ((dp = readdir (dirp)))
|
||||
if (dp->d_name[0] != '.')
|
||||
|
@ -3166,7 +3193,7 @@ foreachfile_callback (dirname, data1, data2)
|
|||
= (int (*) LT_PARAMS((const char *filename, lt_ptr data))) data1;
|
||||
|
||||
int is_done = 0;
|
||||
char *argz = 0;
|
||||
char *argz = NULL;
|
||||
size_t argz_len = 0;
|
||||
|
||||
if (list_files_by_dir (dirname, &argz, &argz_len) != 0)
|
||||
|
@ -3175,7 +3202,7 @@ foreachfile_callback (dirname, data1, data2)
|
|||
goto cleanup;
|
||||
|
||||
{
|
||||
char *filename = 0;
|
||||
char *filename = NULL;
|
||||
while ((filename = argz_next (argz, argz_len, filename)))
|
||||
if ((is_done = (*func) (filename, data2)))
|
||||
break;
|
||||
|
@ -3285,6 +3312,9 @@ lt_dlclose (handle)
|
|||
errors += handle->loader->module_close (data, handle->module);
|
||||
errors += unload_deplibs(handle);
|
||||
|
||||
/* It is up to the callers to free the data itself. */
|
||||
LT_DLFREE (handle->caller_data);
|
||||
|
||||
LT_DLFREE (handle->info.filename);
|
||||
LT_DLFREE (handle->info.name);
|
||||
LT_DLFREE (handle);
|
||||
|
@ -3309,7 +3339,7 @@ lt_dlsym (handle, symbol)
|
|||
lt_dlhandle handle;
|
||||
const char *symbol;
|
||||
{
|
||||
int lensym;
|
||||
size_t lensym;
|
||||
char lsym[LT_SYMBOL_LENGTH];
|
||||
char *sym;
|
||||
lt_ptr address;
|
||||
|
@ -3409,15 +3439,15 @@ lt_dlerror ()
|
|||
return error ? error : LT_DLSTRERROR (UNKNOWN);
|
||||
}
|
||||
|
||||
int
|
||||
static int
|
||||
lt_dlpath_insertdir (ppath, before, dir)
|
||||
char **ppath;
|
||||
char *before;
|
||||
const char *dir;
|
||||
{
|
||||
int errors = 0;
|
||||
char *canonical = 0;
|
||||
char *argz = 0;
|
||||
char *canonical = NULL;
|
||||
char *argz = NULL;
|
||||
size_t argz_len = 0;
|
||||
|
||||
assert (ppath);
|
||||
|
@ -3432,13 +3462,13 @@ lt_dlpath_insertdir (ppath, before, dir)
|
|||
assert (canonical && *canonical);
|
||||
|
||||
/* If *PPATH is empty, set it to DIR. */
|
||||
if (*ppath == 0)
|
||||
if (*ppath == NULL)
|
||||
{
|
||||
assert (!before); /* BEFORE cannot be set without PPATH. */
|
||||
assert (dir); /* Without DIR, don't call this function! */
|
||||
|
||||
*ppath = lt_estrdup (dir);
|
||||
if (*ppath == 0)
|
||||
if (*ppath == NULL)
|
||||
++errors;
|
||||
|
||||
return errors;
|
||||
|
@ -3672,7 +3702,7 @@ lt_dlcaller_set_data (key, handle, data)
|
|||
lt_ptr data;
|
||||
{
|
||||
int n_elements = 0;
|
||||
lt_ptr stale = (lt_ptr) 0;
|
||||
lt_ptr stale = NULL;
|
||||
int i;
|
||||
|
||||
/* This needs to be locked so that the caller data can be updated
|
||||
|
@ -3701,7 +3731,7 @@ lt_dlcaller_set_data (key, handle, data)
|
|||
|
||||
if (!temp)
|
||||
{
|
||||
stale = 0;
|
||||
stale = NULL;
|
||||
goto done;
|
||||
}
|
||||
|
||||
|
@ -3761,12 +3791,12 @@ lt_dlloader_add (place, dlloader, loader_name)
|
|||
const char *loader_name;
|
||||
{
|
||||
int errors = 0;
|
||||
lt_dlloader *node = 0, *ptr = 0;
|
||||
lt_dlloader *node = NULL, *ptr = NULL;
|
||||
|
||||
if ((dlloader == 0) /* diagnose null parameters */
|
||||
|| (dlloader->module_open == 0)
|
||||
|| (dlloader->module_close == 0)
|
||||
|| (dlloader->find_sym == 0))
|
||||
if ((dlloader == NULL) /* diagnose null parameters */
|
||||
|| (dlloader->module_open == NULL)
|
||||
|| (dlloader->module_close == NULL)
|
||||
|| (dlloader->find_sym == NULL))
|
||||
{
|
||||
LT_DLMUTEX_SETERROR (LT_DLSTRERROR (INVALID_LOADER));
|
||||
return 1;
|
||||
|
@ -3777,7 +3807,7 @@ lt_dlloader_add (place, dlloader, loader_name)
|
|||
if (!node)
|
||||
return 1;
|
||||
|
||||
node->next = 0;
|
||||
node->next = NULL;
|
||||
node->loader_name = loader_name;
|
||||
node->sym_prefix = dlloader->sym_prefix;
|
||||
node->dlloader_exit = dlloader->dlloader_exit;
|
||||
|
@ -3913,7 +3943,7 @@ const char *
|
|||
lt_dlloader_name (place)
|
||||
lt_dlloader *place;
|
||||
{
|
||||
const char *name = 0;
|
||||
const char *name = NULL;
|
||||
|
||||
if (place)
|
||||
{
|
||||
|
@ -3933,7 +3963,7 @@ lt_user_data *
|
|||
lt_dlloader_data (place)
|
||||
lt_dlloader *place;
|
||||
{
|
||||
lt_user_data *data = 0;
|
||||
lt_user_data *data = NULL;
|
||||
|
||||
if (place)
|
||||
{
|
||||
|
@ -3953,7 +3983,7 @@ lt_dlloader *
|
|||
lt_dlloader_find (loader_name)
|
||||
const char *loader_name;
|
||||
{
|
||||
lt_dlloader *place = 0;
|
||||
lt_dlloader *place = NULL;
|
||||
|
||||
LT_DLMUTEX_LOCK ();
|
||||
for (place = loaders; place; place = place->next)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue