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

Reply via email to