On Wed, 2 Mar 2005 19:24:33 +0100, Andreas Mohr
<[EMAIL PROTECTED]> wrote:
>
> Do we even have to do anything on "F"?
> "far" is long gone, right? As such simply silently ignore "F", right?
>
Right now in current CVS, our *printf will handle any strings. For
any type numbers (except %n), they are forwarded to libc's printf by
first checking the format string for valid specifiers, and rebuilding
it for libc.
>From line 585 in dlls/msvcrt/wcs.c:
else if( pf_is_valid_format( flags.Format ) )
{
char fmt[20], number[40], *x = number;
if( flags.FieldLength >= sizeof number )
x = HeapAlloc( GetProcessHeap(), 0, flags.FieldLength+1 );
pf_rebuild_format_string( fmt, &flags );
if( pf_is_double_format( flags.Format ) )
sprintf( number, fmt, va_arg(valist, double) );
Both pf_is_valid_format and pf_is_double_format will accept 'F'
(tolowerred...) modifiers, and libc will parse it. Based on windows
behavior, it probably should be ignored?
Jesse