glibc/libio
Siddhesh Poyarekar be349d7042 ftell: seek to end only when there are unflushed bytes (BZ #17647)
Currently we seek to end of file if there are unflushed writes or the
stream is in write mode, to get the current offset for writing in
append mode, which is the end of file.  The latter case (i.e. stream
is in write mode, but no unflushed writes) is unnecessary since it
will only happen when the stream has just been flushed, in which case
the recorded offset ought to be reliable.

Removing that case lets ftell give the correct offset when it follows
an ftruncate.  The latter truncates the file, but does not change the
file position, due to which it is permissible to call ftell without an
intervening fseek call.

Tested on x86_64 to verify that the added test case fails without the
patch and succeeds with it, and that there are no additional
regressions due to it.

	[BZ #17647]
	* libio/fileops.c (do_ftell): Seek only when there are
	unflushed writes.
	* libio/wfileops.c (do_ftell_wide): Likewise.
	* libio/tst-ftell-active-handler.c (do_ftruncate_test): New
	test case.
	(do_one_test): Call it.
2014-12-04 08:08:37 +05:30
..
bits Complete _BSD_SOURCE / _SVID_source followup cleanup. 2014-02-21 21:45:26 +00:00
__fbufsize.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
__flbf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
__fpending.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
__fpurge.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
__freadable.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
__freading.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
__fsetlocking.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
__fwritable.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
__fwriting.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
bug-fopena+.c Update. 2002-08-27 06:41:29 +00:00
bug-fseek.c Update. 2002-07-24 11:18:48 +00:00
bug-ftell.c * libio/bug-ftell.c (do_test): Add a cast. 2003-11-01 21:11:05 +00:00
bug-memstream1.c [BZ #1996] 2006-08-14 22:16:14 +00:00
bug-mmap-fflush.c Update. 2002-08-27 12:10:11 +00:00
bug-rewind2.c Fix warnings in fwscanf / rewind tests. 2014-11-26 12:54:39 +00:00
bug-rewind.c Fix warnings in fwscanf / rewind tests. 2014-11-26 12:54:39 +00:00
bug-ungetc2.c Update. 2003-09-06 09:56:14 +00:00
bug-ungetc3.c Update. 2004-11-09 07:05:27 +00:00
bug-ungetc4.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
bug-ungetc.c 2002-07-24 Roland McGrath <roland@frob.com> 2002-07-24 09:34:59 +00:00
bug-ungetwc1.c Fix libio/bug-ungetwc1.c warning. 2014-11-27 16:01:04 +00:00
bug-ungetwc2.c Update. 2002-04-24 21:09:14 +00:00
bug-wfflush.c * libio/bug-wfflush.c (do_test): Call rewind instead of fsetpos. 2002-11-11 06:55:22 +00:00
bug-wmemstream1.c * posix/glob.c (glob_in_dir): Add some comments and asserts to 2006-09-30 15:09:35 +00:00
bug-wsetpos.c Fix fsetpos on wide stream. 2009-09-02 19:45:33 -07:00
clearerr_u.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
clearerr.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
Depend
fcloseall.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
feof_u.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
feof.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
ferror_u.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
ferror.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
filedoalloc.c Use glibc_likely instead __builtin_expect. 2014-02-10 15:07:12 +01:00
fileno.c Fix tzfile.c namespace (bug 17583). 2014-11-12 16:22:51 +00:00
fileops.c ftell: seek to end only when there are unflushed bytes (BZ #17647) 2014-12-04 08:08:37 +05:30
fmemopen.c Use glibc_likely instead __builtin_expect. 2014-02-10 15:07:12 +01:00
fputc_u.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fputc.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fputwc_u.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fputwc.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
freopen64.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
freopen.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fseek.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fseeko64.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fseeko.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
ftello64.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
ftello.c Fix tzfile.c namespace (bug 17583). 2014-11-12 16:22:51 +00:00
fwide.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fwprintf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fwscanf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
genops.c Revert "Fix _IO_JUMPS_OFFSET -Wundef warnings" 2014-03-17 20:37:42 +00:00
getc_u.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
getc.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
getchar_u.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
getchar.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
getwc_u.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
getwc.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
getwchar_u.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
getwchar.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
iofclose.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
iofdopen.c Change offset in fdopen only if setting O_APPEND 2014-03-17 21:24:02 +05:30
iofflush_u.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
iofflush.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
iofgetpos64.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
iofgetpos.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
iofgets_u.c Fix __get_nprocs fgets_unlocked namespace (bug 17582). 2014-11-12 22:39:36 +00:00
iofgets.c Fix __get_nprocs fgets_unlocked namespace (bug 17582). 2014-11-12 22:39:36 +00:00
iofgetws_u.c Use glibc_likely instead __builtin_expect. 2014-02-10 15:07:12 +01:00
iofgetws.c Use glibc_likely instead __builtin_expect. 2014-02-10 15:07:12 +01:00
iofopen64.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
iofopen.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
iofopncook.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
iofputs_u.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
iofputs.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
iofputws_u.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
iofputws.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
iofread_u.c Fix tzfile.c namespace (bug 17583). 2014-11-12 16:22:51 +00:00
iofread.c Fix tzfile.c namespace (bug 17583). 2014-11-12 16:22:51 +00:00
iofsetpos64.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
iofsetpos.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
ioftell.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
iofwide.c Complete the removal of __gconv_translit_find 2014-09-12 09:17:32 +02:00
iofwrite_u.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
iofwrite.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
iogetdelim.c Use glibc_likely instead __builtin_expect. 2014-02-10 15:07:12 +01:00
iogetline.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
iogets.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
iogetwline.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
iolibio.h Remove use of INTDEF/INTUSE in libio 2012-05-24 23:06:20 +02:00
iopadn.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
iopopen.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
ioputs.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
ioseekoff.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
ioseekpos.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
iosetbuffer.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
iosetvbuf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
ioungetc.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
ioungetwc.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
iovdprintf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
iovsprintf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
iovsscanf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
iovswscanf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
iowpadn.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
libc_fatal.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
libio.h Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
libioP.h Remove NOT_IN_libc 2014-11-24 15:03:45 +05:30
Makefile Don't error out writing a multibyte character to an unbuffered stream (bug 17522) 2014-11-03 09:58:24 +01:00
memstream.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
obprintf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
oldfileops.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
oldiofclose.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
oldiofdopen.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
oldiofgetpos64.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
oldiofgetpos.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
oldiofopen.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
oldiofsetpos64.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
oldiofsetpos.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
oldiopopen.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
oldpclose.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
oldstdfiles.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
oldtmpfile.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
pclose.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
peekc.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
putc_u.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
putc.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
putchar_u.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
putchar.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
putwc_u.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
putwc.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
putwchar_u.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
putwchar.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
rewind.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
setbuf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
setlinebuf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
stdfiles.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
stdio.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
stdio.h Revert to defining __extern_inline only for gcc-4.3+ (BZ #17266) 2014-09-16 14:08:48 +05:30
strfile.h Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
strops.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
swprintf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
swscanf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
test-fmemopen.c Modify several tests to use test-skeleton.c 2014-11-05 15:24:08 +05:30
test-freopen.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
test-freopen.sh Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
tst_getwc.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
tst_getwc.input
tst_putwc.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
tst_swprintf.c Fix format strings. 2002-09-30 07:47:16 +00:00
tst_swscanf.c
tst_wprintf2.c
tst_wprintf.c
tst_wscanf.c
tst_wscanf.input
tst-atime.c Update. 2002-09-05 10:28:51 +00:00
tst-eof.c pdate. 2002-07-23 00:31:41 +00:00
tst-ext2.c * libio/Makefile (tests): Add tst-ext2. 2007-10-13 07:33:09 +00:00
tst-ext.c
tst-fgetwc.c (do_test): Use de_DE.UTF-8 as locale name. 2009-06-15 17:27:48 -07:00
tst-fgetwc.input 2009-02-04 Ulrich Drepper <drepper@redhat.com> 2009-02-04 21:27:48 +00:00
tst-fgetws.c Fix format strings. 2002-09-30 07:47:16 +00:00
tst-fopenloc2.c [BZ #2173] 2006-01-19 01:35:28 +00:00
tst-fopenloc.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
tst-fputws.c Don't error out writing a multibyte character to an unbuffered stream (bug 17522) 2014-11-03 09:58:24 +01:00
tst-freopen.c Modify several tests to use test-skeleton.c 2014-11-05 15:24:08 +05:30
tst-fseek.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
tst-ftell-active-handler.c ftell: seek to end only when there are unflushed bytes (BZ #17647) 2014-12-04 08:08:37 +05:30
tst-ftell-append.c Fix offset computation for append+ mode on switching from read (BZ #16724) 2014-05-27 13:54:19 +05:30
tst-ftell-partial-wide.c Fix infinite loop in ftell when writing wide char data (BZ #16398) 2014-02-05 12:49:00 +05:30
tst-fwrite-error.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
tst-memstream1.c * libio/wmemstream.c: New file. 2006-01-12 02:03:42 +00:00
tst-memstream2.c * libio/wmemstream.c: New file. 2006-01-12 02:03:42 +00:00
tst-mmap2-eofsync.c * catgets/open_catalog.c (__open_catalog): Don't use a value type 2002-09-24 04:24:25 +00:00
tst-mmap-eofsync.c * locale/xlocale.h (struct __locale_struct): New member `__names'. 2002-08-30 10:36:44 +00:00
tst-mmap-fflushsync.c * locale/xlocale.h (struct __locale_struct): New member `__names'. 2002-08-30 10:36:44 +00:00
tst-mmap-offend.c * locale/xlocale.h (struct __locale_struct): New member `__names'. 2002-08-30 10:36:44 +00:00
tst-mmap-setvbuf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
tst-popen1.c * sysdeps/unix/sysv/linux/syscalls.list: Add __pipe2 alias. 2008-07-27 18:26:13 +00:00
tst-setvbuf1.c [BZ #2337] 2006-12-13 23:17:54 +00:00
tst-sscanf.c Modify several tests to use test-skeleton.c 2014-11-05 15:24:08 +05:30
tst-swscanf.c Update. 2002-02-26 18:08:08 +00:00
tst-ungetwc1.c Modify several tests to use test-skeleton.c 2014-11-05 15:24:08 +05:30
tst-ungetwc2.c Modify several tests to use test-skeleton.c 2014-11-05 15:24:08 +05:30
tst-widetext.c Modify several tests to use test-skeleton.c 2014-11-05 15:24:08 +05:30
tst-widetext.input Rename Oriya locale to Odia (bug 15601) 2013-11-20 17:47:41 +05:30
tst-wmemstream1.c * posix/glob.c (glob_in_dir): Add some comments and asserts to 2006-09-30 15:09:35 +00:00
tst-wmemstream2.c * posix/glob.c (glob_in_dir): Add some comments and asserts to 2006-09-30 15:09:35 +00:00
vasprintf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
Versions Remove mention of open_obstack_stream, which has never existed in libio. 2011-10-26 16:53:02 -07:00
vscanf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
vsnprintf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
vswprintf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
vwprintf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
vwscanf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
wfiledoalloc.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
wfileops.c ftell: seek to end only when there are unflushed bytes (BZ #17647) 2014-12-04 08:08:37 +05:30
wgenops.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
wmemstream.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
wprintf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
wscanf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
wstrops.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00