mirror of
git://sourceware.org/git/glibc.git
synced 2025-03-31 14:01:18 +08:00
elf: In ldconfig, extract the new_sub_entry function from search_dir
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
This commit is contained in:
parent
b853a4176c
commit
5e598c2bbf
@ -328,6 +328,23 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
|
||||
"Andreas Jaeger");
|
||||
}
|
||||
|
||||
/* Allocate a new subdirectory with full path PATH under ENTRY, using
|
||||
inode data from *ST. */
|
||||
static struct dir_entry *
|
||||
new_sub_entry (const struct dir_entry *entry, const char *path,
|
||||
const struct stat64 *st)
|
||||
{
|
||||
struct dir_entry *new_entry = xmalloc (sizeof (struct dir_entry));
|
||||
new_entry->from_file = entry->from_file;
|
||||
new_entry->from_line = entry->from_line;
|
||||
new_entry->path = xstrdup (path);
|
||||
new_entry->flag = entry->flag;
|
||||
new_entry->next = NULL;
|
||||
new_entry->ino = st->st_ino;
|
||||
new_entry->dev = st->st_dev;
|
||||
return new_entry;
|
||||
}
|
||||
|
||||
/* Add a single directory entry. */
|
||||
static void
|
||||
add_single_dir (struct dir_entry *entry, int verbose)
|
||||
@ -823,26 +840,17 @@ search_dir (const struct dir_entry *entry)
|
||||
|
||||
if (is_dir && is_hwcap_platform (direntry->d_name))
|
||||
{
|
||||
/* Handle subdirectory later. */
|
||||
struct dir_entry *new_entry;
|
||||
|
||||
new_entry = xmalloc (sizeof (struct dir_entry));
|
||||
new_entry->from_file = entry->from_file;
|
||||
new_entry->from_line = entry->from_line;
|
||||
new_entry->path = xstrdup (file_name);
|
||||
new_entry->flag = entry->flag;
|
||||
new_entry->next = NULL;
|
||||
if (!is_link
|
||||
&& direntry->d_type != DT_UNKNOWN
|
||||
&& __builtin_expect (lstat64 (real_file_name, &lstat_buf), 0))
|
||||
{
|
||||
error (0, errno, _("Cannot lstat %s"), file_name);
|
||||
free (new_entry->path);
|
||||
free (new_entry);
|
||||
continue;
|
||||
}
|
||||
new_entry->ino = lstat_buf.st_ino;
|
||||
new_entry->dev = lstat_buf.st_dev;
|
||||
|
||||
/* Handle subdirectory later. */
|
||||
struct dir_entry *new_entry = new_sub_entry (entry, file_name,
|
||||
&lstat_buf);
|
||||
add_single_dir (new_entry, 0);
|
||||
continue;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user