1/* Test for scanf formats. Formats using extensions to the standard 2 should be rejected in strict pedantic mode. 3*/ 4/* Origin: Joseph Myers <jsm28@cam.ac.uk> */ 5/* { dg-do compile } */ 6/* { dg-options "-std=iso9899:1999 -pedantic -Wformat" } */ 7 8#include "format.h" 9 10void 11foo (int *ip, long long int *llp, wchar_t *ls) 12{ 13 /* The length modifiers q and L as applied to integer formats are 14 extensions. 15 */ 16 scanf ("%qd", llp); /* { dg-warning "C" "%q length" } */ 17 scanf ("%Ld", llp); /* { dg-warning "C" "%L length" } */ 18 /* The conversion specifiers C and S are X/Open extensions. */ 19 scanf ("%C", ls); /* { dg-warning "C" "scanf %C" } */ 20 scanf ("%S", ls); /* { dg-warning "C" "scanf %S" } */ 21 /* The use of operand number $ formats is an X/Open extension. */ 22 scanf ("%1$d", ip); /* { dg-warning "C" "scanf $ format" } */ 23 /* glibc also supports flags ' and I on scanf formats as an extension. */ 24 scanf ("%'d", ip); /* { dg-warning "C" "scanf ' flag" } */ 25 scanf ("%Id", ip); /* { dg-warning "C" "scanf I flag" } */ 26} 27