* solib.c (solib_open): Handle the case where

solib_absolute_prefix is NULL.
This commit is contained in:
Kevin Buettner 2000-11-21 09:23:32 +00:00
parent eb6e10cb73
commit a7ec76fe2f
2 changed files with 21 additions and 12 deletions

View file

@ -1,3 +1,8 @@
2000-11-21 Kevin Buettner <kevinb@redhat.com>
* solib.c (solib_open): Handle the case where
solib_absolute_prefix is NULL.
2000-11-20 Michael Snyder <msnyder@cleaver.cygnus.com>
* solist.h: Declare new function solib_open.

View file

@ -100,21 +100,25 @@ solib_open (char *in_pathname, char **found_pathname)
int found_file = -1;
char *temp_pathname = NULL;
if (solib_absolute_prefix != NULL &&
ROOTED_P (in_pathname))
if (ROOTED_P (in_pathname))
{
int prefix_len = strlen (solib_absolute_prefix);
if (solib_absolute_prefix == NULL)
temp_pathname = in_pathname;
else
{
int prefix_len = strlen (solib_absolute_prefix);
/* Remove trailing slashes from absolute prefix. */
while (prefix_len > 0 && SLASH_P (solib_absolute_prefix[prefix_len - 1]))
prefix_len--;
/* Remove trailing slashes from absolute prefix. */
while (prefix_len > 0 && SLASH_P (solib_absolute_prefix[prefix_len - 1]))
prefix_len--;
/* Cat the prefixed pathname together. */
temp_pathname = alloca (prefix_len + strlen (in_pathname) + 1);
strncpy (temp_pathname, solib_absolute_prefix, prefix_len);
temp_pathname[prefix_len] = '\0';
strcat (temp_pathname, in_pathname);
/* Cat the prefixed pathname together. */
temp_pathname = alloca (prefix_len + strlen (in_pathname) + 1);
strncpy (temp_pathname, solib_absolute_prefix, prefix_len);
temp_pathname[prefix_len] = '\0';
strcat (temp_pathname, in_pathname);
}
/* Now see if we can open it. */
found_file = open (temp_pathname, O_RDONLY, 0);
}
@ -137,7 +141,7 @@ solib_open (char *in_pathname, char **found_pathname)
/* Done. If not found, tough luck. Return found_file and
(optionally) found_pathname. */
if (found_pathname != NULL)
if (found_pathname != NULL && temp_pathname != NULL)
*found_pathname = strsave (temp_pathname);
return found_file;
}