4
0
mirror of git://sourceware.org/git/newlib-cygwin.git synced 2025-02-15 21:49:22 +08:00
Jeff Johnston dee5139131 2002-07-17 Jeff Johnston <jjohnstn@redhat.com>
* configure.host(stdio64_dir): New setting that is used to
        enable building of new stdio64 directory.
        * libc/Makefile.am[HAVE_STDIO64_DIR]: Add support for
        large files.
        (stmp-stdio64,stdio64.texi): New targets to optionally add in
        stdio64 info to info files.
        * libc/Makefile.in: Regenerated.
        * libc/configure: Ditto.
        * libc/configure.in: Add configuration variables that are set
        when stdio64 is selected as subdir in configure.host.
        * libc/libc.texinfo: Add optional menu item for Stdio64, based
        on whether STDIO64 flag is set or not.
        * libc/sys.tex: Add optional stdio64 syscalls based on whether
        STDIO64 flag is set or not.
        * libc/include/reent.h[__LARGE64_FILES]: Add new stdio64
        _r sycall routines.
        * libc/include/stdio.h[__LARGE64_FILES]: Add new stdio64 prototypes.
        (FILE): Typedef'd to __FILE instead of struct __sFILE directly.
        (__SL64): New file flag indicating file is opened via fopen64.
        * libc/include/sys/_types.h(_off64_t): Added.
        * libc/include/sys/config.h: For x86-linux, define __LARGE64_FILES.
        * libc/include/sys/reent.h(struct __sFILE64): New file structure
        for 64-bit offset large file support.
        (__FILE): New intermediate type either set to struct __sFILE64 or
        struct __sFILE, depending on whether __LARGE64_FILES is set or not.
        * libc/reent/Makefile.am[HAVE_STDIO64_DIR]: Add new files.
        * libc/reent/Makefile.in: Regenerated.
        * libc/reent/fstat64r.c: New file.
        * libc/reent/lseek64r.c: Ditto.
        * libc/reent/open64r.c: Ditto.
        * libc/reent/reent.tex: Optionally add stdio64 reentrant syscalls
        based on whether STDIO64 flag is set.
        * libc/stdio/stdio.tex: Add blank line.
        * libc/stdio64/Makefile.am: New file.
        * libc/stdio64/Makefile.in: Ditto.
        * libc/stdio64/fgetpos64.c: Ditto.
        * libc/stdio64/fopen64.: Ditto.
        * libc/stdio64/freopen64.c: Ditto.
        * libc/stdio64/fseeko64.c: Ditto.
        * libc/stdio64/fsetpos64.c: Ditto.
        * libc/stdio64/ftello64.c: Ditto.
        * libc/stdio64/local64.h: Ditto.
        * libc/stdio64/stdio64.c: Ditto.
        * libc/stdio64/stdio64.tex: Ditto.
        * libc/stdio64/tmpfile64.c: Ditto.
        * libc/sys/linux/io64.c: Add weak aliases for lseek64, fstat64, and
        open64.
2002-07-17 23:25:44 +00:00

73 lines
1.5 KiB
C

#ifdef __LARGE64_FILES
/* Reentrant versions of fstat system call. This implementation just
calls the fstat system call. */
#include <reent.h>
#include <unistd.h>
#include <sys/stat.h>
#include <_syslist.h>
/* Some targets provides their own versions of these functions. Those
targets should define REENTRANT_SYSCALLS_PROVIDED in TARGET_CFLAGS. */
#ifdef _REENT_ONLY
#ifndef REENTRANT_SYSCALLS_PROVIDED
#define REENTRANT_SYSCALLS_PROVIDED
#endif
#endif
#ifdef REENTRANT_SYSCALLS_PROVIDED
int _dummy_fstat_syscalls = 1;
#else
/* We use the errno variable used by the system dependent layer. */
#undef errno
extern int errno;
/*
FUNCTION
<<_fstat64_r>>---Reentrant version of fstat64
INDEX
_fstat64_r
ANSI_SYNOPSIS
#include <reent.h>
int _fstat64_r(struct _reent *<[ptr]>,
int <[fd]>, struct stat64 *<[pstat]>);
TRAD_SYNOPSIS
#include <reent.h>
int _fstat64_r(<[ptr]>, <[fd]>, <[pstat]>)
struct _reent *<[ptr]>;
int <[fd]>;
struct stat *<[pstat]>;
DESCRIPTION
This is a reentrant version of <<fstat64>>. It
takes a pointer to the global data block, which holds
<<errno>>. This function is only enabled on systems
that define __LARGE64_FILES.
*/
int
_fstat64_r (ptr, fd, pstat)
struct _reent *ptr;
int fd;
struct stat64 *pstat;
{
int ret;
errno = 0;
if ((ret = _fstat64 (fd, pstat)) == -1 && errno != 0)
ptr->_errno = errno;
return ret;
}
#endif /* ! defined (REENTRANT_SYSCALLS_PROVIDED) */
#endif /* __LARGE64_FILES */