about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog26
-rw-r--r--inet/rcmd.c6
-rw-r--r--inet/ruserpass.c6
-rw-r--r--intl/loadmsgcat.c4
-rw-r--r--io/getdirname.c14
-rw-r--r--locale/loadlocale.c6
-rw-r--r--misc/getusershell.c4
-rw-r--r--stdlib/canonicalize.c6
-rw-r--r--sysdeps/posix/euidaccess.c6
-rw-r--r--sysdeps/posix/isfdtype.c6
-rw-r--r--sysdeps/posix/posix_fallocate.c4
-rw-r--r--sysdeps/posix/tempname.c10
-rw-r--r--sysdeps/unix/grantpt.c4
-rw-r--r--sysdeps/unix/opendir.c8
-rw-r--r--sysdeps/unix/sysv/linux/fstatvfs.c4
-rw-r--r--sysdeps/unix/sysv/linux/internal_statvfs.c4
-rw-r--r--sysdeps/unix/sysv/linux/ptsname.c10
-rw-r--r--sysdeps/unix/sysv/linux/statvfs.c4
-rw-r--r--sysdeps/unix/sysv/linux/ttyname.c16
-rw-r--r--sysdeps/unix/sysv/linux/ttyname_r.c16
-rw-r--r--sysvipc/ftok.c6
-rw-r--r--time/getdate.c8
22 files changed, 104 insertions, 74 deletions
diff --git a/ChangeLog b/ChangeLog
index 9256048055..c13ce187fc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,31 @@
 2000-08-31  Ulrich Drepper  <drepper@redhat.com>
 
+	* inet/rcmd.c: Use *stat64 instead of *stat internally.
+	* inet/ruserpass.c: Likewise.
+	* intl/loadmsgcat.c: Likewise.
+	* io/getdirname.c: Likewise.
+	* locale/loadlocale.c: Likewise.
+	* misc/getusershell.c: Likewise.
+	* stdlib/canonicalize.c: Likewise.
+	* sysdeps/posix/euidaccess.c: Likewise.
+	* sysdeps/posix/isfdtype.c: Likewise.
+	* sysdeps/posix/posix_fallocate.c: Likewise.
+	* sysdeps/posix/tempname.c: Likewise.
+	* sysdeps/unix/grantpt.c: Likewise.
+	* sysdeps/unix/opendir.c: Likewise.
+	* sysdeps/unix/sysv/linux/fstatvfs.c: Likewise.
+	* sysdeps/unix/sysv/linux/internal_statvfs.c: Likewise.
+	* sysdeps/unix/sysv/linux/ptsname.c: Likewise.
+	* sysdeps/unix/sysv/linux/statvfs.c: Likewise.
+	* sysdeps/unix/sysv/linux/ttyname.c: Likewise.
+	* sysdeps/unix/sysv/linux/ttyname_r.c: Likewise.
+	* sysvipc/ftok.c: Likewise.
+	* time/getdate.c: Likewise.
+
+	* time/getdate.c: Add extra access test.
+
+2000-08-31  Ulrich Drepper  <drepper@redhat.com>
+
 	* version.h (VERSION): Bump to 2.1.93.
 
 	* sysdeps/unix/sysv/linux/powerpc/Dist: Add fe_nomask.c.
