mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-29 11:41:21 +03:00
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.
This commit is contained in:
committed by
Gabriel F. T. Gomes
parent
349718d4d7
commit
b87eb3f8fe
@ -20,20 +20,15 @@
|
||||
#include <stdio.h>
|
||||
|
||||
/* 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;
|
||||
}
|
||||
|
@ -19,26 +19,16 @@
|
||||
#include <stdio.h>
|
||||
#include <libioP.h>
|
||||
|
||||
|
||||
/* 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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -19,16 +19,9 @@
|
||||
#include <stdio.h>
|
||||
|
||||
/* 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)
|
||||
|
@ -19,15 +19,8 @@
|
||||
#include <stdio.h>
|
||||
|
||||
/* 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);
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -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);
|
||||
|
Reference in New Issue
Block a user