* 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>
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.
static FILE *
iruserfopen (const char *file, uid_t okuser)
{
- struct stat st;
+ struct stat64 st;
char *cp = NULL;
FILE *res = NULL;
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");
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");
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) {
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."));
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.");
{
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;
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))
{
-/* 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
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);
unsigned int nstrings;
unsigned int strindex[0];
} *filedata;
- struct stat st;
+ struct stat64 st;
struct locale_data *newdata;
int save_err;
int mmaped = 1;
/* 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))
{
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;
}
{
register char **sp, *cp;
register FILE *fp;
- struct stat statb;
+ struct stat64 statb;
int flen;
if (shells != NULL)
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);
}
/* 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
for (start = end = name; *start; start = end)
{
- struct stat st;
+ struct stat64 st;
int n;
/* Skip sequence of multiple path-separators. */
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))
/* 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
const char *path;
int mode;
{
- struct stat stats;
+ struct stat64 stats;
int granted;
#ifdef _LIBC
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. */
/* 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
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);
}
int
posix_fallocate (int fd, __off_t offset, size_t len)
{
- struct stat st;
+ struct stat64 st;
struct statfs f;
size_t step;
/* 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;
-/* 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
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
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"))
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)
{
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);
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. */
-/* 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
__opendir (const char *name)
{
DIR *dirp;
- struct stat statbuf;
+ struct stat64 statbuf;
int fd;
size_t allocation;
int save_errno;
/* 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))
{
/* 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))
{
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. */
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.
-/* 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.
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/"
__ptsname_r (int fd, char *buf, size_t buflen)
{
int save_errno = errno;
- struct stat st;
+ struct stat64 st;
int ptyno;
if (buf == NULL)
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. */
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
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. */
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;
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;
*((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
)
{
{
static size_t buflen;
char procname[30];
- struct stat st, st1;
+ struct stat64 st, st1;
int dostat = 0;
char *name;
int save = errno;
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);
#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);
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
)
{
__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;
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,
-/* 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.
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)
#include <stdlib.h>
#include <string.h>
#include <time.h>
+#include <unistd.h>
#include <sys/stat.h>
#define TM_YEAR_BASE 1900
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)