diff options
author | Roland McGrath <roland@gnu.org> | 2002-10-23 23:50:19 +0000 |
---|---|---|
committer | Roland McGrath <roland@gnu.org> | 2002-10-23 23:50:19 +0000 |
commit | 3efdabe7624ae0a574d3919cfe9ffcb5bca21692 (patch) | |
tree | 0fff21e87bcf8b20c622f1a109f88566df789d2f /libio/iofgetpos.c | |
parent | b02c687fd362f0a517aac69f4e934d9126e4032a (diff) | |
download | glibc-3efdabe7624ae0a574d3919cfe9ffcb5bca21692.tar.gz glibc-3efdabe7624ae0a574d3919cfe9ffcb5bca21692.tar.xz glibc-3efdabe7624ae0a574d3919cfe9ffcb5bca21692.zip |
* 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 <sjmunroe@us.ibm.com>. * 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 <bits/types.h> definitions to reduce duplication. * sysdeps/generic/bits/types.h: Rewritten, using macros from <bits/wordsize.h> and new header <bits/typesizes.h>. * 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 <bits/pthreadtypes.h> here, not in <bits/types.h>. * signal/signal.h: Likewise. * streams/stropts.h: Include <bits/xtitypes.h>. * 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 <bits/ipctypes.h>. * sysdeps/gnu/bits/msq.h: Likewise. * sysvipc/sys/ipc.h: Likewise. 2002-10-22 Roland McGrath <roland@redhat.com> * 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.
Diffstat (limited to 'libio/iofgetpos.c')
-rw-r--r-- | libio/iofgetpos.c | 9 |
1 files changed, 8 insertions, 1 deletions
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); @@ -56,6 +56,13 @@ _IO_new_fgetpos (fp, posp) #endif result = EOF; } + else if ((_IO_off64_t) (__typeof (posp->__pos)) pos != pos) + { +#ifdef EOVERFLOW + __set_errno (EOVERFLOW); +#endif + result = EOF; + } else { posp->__pos = pos; |