From b87eb3f8feb826ac48463f598fc10476055bee5a Mon Sep 17 00:00:00 2001 From: Zack Weinberg Date: Wed, 7 Mar 2018 14:31:59 -0500 Subject: Use SCANF_ISOC99_A instead of _IO_FLAGS2_SCANF_STD. Change the callers of __vfscanf_internal and __vfwscanf_internal that want C99-compliant behavior to communicate this via the new flags argument, rather than setting bits on the FILE object. This also means these functions do not need to do their own locking. Tested for powerpc and powerpc64le. --- stdio-common/isoc99_fscanf.c | 7 +------ stdio-common/isoc99_scanf.c | 12 +----------- stdio-common/isoc99_sscanf.c | 3 +-- stdio-common/isoc99_vfscanf.c | 9 +-------- stdio-common/isoc99_vscanf.c | 9 +-------- stdio-common/isoc99_vsscanf.c | 3 +-- stdio-common/vfscanf-internal.c | 2 -- 7 files changed, 6 insertions(+), 39 deletions(-) (limited to 'stdio-common') diff --git a/stdio-common/isoc99_fscanf.c b/stdio-common/isoc99_fscanf.c index 4210d11f2b..d7b5993f3e 100644 --- a/stdio-common/isoc99_fscanf.c +++ b/stdio-common/isoc99_fscanf.c @@ -20,20 +20,15 @@ #include /* Read formatted input from STREAM according to the format string FORMAT. */ -/* VARARGS2 */ int __isoc99_fscanf (FILE *stream, const char *format, ...) { va_list arg; int done; - _IO_acquire_lock_clear_flags2 (stream); - stream->_flags2 |= _IO_FLAGS2_SCANF_STD; - va_start (arg, format); - done = __vfscanf_internal (stream, format, arg, 0); + done = __vfscanf_internal (stream, format, arg, SCANF_ISOC99_A); va_end (arg); - _IO_release_lock (stream); return done; } diff --git a/stdio-common/isoc99_scanf.c b/stdio-common/isoc99_scanf.c index 64c873eed9..3998322ea1 100644 --- a/stdio-common/isoc99_scanf.c +++ b/stdio-common/isoc99_scanf.c @@ -19,26 +19,16 @@ #include #include - /* Read formatted input from stdin according to the format string FORMAT. */ -/* VARARGS1 */ int __isoc99_scanf (const char *format, ...) { va_list arg; int done; -#ifdef _IO_MTSAFE_IO - _IO_acquire_lock_clear_flags2 (stdin); -#endif - stdin->_flags2 |= _IO_FLAGS2_SCANF_STD; - va_start (arg, format); - done = __vfscanf_internal (stdin, format, arg, 0); + done = __vfscanf_internal (stdin, format, arg, SCANF_ISOC99_A); va_end (arg); -#ifdef _IO_MTSAFE_IO - _IO_release_lock (stdin); -#endif return done; } diff --git a/stdio-common/isoc99_sscanf.c b/stdio-common/isoc99_sscanf.c index 2c89a03fe9..c9e5103b81 100644 --- a/stdio-common/isoc99_sscanf.c +++ b/stdio-common/isoc99_sscanf.c @@ -26,10 +26,9 @@ __isoc99_sscanf (const char *s, const char *format, ...) int done; _IO_strfile sf; FILE *f = _IO_strfile_read (&sf, s); - f->_flags2 |= _IO_FLAGS2_SCANF_STD; va_start (arg, format); - done = __vfscanf_internal (f, format, arg, 0); + done = __vfscanf_internal (f, format, arg, SCANF_ISOC99_A); va_end (arg); return done; diff --git a/stdio-common/isoc99_vfscanf.c b/stdio-common/isoc99_vfscanf.c index c96ca831ae..3c59c60b3e 100644 --- a/stdio-common/isoc99_vfscanf.c +++ b/stdio-common/isoc99_vfscanf.c @@ -19,16 +19,9 @@ #include /* Read formatted input from STREAM according to the format string FORMAT. */ -/* VARARGS2 */ int __isoc99_vfscanf (FILE *stream, const char *format, va_list args) { - int done; - - _IO_acquire_lock_clear_flags2 (stream); - stream->_flags2 |= _IO_FLAGS2_SCANF_STD; - done = __vfscanf_internal (stream, format, args, 0); - _IO_release_lock (stream); - return done; + return __vfscanf_internal (stream, format, args, SCANF_ISOC99_A); } libc_hidden_def (__isoc99_vfscanf) diff --git a/stdio-common/isoc99_vscanf.c b/stdio-common/isoc99_vscanf.c index 72ae72ddee..fc5d609ae7 100644 --- a/stdio-common/isoc99_vscanf.c +++ b/stdio-common/isoc99_vscanf.c @@ -19,15 +19,8 @@ #include /* Read formatted input from STDIN according to the format string FORMAT. */ -/* VARARGS2 */ int __isoc99_vscanf (const char *format, va_list args) { - int done; - - _IO_acquire_lock_clear_flags2 (stdin); - stdin->_flags2 |= _IO_FLAGS2_SCANF_STD; - done = __vfscanf_internal (stdin, format, args, 0); - _IO_release_lock (stdin); - return done; + return __vfscanf_internal (stdin, format, args, SCANF_ISOC99_A); } diff --git a/stdio-common/isoc99_vsscanf.c b/stdio-common/isoc99_vsscanf.c index 02bc0f50e6..dfc394bb51 100644 --- a/stdio-common/isoc99_vsscanf.c +++ b/stdio-common/isoc99_vsscanf.c @@ -31,7 +31,6 @@ __isoc99_vsscanf (const char *string, const char *format, va_list args) { _IO_strfile sf; FILE *f = _IO_strfile_read (&sf, string); - f->_flags2 |= _IO_FLAGS2_SCANF_STD; - return __vfscanf_internal (f, format, args, 0); + return __vfscanf_internal (f, format, args, SCANF_ISOC99_A); } libc_hidden_def (__isoc99_vsscanf) diff --git a/stdio-common/vfscanf-internal.c b/stdio-common/vfscanf-internal.c index 6bd0138f66..df79d91eda 100644 --- a/stdio-common/vfscanf-internal.c +++ b/stdio-common/vfscanf-internal.c @@ -335,8 +335,6 @@ __vfscanf_internal (FILE *s, const char *format, va_list argptr, /* Temporarily honor the environmental mode bits. */ if (__ldbl_is_dbl) mode_flags |= SCANF_LDBL_IS_DBL; - if (s->_flags2 & _IO_FLAGS2_SCANF_STD) - mode_flags |= SCANF_ISOC99_A; #ifdef __va_copy __va_copy (arg, argptr); -- cgit v1.2.3