On Wed, 2 Mar 2005 19:24:33 +0100, Andreas Mohr andi@rhlx01.fht-esslingen.de 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