* emultempl/elf32.em (gld${EMULATION_NAME}_parse_ld_so_conf): Avoid
getline for portability.
This commit is contained in:
parent
d3989512d9
commit
563f4125b7
@ -1,5 +1,8 @@
|
|||||||
2004-10-11 Jakub Jelinek <jakub@redhat.com>
|
2004-10-11 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* emultempl/elf32.em (gld${EMULATION_NAME}_parse_ld_so_conf): Avoid
|
||||||
|
getline for portability.
|
||||||
|
|
||||||
* emultempl/elf32.em (gld${EMULATION_NAME}_ld_so_conf): New structure.
|
* emultempl/elf32.em (gld${EMULATION_NAME}_ld_so_conf): New structure.
|
||||||
(gld${EMULATION_NAME}_parse_ld_so_conf,
|
(gld${EMULATION_NAME}_parse_ld_so_conf,
|
||||||
gld${EMULATION_NAME}_parse_ld_so_conf_include): New functions.
|
gld${EMULATION_NAME}_parse_ld_so_conf_include): New functions.
|
||||||
|
@ -563,15 +563,30 @@ gld${EMULATION_NAME}_parse_ld_so_conf
|
|||||||
(struct gld${EMULATION_NAME}_ld_so_conf *info, const char *filename)
|
(struct gld${EMULATION_NAME}_ld_so_conf *info, const char *filename)
|
||||||
{
|
{
|
||||||
FILE *f = fopen (filename, FOPEN_RT);
|
FILE *f = fopen (filename, FOPEN_RT);
|
||||||
char *line = NULL;
|
char *line;
|
||||||
size_t linelen = 0;
|
size_t linelen;
|
||||||
|
|
||||||
if (f == NULL)
|
if (f == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
while (getline (&line, &linelen, f) != -1)
|
linelen = 256;
|
||||||
|
line = xmalloc (linelen);
|
||||||
|
do
|
||||||
{
|
{
|
||||||
char *p;
|
char *p = line, *q;
|
||||||
|
|
||||||
|
/* Normally this would use getline(3), but we need to be portable. */
|
||||||
|
while ((q = fgets (p, linelen - (p - line), f)) != NULL
|
||||||
|
&& strlen (q) == linelen - (p - line) - 1
|
||||||
|
&& line[linelen - 2] != '\n')
|
||||||
|
{
|
||||||
|
line = xrealloc (line, 2 * linelen);
|
||||||
|
p = line + linelen - 1;
|
||||||
|
linelen += linelen;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (q == NULL && p == line)
|
||||||
|
break;
|
||||||
|
|
||||||
p = strchr (line, '\n');
|
p = strchr (line, '\n');
|
||||||
if (p)
|
if (p)
|
||||||
@ -647,6 +662,7 @@ gld${EMULATION_NAME}_parse_ld_so_conf
|
|||||||
info->path[info->len] = '\0';
|
info->path[info->len] = '\0';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
while (! feof (f));
|
||||||
free (line);
|
free (line);
|
||||||
fclose (f);
|
fclose (f);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user