glibc/stdio-common
Zack Weinberg 349718d4d7 Add __vfscanf_internal and __vfwscanf_internal with flags arguments.
There are two flags currently defined: SCANF_LDBL_IS_DBL is the mode
used by __nldbl_ scanf variants, and SCANF_ISOC99_A is the mode used
by __isoc99_ scanf variants.  In this patch, the new functions honor
these flag bits if they're set, but they still also look at the
corresponding bits of environmental state, and callers all pass zero.

The new functions do *not* have the "errp" argument possessed by
_IO_vfscanf and _IO_vfwscanf.  All internal callers passed NULL for
that argument.  External callers could theoretically exist, so I
preserved wrappers, but they are flagged as compat symbols and they
don't preserve the three-way distinction among types of errors that
was formerly exposed.  These functions probably should have been in
the list of deprecated _IO_ symbols in 2.27 NEWS -- they're not just
aliases for vfscanf and vfwscanf.

(It was necessary to introduce ldbl_compat_symbol for _IO_vfscanf.
Please check that part of the patch very carefully, I am still not
confident I understand all of the details of ldbl-opt.)

This patch also introduces helper inlines in libio/strfile.h that
encapsulate the process of initializing an _IO_strfile object for
reading.  This allows us to call __vfscanf_internal directly from
sscanf, and __vfwscanf_internal directly from swscanf, without
duplicating the initialization code.  (Previously, they called their
v-counterparts, but that won't work if we want to control *both* C99
mode and ldbl-is-dbl mode using the flags argument to__vfscanf_internal.)
It's still a little awkward, especially for wide strfiles, but it's
much better than what we had.

