+1998-07-05 11:49 Ulrich Drepper <drepper@cygnus.com>
+
+ * iconv/gconv_conf.c (read_conf_file): Use feof_unlocked on private
+ stream.
+ * inet/ruserpass.c (token): Likewise.
+ * nss/nsswitch.c (nss_parse_file): Likewise.
+ * intl/localealias.c: Likewise. Also for ferror.
+ * time/getdate.c (__getdate_r): Likewise.
+
+ * libio/Makefile (routines): Add iofgets_u.
+ * libio/iofgets_u.c: New file.
+ * libio/Versions: Add fgets_unlocked.
+ * libio/stdio.h: Add prototype for fgets_unlocked.
+
+ * misc/getttyent.c (getttyent): Use fgets_unlocked instead of fgets.
+ * misc/getusershell.c (initshells): Likewise.
+ * misc/mntent_r.c (__getmntent_r): Explicitly lock stream. Use
+ fgets_unlocked.
+ * nss/nss_files/files-XXX.c (internal_getent): Likewise.
+ * resolv/res_init.c (res_init): Likewise.
+ * sysdeps/unix/sysv/linux/getsysstats.c: Likewise.
+
1998-05-23 Philip Blundell <Philip.Blundell@pobox.com>
* sysdeps/unix/sysv/linux/arm/syscalls.list: Add `syscall'.
return (NULL);
flockfile (tf);
for (;;) {
- if (!fgets(p = line, sizeof(line), tf))
+ if (!fgets_unlocked(p = line, sizeof(line), tf))
return (NULL);
/* skip lines that are too big */
if (!index(p, '\n')) {
register char **sp, *cp;
register FILE *fp;
struct stat statb;
+ int flen;
if (shells != NULL)
free(shells);
}
sp = shells;
cp = strings;
- while (fgets(cp, statb.st_size - (cp - strings), fp) != NULL) {
+ flen = statb.st_size;
+ while (fgets_unlocked(cp, flen - (cp - strings), fp) != NULL) {
while (*cp != '#' && *cp != '/' && *cp != '\0')
cp++;
if (*cp == '#' || *cp == '\0')
/* Utilities for reading/writing fstab, mtab, etc.
- Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+ Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
{
char *head;
+ flockfile (stream);
do
{
char *end_ptr;
- if (fgets (buffer, bufsiz, stream) == NULL)
+ if (fgets_unlocked (buffer, bufsiz, stream) == NULL)
return NULL;
end_ptr = strchr (buffer, '\n');
{
/* Not the whole line was read. Do it now but forget it. */
char tmp[1024];
- while (fgets (tmp, sizeof tmp, stream) != NULL)
+ while (fgets_unlocked (tmp, sizeof tmp, stream) != NULL)
if (strchr (tmp, '\n') != NULL)
break;
}
mp->mnt_passno = 0;
case 2:
}
+ funlockfile (stream);
return mp;
}
/* Terminate the line so that we can test for overflow. */
data->linebuffer[linebuflen - 1] = '\xff';
- p = fgets (data->linebuffer, linebuflen, stream);
+ p = fgets_unlocked (data->linebuffer, linebuflen, stream);
if (p == NULL)
{
/* End of file or read error. */
last = this;
}
}
- while (!feof (fp));
+ while (!feof_unlocked (fp));
/* Free the buffer. */
free (line);
#endif
if ((fp = fopen(_PATH_RESCONF, "r")) != NULL) {
/* read the config file */
- while (fgets(buf, sizeof(buf), fp) != NULL) {
+ while (fgets_unlocked(buf, sizeof(buf), fp) != NULL) {
/* skip comments */
if (*buf == ';' || *buf == '#')
continue;
string "processor". We don't have to fear extremely long
lines since the kernel will not generate them. 8192
bytes are really enough. */
- while (fgets (buffer, sizeof buffer, fp) != NULL)
+ while (fgets_unlocked (buffer, sizeof buffer, fp) != NULL)
if (strncmp (buffer, "processor", 9) == 0)
++result;
string "processor". We don't have to fear extremely long
lines since the kernel will not generate them. 8192
bytes are really enough. */
- while (fgets (buffer, sizeof buffer, fp) != NULL)
+ while (fgets_unlocked (buffer, sizeof buffer, fp) != NULL)
if (sscanf (buffer, format, &result) == 1)
{
result /= (__getpagesize () / 1024);
/* Convert a string representation of time to a time value.
- Copyright (C) 1997 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1998 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Mark Kettenis <kettenis@phys.uva.nl>, 1997.
if (result && *result == '\0')
break;
}
- while (!feof (fp));
+ while (!feof_unlocked (fp));
/* Free the buffer. */
free (line);
/* Check for errors. */
- if (ferror (fp))
+ if (ferror_unlocked (fp))
{
fclose (fp);
return 5;