diff --git a/inet/rcmd.c b/inet/rcmd.c
index 16ad02b438..1ddf4729da 100644
--- a/inet/rcmd.c
+++ b/inet/rcmd.c
@@ -401,7 +401,7 @@ ruserok(rhost, superuser, ruser, luser)
 static FILE *
 iruserfopen (const char *file, uid_t okuser)
 {
-  struct stat st;
+  struct stat64 st;
   char *cp = NULL;
   FILE *res = NULL;
 
@@ -409,7 +409,7 @@ iruserfopen (const char *file, uid_t okuser)
      root, if writeable by anyone but the owner, or if hardlinked
      anywhere, quit.  */
   cp = NULL;
-  if (__lxstat (_STAT_VER, file, &st))
+  if (__lxstat64 (_STAT_VER, file, &st))
     cp = _("lstat failed");
   else if (!S_ISREG (st.st_mode))
     cp = _("not regular file");
@@ -418,7 +418,7 @@ iruserfopen (const char *file, uid_t okuser)
       res = fopen (file, "r");
       if (!res)
 	cp = _("cannot open");
-      else if (__fxstat (_STAT_VER, fileno (res), &st) < 0)
+      else if (__fxstat64 (_STAT_VER, fileno (res), &st) < 0)
 	cp = _("fstat failed");
       else if (st.st_uid && st.st_uid != okuser)
 	cp = _("bad owner");
diff --git a/inet/ruserpass.c b/inet/ruserpass.c
index 18d8e1462a..3b66c3040e 100644
--- a/inet/ruserpass.c
+++ b/inet/ruserpass.c
@@ -99,7 +99,7 @@ ruserpass(host, aname, apass)
 	char *hdir, *buf, *tmp;
 	char myname[1024], *mydomain;
 	int t, usedefault = 0;
-	struct stat stb;
+	struct stat64 stb;
 
 	hdir = __secure_getenv("HOME");
 	if (hdir == NULL) {
@@ -176,7 +176,7 @@ next:
 			break;
 		case PASSWD:
 			if (strcmp(*aname, "anonymous") &&
-			    fstat(fileno(cfile), &stb) >= 0 &&
+			    fstat64(fileno(cfile), &stb) >= 0 &&
 			    (stb.st_mode & 077) != 0) {
 	warnx(_("Error: .netrc file is readable by others."));
 	warnx(_("Remove password or make file unreadable by others."));
@@ -195,7 +195,7 @@ next:
 			break;
 		case ACCOUNT:
 #if 0
-			if (fstat(fileno(cfile), &stb) >= 0
+			if (fstat64(fileno(cfile), &stb) >= 0
 			    && (stb.st_mode & 077) != 0) {
 	warnx("Error: .netrc file is readable by others.");
 	warnx("Remove account or make file unreadable by others.");
diff --git a/intl/loadmsgcat.c b/intl/loadmsgcat.c
index 2b6262ea38..aad6dfe5db 100644
--- a/intl/loadmsgcat.c
+++ b/intl/loadmsgcat.c
@@ -121,7 +121,7 @@ _nl_load_domain (domain_file)
 {
   int fd;
   size_t size;
-  struct stat st;
+  struct stat64 st;
   struct mo_file_header *data = (struct mo_file_header *) -1;
   int use_mmap = 0;
   struct loaded_domain *domain;
@@ -143,7 +143,7 @@ _nl_load_domain (domain_file)
     return;
 
   /* We must know about the size of the file.  */
-  if (__builtin_expect (fstat (fd, &st) != 0, 0)
+  if (__builtin_expect (fstat64 (fd, &st) != 0, 0)
       || __builtin_expect ((size = (size_t) st.st_size) != st.st_size, 0)
       || __builtin_expect (size < sizeof (struct mo_file_header), 0))
     {
diff --git a/io/getdirname.c b/io/getdirname.c
index f6c9bfff21..1a654beac3 100644
--- a/io/getdirname.c
+++ b/io/getdirname.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1992, 1997, 1998, 2000 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
@@ -29,14 +29,14 @@ char *
 get_current_dir_name (void)
 {
   char *pwd;
-  struct stat dotstat, pwdstat;
+  struct stat64 dotstat, pwdstat;
 
   pwd = getenv ("PWD");
-  if (pwd != NULL &&
-      stat (".", &dotstat) == 0 &&
-      stat (pwd, &pwdstat) == 0 &&
-      pwdstat.st_dev == dotstat.st_dev &&
-      pwdstat.st_ino == dotstat.st_ino)
+  if (pwd != NULL
+      && stat64 (".", &dotstat) == 0
+      && stat64 (pwd, &pwdstat) == 0
+      && pwdstat.st_dev == dotstat.st_dev
+      && pwdstat.st_ino == dotstat.st_ino)
     /* The PWD value is correct.  Use it.  */
     return __strdup (pwd);
 
diff --git a/locale/loadlocale.c b/locale/loadlocale.c
index 34f762388f..4aacbc9d26 100644
--- a/locale/loadlocale.c
+++ b/locale/loadlocale.c
@@ -69,7 +69,7 @@ _nl_load_locale (struct loaded_l10nfile *file, int category)
       unsigned int nstrings;
       unsigned int strindex[0];
     } *filedata;
-  struct stat st;
+  struct stat64 st;
   struct locale_data *newdata;
   int save_err;
   int mmaped = 1;
@@ -83,7 +83,7 @@ _nl_load_locale (struct loaded_l10nfile *file, int category)
     /* Cannot open the file.  */
     return;
 
-  if (__builtin_expect (__fstat (fd, &st), 0) < 0)
+  if (__builtin_expect (__fxstat64 (_STAT_VER, fd, &st), 0) < 0)
     goto puntfd;
   if (__builtin_expect (S_ISDIR (st.st_mode), 0))
     {
@@ -106,7 +106,7 @@ _nl_load_locale (struct loaded_l10nfile *file, int category)
       if (__builtin_expect (fd, 0) < 0)
 	return;
 
-      if (__builtin_expect (__fstat (fd, &st), 0) < 0)
+      if (__builtin_expect (__fxstat64 (_STAT_VER, fd, &st), 0) < 0)
 	goto puntfd;
     }
 
diff --git a/misc/getusershell.c b/misc/getusershell.c
index 5fe1ab3eff..9e22125133 100644
--- a/misc/getusershell.c
+++ b/misc/getusershell.c
@@ -91,7 +91,7 @@ initshells()
 {
 	register char **sp, *cp;
 	register FILE *fp;
-	struct stat statb;
+	struct stat64 statb;
 	int flen;
 
 	if (shells != NULL)
@@ -102,7 +102,7 @@ initshells()
 	strings = NULL;
 	if ((fp = fopen(_PATH_SHELLS, "r")) == NULL)
 		return (okshells);
-	if (fstat(fileno(fp), &statb) == -1) {
+	if (fstat64(fileno(fp), &statb) == -1) {
 		(void)fclose(fp);
 		return (okshells);
 	}
diff --git a/stdlib/canonicalize.c b/stdlib/canonicalize.c
index e555b021cd..987ecf5b85 100644
--- a/stdlib/canonicalize.c
+++ b/stdlib/canonicalize.c
@@ -1,5 +1,5 @@
 /* Return the canonical absolute name of a given file.
-   Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
+   Copyright (C) 1996, 1997, 1998, 1999, 2000 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
@@ -91,7 +91,7 @@ canonicalize (const char *name, char *resolved)
 
   for (start = end = name; *start; start = end)
     {
-      struct stat st;
+      struct stat64 st;
       int n;
 
       /* Skip sequence of multiple path-separators.  */
@@ -147,7 +147,7 @@ canonicalize (const char *name, char *resolved)
 	  dest = __mempcpy (dest, start, end - start);
 	  *dest = '\0';
 
-	  if (__lxstat (_STAT_VER, rpath, &st) < 0)
+	  if (__lxstat64 (_STAT_VER, rpath, &st) < 0)
 	    goto error;
 
 	  if (S_ISLNK (st.st_mode))
diff --git a/sysdeps/posix/euidaccess.c b/sysdeps/posix/euidaccess.c
index e2205861a8..7f228b5643 100644
--- a/sysdeps/posix/euidaccess.c
+++ b/sysdeps/posix/euidaccess.c
@@ -1,5 +1,5 @@
 /* Check if effective user id can access file
-   Copyright (C) 1990, 91, 95, 96, 97, 98, 99 Free Software Foundation, Inc.
+   Copyright (C) 1990,91,95,96,97,98,99,2000 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
@@ -133,7 +133,7 @@ euidaccess (path, mode)
      const char *path;
      int mode;
 {
-  struct stat stats;
+  struct stat64 stats;
   int granted;
 
 #ifdef	_LIBC
@@ -155,7 +155,7 @@ euidaccess (path, mode)
     return access (path, mode);
 #endif
 
-  if (stat (path, &stats))
+  if (stat64 (path, &stats))
     return -1;
 
   mode &= (X_OK | W_OK | R_OK);	/* Clear any bogus bits. */
diff --git a/sysdeps/posix/isfdtype.c b/sysdeps/posix/isfdtype.c
index ec4568e460..dc19d99861 100644
--- a/sysdeps/posix/isfdtype.c
+++ b/sysdeps/posix/isfdtype.c
@@ -1,5 +1,5 @@
 /* Determine whether descriptor has given property.
-   Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+   Copyright (C) 1996, 1997, 2000 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
@@ -25,12 +25,12 @@
 int
 isfdtype (int fildes, int fdtype)
 {
-  struct stat st;
+  struct stat64 st;
   int result;
 
   {
     int save_error = errno;
-    result = fstat (fildes, &st);
+    result = fstat64 (fildes, &st);
     __set_errno (save_error);
   }
 
diff --git a/sysdeps/posix/posix_fallocate.c b/sysdeps/posix/posix_fallocate.c
index 46ce06f10d..add1b3bf46 100644
--- a/sysdeps/posix/posix_fallocate.c
+++ b/sysdeps/posix/posix_fallocate.c
@@ -27,7 +27,7 @@
 int
 posix_fallocate (int fd, __off_t offset, size_t len)
 {
-  struct stat st;
+  struct stat64 st;
   struct statfs f;
   size_t step;
 
@@ -40,7 +40,7 @@ posix_fallocate (int fd, __off_t offset, size_t len)
 
   /* First thing we have to make sure is that this is really a regular
      file.  */
-  if (__fxstat (_STAT_VER, fd, &st) != 0)
+  if (__fxstat64 (_STAT_VER, fd, &st) != 0)
     return EBADF;
   if (S_ISFIFO (st.st_mode))
     return ESPIPE;
diff --git a/sysdeps/posix/tempname.c b/sysdeps/posix/tempname.c
index 536225e957..fe386020a3 100644
--- a/sysdeps/posix/tempname.c
+++ b/sysdeps/posix/tempname.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,92,93,94,95,96,97,98,99 Free Software Foundation, Inc.
+/* Copyright (C) 1991-1999, 2000 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
@@ -33,8 +33,8 @@
 static int
 direxists (const char *dir)
 {
-  struct stat buf;
-  return __xstat (_STAT_VER, dir, &buf) == 0 && S_ISDIR (buf.st_mode);
+  struct stat64 buf;
+  return __xstat64 (_STAT_VER, dir, &buf) == 0 && S_ISDIR (buf.st_mode);
 }
 
 /* Path search algorithm, for tmpnam, tmpfile, etc.  If DIR is
@@ -127,7 +127,7 @@ __gen_tempname (char *tmpl, int kind)
   struct timeval tv;
   int count, fd = -1;
   int save_errno = errno;
-  struct stat st;
+  struct stat64 st;
 
   len = strlen (tmpl);
   if (len < 6 || strcmp (&tmpl[len - 6], "XXXXXX"))
@@ -179,7 +179,7 @@ __gen_tempname (char *tmpl, int kind)
 	     succeeds if __xstat fails because the name does not exist.
 	     Note the continue to bypass the common logic at the bottom
 	     of the loop.  */
-	  if (__xstat (_STAT_VER, tmpl, &st) < 0)
+	  if (__xstat64 (_STAT_VER, tmpl, &st) < 0)
 	    {
 	      if (errno == ENOENT)
 		{
diff --git a/sysdeps/unix/grantpt.c b/sysdeps/unix/grantpt.c
index 1ac542f609..71f73bfefc 100644
--- a/sysdeps/unix/grantpt.c
+++ b/sysdeps/unix/grantpt.c
@@ -97,7 +97,7 @@ grantpt (int fd)
   char _buf[512];
 #endif
   char *buf = _buf;
-  struct stat st;
+  struct stat64 st;
   char *grtmpbuf;
   struct group grbuf;
   size_t grbuflen = __sysconf (_SC_GETGR_R_SIZE_MAX);
@@ -109,7 +109,7 @@ grantpt (int fd)
   if (pts_name (fd, &buf, sizeof (_buf)))
     return -1;
 
-  if (__xstat (_STAT_VER, buf, &st) < 0)
+  if (__xstat64 (_STAT_VER, buf, &st) < 0)
     goto cleanup;
 
   /* Make sure that we own the device.  */
diff --git a/sysdeps/unix/opendir.c b/sysdeps/unix/opendir.c
index 9798e52850..cf030e02f4 100644
--- a/sysdeps/unix/opendir.c
+++ b/sysdeps/unix/opendir.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 92, 93, 94, 95, 96, 98 Free Software Foundation, Inc.
+/* Copyright (C) 1991,92,93,94,95,96,98,2000 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
@@ -71,7 +71,7 @@ DIR *
 __opendir (const char *name)
 {
   DIR *dirp;
-  struct stat statbuf;
+  struct stat64 statbuf;
   int fd;
   size_t allocation;
   int save_errno;
@@ -96,7 +96,7 @@ __opendir (const char *name)
       /* We first have to check whether the name is for a directory.  We
 	 cannot do this after the open() call since the open/close operation
 	 performed on, say, a tape device might have undesirable effects.  */
-      if (__xstat (_STAT_VER, name, &statbuf) < 0)
+      if (__xstat64 (_STAT_VER, name, &statbuf) < 0)
 	return NULL;
       if (! S_ISDIR (statbuf.st_mode))
 	{
@@ -111,7 +111,7 @@ __opendir (const char *name)
 
   /* Now make sure this really is a directory and nothing changed since
      the `stat' call.  */
-  if (__fstat (fd, &statbuf) < 0)
+  if (__fxstat64 (_STAT_VER, fd, &statbuf) < 0)
     goto lose;
   if (! S_ISDIR (statbuf.st_mode))
     {
diff --git a/sysdeps/unix/sysv/linux/fstatvfs.c b/sysdeps/unix/sysv/linux/fstatvfs.c
index b69bf77cb6..1fecc64eea 100644
--- a/sysdeps/unix/sysv/linux/fstatvfs.c
+++ b/sysdeps/unix/sysv/linux/fstatvfs.c
@@ -31,13 +31,13 @@ int
 fstatvfs (int fd, struct statvfs *buf)
 {
   struct statfs fsbuf;
-  struct stat st;
+  struct stat64 st;
 
   /* Get as much information as possible from the system.  */
   if (__fstatfs (fd, &fsbuf) < 0)
     return -1;
 
-#define STAT(st) fstat (fd, st)
+#define STAT(st) fstat64 (fd, st)
 #include "internal_statvfs.c"
 
   /* We signal success if the statfs call succeeded.  */
diff --git a/sysdeps/unix/sysv/linux/internal_statvfs.c b/sysdeps/unix/sysv/linux/internal_statvfs.c
index a6aec7d0f4..ef982e9a7c 100644
--- a/sysdeps/unix/sysv/linux/internal_statvfs.c
+++ b/sysdeps/unix/sysv/linux/internal_statvfs.c
@@ -56,10 +56,10 @@
 
 	  while (__getmntent_r (mtab, &mntbuf, tmpbuf, sizeof (tmpbuf)))
 	    {
-	      struct stat fsst;
+	      struct stat64 fsst;
 
 	      /* Find out about the device the current entry is for.  */
-	      if (stat (mntbuf.mnt_dir, &fsst) >= 0
+	      if (stat64 (mntbuf.mnt_dir, &fsst) >= 0
 		  && st.st_dev == fsst.st_dev)
 		{
 		  /* Bingo, we found the entry for the device FD is on.
diff --git a/sysdeps/unix/sysv/linux/ptsname.c b/sysdeps/unix/sysv/linux/ptsname.c
index 10365792dd..3c178a88a4 100644
--- a/sysdeps/unix/sysv/linux/ptsname.c
+++ b/sysdeps/unix/sysv/linux/ptsname.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 2000 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Zack Weinberg <zack@rabi.phys.columbia.edu>, 1998.
 
@@ -45,7 +45,7 @@
    terminal devices.  As of Linux 2.1.115 these are no longer
    supported.  They have been replaced by major numbers 2 (masters)
    and 3 (slaves).  */
-     
+
 /* Directory where we can find the slave pty nodes.  */
 #define _PATH_DEVPTS "/dev/pts/"
 
@@ -74,7 +74,7 @@ int
 __ptsname_r (int fd, char *buf, size_t buflen)
 {
   int save_errno = errno;
-  struct stat st;
+  struct stat64 st;
   int ptyno;
 
   if (buf == NULL)
@@ -121,7 +121,7 @@ __ptsname_r (int fd, char *buf, size_t buflen)
 	  return ERANGE;
 	}
 
-      if (__fstat (fd, &st) < 0)
+      if (__fxstat64 (_STAT_VER, fd, &st) < 0)
 	return errno;
 
       /* Check if FD really is a master pseudo terminal.  */
@@ -149,7 +149,7 @@ __ptsname_r (int fd, char *buf, size_t buflen)
       p[2] = '\0';
     }
 
-  if (__xstat (_STAT_VER, buf, &st) < 0)
+  if (__xstat64 (_STAT_VER, buf, &st) < 0)
     return errno;
 
   /* Check if the name we're about to return really corresponds to a
diff --git a/sysdeps/unix/sysv/linux/statvfs.c b/sysdeps/unix/sysv/linux/statvfs.c
index 7f85c9b726..41335469c1 100644
--- a/sysdeps/unix/sysv/linux/statvfs.c
+++ b/sysdeps/unix/sysv/linux/statvfs.c
@@ -31,13 +31,13 @@ int
 statvfs (const char *file, struct statvfs *buf)
 {
   struct statfs fsbuf;
-  struct stat st;
+  struct stat64 st;
 
   /* Get as much information as possible from the system.  */
   if (__statfs (file, &fsbuf) < 0)
     return -1;
 
-#define STAT(st) stat (file, st)
+#define STAT(st) stat64 (file, st)
 #include "internal_statvfs.c"
 
   /* We signal success if the statfs call succeeded.  */
diff --git a/sysdeps/unix/sysv/linux/ttyname.c b/sysdeps/unix/sysv/linux/ttyname.c
index 81149ff390..9a5009932a 100644
--- a/sysdeps/unix/sysv/linux/ttyname.c
+++ b/sysdeps/unix/sysv/linux/ttyname.c
@@ -31,7 +31,7 @@
 char *__ttyname;
 
 static char *getttyname (const char *dev, dev_t mydev,
-			 ino_t myino, int save, int *dostat)
+			 ino64_t myino, int save, int *dostat)
      internal_function;
 
 
@@ -39,10 +39,10 @@ static char *getttyname_name;
 
 static char *
 internal_function
-getttyname (const char *dev, dev_t mydev, ino_t myino, int save, int *dostat)
+getttyname (const char *dev, dev_t mydev, ino64_t myino, int save, int *dostat)
 {
   static size_t namelen;
-  struct stat st;
+  struct stat64 st;
   DIR *dirstream;
   struct dirent *d;
   size_t devlen = strlen (dev) + 1;
@@ -76,11 +76,11 @@ getttyname (const char *dev, dev_t mydev, ino_t myino, int save, int *dostat)
 	    *((char *) __mempcpy (getttyname_name, dev, devlen - 1)) = '/';
 	  }
 	memcpy (&getttyname_name[devlen], d->d_name, dlen);
-	if (__xstat (_STAT_VER, getttyname_name, &st) == 0
+	if (__xstat64 (_STAT_VER, getttyname_name, &st) == 0
 #ifdef _STATBUF_ST_RDEV
 	    && S_ISCHR (st.st_mode) && st.st_rdev == mydev
 #else
-	    && (ino_t) d->d_fileno == myino && st.st_dev == mydev
+	    && (ino64_t) d->d_fileno == myino && st.st_dev == mydev
 #endif
 	   )
 	  {
@@ -108,7 +108,7 @@ ttyname (int fd)
 {
   static size_t buflen;
   char procname[30];
-  struct stat st, st1;
+  struct stat64 st, st1;
   int dostat = 0;
   char *name;
   int save = errno;
@@ -143,10 +143,10 @@ ttyname (int fd)
       return ttyname_buf;
     }
 
-  if (__fxstat (_STAT_VER, fd, &st) < 0)
+  if (__fxstat64 (_STAT_VER, fd, &st) < 0)
     return NULL;
 
-  if (__xstat (_STAT_VER, "/dev/pts", &st1) == 0 && S_ISDIR (st1.st_mode))
+  if (__xstat64 (_STAT_VER, "/dev/pts", &st1) == 0 && S_ISDIR (st1.st_mode))
     {
 #ifdef _STATBUF_ST_RDEV
       name = getttyname ("/dev/pts", st.st_rdev, st.st_ino, save, &dostat);
diff --git a/sysdeps/unix/sysv/linux/ttyname_r.c b/sysdeps/unix/sysv/linux/ttyname_r.c
index 16fb7a0972..87dadc1dd7 100644
--- a/sysdeps/unix/sysv/linux/ttyname_r.c
+++ b/sysdeps/unix/sysv/linux/ttyname_r.c
@@ -29,15 +29,15 @@
 #include <stdio-common/_itoa.h>
 
 static int getttyname_r (char *buf, size_t buflen,
-			 dev_t mydev, ino_t myino, int save,
+			 dev_t mydev, ino64_t myino, int save,
 			 int *dostat) internal_function;
 
 static int
 internal_function
-getttyname_r (char *buf, size_t buflen, dev_t mydev, ino_t myino,
+getttyname_r (char *buf, size_t buflen, dev_t mydev, ino64_t myino,
 	      int save, int *dostat)
 {
-  struct stat st;
+  struct stat64 st;
   DIR *dirstream;
   struct dirent *d;
   size_t devlen = strlen (buf);
@@ -69,11 +69,11 @@ getttyname_r (char *buf, size_t buflen, dev_t mydev, ino_t myino,
 	cp = __stpncpy (buf + devlen, d->d_name, needed);
 	cp[0] = '\0';
 
-	if (__xstat (_STAT_VER, buf, &st) == 0
+	if (__xstat64 (_STAT_VER, buf, &st) == 0
 #ifdef _STATBUF_ST_RDEV
 	    && S_ISCHR (st.st_mode) && st.st_rdev == mydev
 #else
-	    && (ino_t) d->d_fileno == myino && st.st_dev == mydev
+	    && (ino64_t) d->d_fileno == myino && st.st_dev == mydev
 #endif
 	   )
 	  {
@@ -96,7 +96,7 @@ int
 __ttyname_r (int fd, char *buf, size_t buflen)
 {
   char procname[30];
-  struct stat st, st1;
+  struct stat64 st, st1;
   int dostat = 0;
   int save = errno;
   int ret;
@@ -136,14 +136,14 @@ __ttyname_r (int fd, char *buf, size_t buflen)
       return ERANGE;
     }
 
-  if (__fxstat (_STAT_VER, fd, &st) < 0)
+  if (__fxstat64 (_STAT_VER, fd, &st) < 0)
     return errno;
 
   /* Prepare the result buffer.  */
   memcpy (buf, "/dev/pts/", sizeof ("/dev/pts/"));
   buflen -= sizeof ("/dev/pts/") - 1;
 
-  if (__xstat (_STAT_VER, buf, &st1) == 0 && S_ISDIR (st1.st_mode))
+  if (__xstat64 (_STAT_VER, buf, &st1) == 0 && S_ISDIR (st1.st_mode))
     {
 #ifdef _STATBUF_ST_RDEV
       ret = getttyname_r (buf, buflen, st.st_rdev, st.st_ino, save,
diff --git a/sysvipc/ftok.c b/sysvipc/ftok.c
index b0199acda6..05f8c76abc 100644
--- a/sysvipc/ftok.c
+++ b/sysvipc/ftok.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995, 1996 Free Software Foundation, Inc.
+/* Copyright (C) 1995, 1996, 2000 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
 
@@ -25,10 +25,10 @@ ftok (pathname, proj_id)
      const char *pathname;
      int proj_id;
 {
-  struct stat st;
+  struct stat64 st;
   key_t key;
 
-  if (__xstat (_STAT_VER, pathname, &st) < 0)
+  if (__xstat64 (_STAT_VER, pathname, &st) < 0)
     return (key_t) -1;
 
   key = ((st.st_ino & 0xffff) | ((st.st_dev & 0xff) << 16)
diff --git a/time/getdate.c b/time/getdate.c
index 626fb49d7a..dfd627a832 100644
--- a/time/getdate.c
+++ b/time/getdate.c
@@ -23,6 +23,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <time.h>
+#include <unistd.h>
 #include <sys/stat.h>
 
 #define TM_YEAR_BASE 1900
@@ -110,19 +111,22 @@ __getdate_r (const char *string, struct tm *tp)
   char *result = NULL;
   time_t timer;
   struct tm tm;
-  struct stat st;
+  struct stat64 st;
   int mday_ok = 0;
 
   datemsk = getenv ("DATEMSK");
   if (datemsk == NULL || *datemsk == '\0')
     return 1;
 
-  if (stat (datemsk, &st) < 0)
+  if (stat64 (datemsk, &st) < 0)
     return 3;
 
   if (!S_ISREG (st.st_mode))
     return 4;
 
+  if (__access (datemsk, R_OK) < 0)
+    return 2;
+
   /* Open the template file.  */
   fp = fopen (datemsk, "r");
   if (fp == NULL)