Tested for powerpc and powerpc64le.
2018-12-05 18:15:42 -02:00
..
bits Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
Depend
Makefile Add __vfscanf_internal and __vfwscanf_internal with flags arguments. 2018-12-05 18:15:42 -02:00
Versions Add __vfscanf_internal and __vfwscanf_internal with flags arguments. 2018-12-05 18:15:42 -02:00
_i18n_number.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
_itoa.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
_itowa.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
_itowa.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
asprintf.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
bug-vfprintf-nargs.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
bug1.c
bug1.input
bug2.c
bug3.c Fix hardcoded /tmp paths in testing (bug 13888). 2018-06-26 21:48:48 +00:00
bug4.c Fix hardcoded /tmp paths in testing (bug 13888). 2018-06-26 21:48:48 +00:00
bug5.c Fix hardcoded /tmp paths in testing (bug 13888). 2018-06-26 21:48:48 +00:00
bug6.c
bug6.input
bug7.c Avoid insecure usage of tmpnam in tests. 2018-07-18 21:04:12 +00:00
bug8.c
bug9.c
bug10.c
bug11.c
bug12.c
bug13.c
bug14.c
bug16.c stdio-common: Use array_length and array_end macros 2017-11-02 12:45:20 +01:00
bug17.c
bug18.c
bug18a.c
bug19.c
bug19a.c
bug20.c
bug21.c Split DIAG_* macros to new header libc-diag.h. 2017-02-25 09:59:46 -05:00
bug22.c Disable -Wformat-overflow= warnings for some printf tests. 2018-11-01 17:13:55 +00:00
bug23-2.c CVE-2012-3406: Stack overflow in vfprintf [BZ #16617] 2014-12-15 10:09:33 +01:00
bug23-3.c CVE-2012-3406: Stack overflow in vfprintf [BZ #16617] 2014-12-15 10:09:33 +01:00
bug23-4.c CVE-2012-3406: Stack overflow in vfprintf [BZ #16617] 2014-12-15 10:09:33 +01:00
bug23.c
bug24.c
bug25.c Another round of inclusion fixes for _ISOMAC testsuite. 2017-03-22 08:44:32 -04:00
bug26.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
ctermid.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
cuserid.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
dprintf.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
errlist.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
errnobug.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
flockfile.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fprintf.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fscanf.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
ftrylockfile.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
funlockfile.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fxprintf.c error, warn, warnx: Use __fxprintf for wide printing [BZ #23519] 2018-08-14 17:54:49 +02:00
gentempfd.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
getline.c Mechanically remove _IO_ name aliases for types and constants. 2018-02-21 14:11:05 -05:00
getw.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
iovfscanf.c Add __vfscanf_internal and __vfwscanf_internal with flags arguments. 2018-12-05 18:15:42 -02:00
iovfwscanf.c Add __vfscanf_internal and __vfwscanf_internal with flags arguments. 2018-12-05 18:15:42 -02:00
isoc99_fscanf.c Add __vfscanf_internal and __vfwscanf_internal with flags arguments. 2018-12-05 18:15:42 -02:00
isoc99_scanf.c Add __vfscanf_internal and __vfwscanf_internal with flags arguments. 2018-12-05 18:15:42 -02:00
isoc99_sscanf.c Add __vfscanf_internal and __vfwscanf_internal with flags arguments. 2018-12-05 18:15:42 -02:00
isoc99_vfscanf.c Add __vfscanf_internal and __vfwscanf_internal with flags arguments. 2018-12-05 18:15:42 -02:00
isoc99_vscanf.c Add __vfscanf_internal and __vfwscanf_internal with flags arguments. 2018-12-05 18:15:42 -02:00
isoc99_vsscanf.c Add __vfscanf_internal and __vfwscanf_internal with flags arguments. 2018-12-05 18:15:42 -02:00
itoa-digits.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
itoa-udigits.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
itowa-digits.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
perror.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
printf-parse.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
printf-parsemb.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
printf-parsewc.c
printf-prs.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
printf.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
printf.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
printf_fp.c Mechanically remove _IO_ name aliases for types and constants. 2018-02-21 14:11:05 -05:00
printf_fphex.c Mechanically remove _IO_ name aliases for types and constants. 2018-02-21 14:11:05 -05:00
printf_size.c Mechanically remove _IO_ name aliases for types and constants. 2018-02-21 14:11:05 -05:00
psiginfo-data.h
psiginfo-define.h
psiginfo.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
psignal.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
putw.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
reg-modifier.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
reg-printf.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
reg-type.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
remove.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
rename.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
renameat.c Add renameat2 function [BZ #17662] 2018-07-05 19:00:10 +02:00
renameat2.c Add renameat2 function [BZ #17662] 2018-07-05 19:00:10 +02:00
scanf.c Add __vfscanf_internal and __vfwscanf_internal with flags arguments. 2018-12-05 18:15:42 -02:00
scanf1.c
scanf2.c
scanf3.c
scanf4.c Split DIAG_* macros to new header libc-diag.h. 2017-02-25 09:59:46 -05:00
scanf5.c
scanf7.c Split DIAG_* macros to new header libc-diag.h. 2017-02-25 09:59:46 -05:00
scanf8.c
scanf9.c
scanf10.c
scanf11.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
scanf12.c
scanf12.input
scanf13.c
scanf14.c Split DIAG_* macros to new header libc-diag.h. 2017-02-25 09:59:46 -05:00
scanf15.c Don't include <bits/stdio-lock.h> from installed <libio.h>. 2015-09-03 20:24:54 +00:00
scanf16.c
scanf17.c Don't include <bits/stdio-lock.h> from installed <libio.h>. 2015-09-03 20:24:54 +00:00
siglist.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
snprintf.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
sprintf.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
sscanf.c Add __vfscanf_internal and __vfwscanf_internal with flags arguments. 2018-12-05 18:15:42 -02:00
stdio_ext.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
stdio_lim.h.in Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tempnam.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tempname.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
temptest.c
test-fseek.c Fix hardcoded /tmp paths in testing (bug 13888). 2018-06-26 21:48:48 +00:00
test-fwrite.c Modify several tests to use test-skeleton.c 2015-08-06 02:59:04 -04:00
test-popen.c Fix hardcoded /tmp paths in testing (bug 13888). 2018-06-26 21:48:48 +00:00
test-vfprintf.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
test_rdwr.c Fix hardcoded /tmp paths in testing (bug 13888). 2018-06-26 21:48:48 +00:00
tfformat.c
tiformat.c
tllformat.c
tmpfile.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tmpfile64.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tmpnam.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tmpnam_r.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-cookie.c Modify several tests to use test-skeleton.c 2014-11-05 15:24:08 +05:30
tst-fdopen.c Avoid insecure usage of tmpnam in tests. 2018-07-18 21:04:12 +00:00
tst-ferror.c Modify several tests to use test-skeleton.c 2015-08-06 02:59:04 -04:00
tst-ferror.input
tst-fgets.c Prefer https for Sourceware links 2017-11-16 11:49:26 +05:30
tst-fileno.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-fmemopen.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-fmemopen2.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-fmemopen3.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-fmemopen4.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-fphex-wide.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-fphex.c stdio-common: Use array_length and array_end macros 2017-11-02 12:45:20 +01:00
tst-fseek.c Don't reduce test timeout to less than default 2018-10-17 09:34:13 +02:00
tst-fwrite.c Prefer https for Sourceware links 2017-11-16 11:49:26 +05:30
tst-gets.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-gets.input
tst-grouping.c
tst-long-dbl-fphex.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-obprintf.c Modify several tests to use test-skeleton.c 2014-11-05 15:24:08 +05:30
tst-perror.c Modify several tests to use test-skeleton.c 2014-11-05 15:24:08 +05:30
tst-popen.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-popen2.c
tst-printf-bz18872.sh Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-printf-round.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-printf.c Disable -Wformat-overflow= warnings for some printf tests. 2018-11-01 17:13:55 +00:00
tst-printf.sh stdio-common/tst-printf.c: Remove part under a non-free license [BZ #23363] 2018-07-03 18:29:16 +02:00
tst-printfsz-islongdouble.c ldbl-128ibm-compat: Add printf_size 2018-07-02 10:51:01 -03:00
tst-printfsz-islongdouble.sh ldbl-128ibm-compat: Add printf_size 2018-07-02 10:51:01 -03:00
tst-printfsz.c Split DIAG_* macros to new header libc-diag.h. 2017-02-25 09:59:46 -05:00
tst-put-error.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-renameat2.c Add renameat2 function [BZ #17662] 2018-07-05 19:00:10 +02:00
tst-rndseek.c Don't reduce test timeout to less than default 2018-10-17 09:34:13 +02:00
tst-scanf-round.c Fix scanf rounding of negative floating-point numbers (bug 23280). 2018-06-19 11:52:18 +00:00
tst-setvbuf1.c
tst-setvbuf1.expect
tst-sprintf.c Split DIAG_* macros to new header libc-diag.h. 2017-02-25 09:59:46 -05:00
tst-sprintf2.c Modify several tests to use test-skeleton.c 2014-11-05 15:24:08 +05:30
tst-sprintf3.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-sscanf.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-swprintf.c stdio-common: Use array_length and array_end macros 2017-11-02 12:45:20 +01:00
tst-swscanf.c
tst-tmpnam.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-unbputc.c Modify several tests to use test-skeleton.c 2014-11-05 15:24:08 +05:30
tst-unbputc.sh Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-ungetc.c Avoid insecure usage of tmpnam in tests. 2018-07-18 21:04:12 +00:00
tst-unlockedio.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-vfprintf-mbs-prec.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-vfprintf-user-type.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-vfprintf-width-prec.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-wc-printf.c Modify several tests to use test-skeleton.c 2014-11-05 15:24:08 +05:30
tstdiomisc.c stdio-common: Use array_length and array_end macros 2017-11-02 12:45:20 +01:00
tstgetln.c Remove some unnecessary redefinitions of std symbols. 2018-02-05 19:58:01 -05:00
tstgetln.input
tstscanf.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tstscanf.input
vfprintf.c Remove miscellaneous debris from libio. 2018-02-21 14:39:54 -05:00
vfscanf-internal.c Add __vfscanf_internal and __vfwscanf_internal with flags arguments. 2018-12-05 18:15:42 -02:00
vfscanf.c Add __vfscanf_internal and __vfwscanf_internal with flags arguments. 2018-12-05 18:15:42 -02:00
vfwprintf.c
vfwscanf-internal.c Add __vfscanf_internal and __vfwscanf_internal with flags arguments. 2018-12-05 18:15:42 -02:00
vfwscanf.c Add __vfscanf_internal and __vfwscanf_internal with flags arguments. 2018-12-05 18:15:42 -02:00
vprintf.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xbug.c Convert 703 function definitions to prototype style. 2015-10-16 20:21:49 +00:00