From 3efdabe7624ae0a574d3919cfe9ffcb5bca21692 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Wed, 23 Oct 2002 23:50:19 +0000 Subject: * libio/ftello.c (ftello): Use _IO_off64_t for type of POS. Check for the result overflowing off_t and fail with EOVERFLOW. * libio/ioftell.c (_IO_ftell): Likewise. * libio/iofgetpos.c (_IO_new_fgetpos): Likewise. * login/logwtmp.c (logwtmp): If sizeof ut_tv != sizeof struct timeval, use a temporary timeval on the stack for gettimeofday and copy it. * login/logout.c (logout): Likewise. Reported by Steven Munroe . * sysdeps/unix/sysv/linux/bits/statfs.h (struct statfs): Use __SWORD_TYPE instead of int for member types. (struct statfs64): Likewise. * sysdeps/unix/sysv/linux/alpha/bits/statfs.h: New file. * sysdeps/unix/sysv/linux/s390/bits/statfs.h: New file. * sysdeps/unix/sysv/linux/ia64/bits/statfs.h: File removed. * sysdeps/unix/sysv/linux/sparc/bits/statfs.h: File removed. * sysdeps/unix/sysv/linux/x86_64/bits/statfs.h: File removed. * sysdeps/unix/sysv/linux/sparc/bits/statvfs.h: Moved to ... * sysdeps/unix/sysv/linux/bits/statvfs.h: ... here. (ST_NODIRATIME): Restore fixed value of 2048. * sysdeps/unix/sysv/linux/alpha/bits/statvfs.h: File removed. * sysdeps/unix/sysv/linux/ia64/bits/statvfs.h: File removed. Rearranged definitions to reduce duplication. * sysdeps/generic/bits/types.h: Rewritten, using macros from and new header . * posix/Makefile (headers): Add bits/typesizes.h here. * sysdeps/generic/bits/typesizes.h: New file. * sysdeps/unix/sysv/linux/alpha/bits/typesizes.h: New file. * sysdeps/unix/sysv/linux/sparc/bits/typesizes.h: New file. * sysdeps/mach/hurd/bits/typesizes.h: New file. * sysdeps/unix/sysv/linux/alpha/bits/types.h: File removed. * sysdeps/unix/sysv/linux/bits/types.h: File removed. * sysdeps/unix/sysv/linux/ia64/bits/types.h: File removed. * sysdeps/unix/sysv/linux/mips/bits/types.h: File removed. * sysdeps/unix/sysv/linux/s390/bits/types.h: File removed. * sysdeps/unix/sysv/linux/sparc/bits/types.h: File removed. * sysdeps/unix/sysv/linux/x86_64/bits/types.h: File removed. * posix/sys/types.h [__USE_POSIX199506 || __USE_UNIX98]: Include here, not in . * signal/signal.h: Likewise. * streams/stropts.h: Include . * streams/Makefile (headers): Add bits/xtitypes.h here. * sysdeps/generic/bits/xtitypes.h: New file. * sysdeps/s390/bits/xtitypes.h: New file. * sysdeps/ia64/bits/xtitypes.h: New file. * sysdeps/x86_64/bits/xtitypes.h: New file. * sysvipc/Makefile (headers): Add bits/ipctypes.h here. * sysdeps/generic/bits/ipctypes.h: New file. * sysdeps/mips/bits/ipctypes.h: New file. * sysdeps/gnu/bits/shm.h: Include . * sysdeps/gnu/bits/msq.h: Likewise. * sysvipc/sys/ipc.h: Likewise. 2002-10-22 Roland McGrath * sysdeps/generic/libc-tls.c (_dl_tls_static_used): New variable. * sysdeps/generic/ldsodefs.h (struct rtld_global): New member `_dl_tls_static_used'. (TLS_STATIC_MIN): New macro. * elf/dl-reloc.c [USE_TLS] (allocate_static_tls): New function. (CHECK_STATIC_TLS): Use it. --- libio/ftello.c | 9 ++++++++- libio/iofgetpos.c | 9 ++++++++- libio/ioftell.c | 9 ++++++++- 3 files changed, 24 insertions(+), 3 deletions(-) (limited to 'libio') diff --git a/libio/ftello.c b/libio/ftello.c index dcecf5ee50..94a2541b25 100644 --- a/libio/ftello.c +++ b/libio/ftello.c @@ -35,7 +35,7 @@ off_t ftello (fp) _IO_FILE *fp; { - _IO_off_t pos; + _IO_off64_t pos; CHECK_FILE (fp, -1L); _IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, fp); _IO_flockfile (fp); @@ -52,6 +52,13 @@ ftello (fp) #ifdef EIO if (errno == 0) __set_errno (EIO); +#endif + return -1L; + } + if ((_IO_off64_t) (off_t) pos != pos) + { +#ifdef EOVERFLOW + __set_errno (EOVERFLOW); #endif return -1L; } diff --git a/libio/iofgetpos.c b/libio/iofgetpos.c index c8eea79e9b..4b50898a07 100644 --- a/libio/iofgetpos.c +++ b/libio/iofgetpos.c @@ -35,7 +35,7 @@ _IO_new_fgetpos (fp, posp) _IO_FILE *fp; _IO_fpos_t *posp; { - _IO_off_t pos; + _IO_off64_t pos; int result = 0; CHECK_FILE (fp, EOF); _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); @@ -53,6 +53,13 @@ _IO_new_fgetpos (fp, posp) #ifdef EIO if (errno == 0) __set_errno (EIO); +#endif + result = EOF; + } + else if ((_IO_off64_t) (__typeof (posp->__pos)) pos != pos) + { +#ifdef EOVERFLOW + __set_errno (EOVERFLOW); #endif result = EOF; } diff --git a/libio/ioftell.c b/libio/ioftell.c index 8328c5b042..2a389c37be 100644 --- a/libio/ioftell.c +++ b/libio/ioftell.c @@ -34,7 +34,7 @@ long int _IO_ftell (fp) _IO_FILE *fp; { - _IO_off_t pos; + _IO_off64_t pos; CHECK_FILE (fp, -1L); _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); _IO_flockfile (fp); @@ -51,6 +51,13 @@ _IO_ftell (fp) #ifdef EIO if (errno == 0) __set_errno (EIO); +#endif + return -1L; + } + if ((_IO_off64_t) (off_t) pos != pos) + { +#ifdef EOVERFLOW + __set_errno (EOVERFLOW); #endif return -1L; } -- cgit v1.2.3