1 /* Test for scanf formats. %a and %m extensions. */
2 /* { dg-do compile } */
3 /* { dg-options "-std=gnu89 -Wformat" } */
8 foo (char **sp
, wchar_t **lsp
, int *ip
, float *fp
, void **pp
, double *dp
)
10 /* %a formats for allocation, only recognized in C90 mode, are a
11 GNU extension. Followed by other characters, %a is not treated
17 scanf ("%la", lsp
); /* { dg-warning "but argument 2 has type" } */
18 scanf ("%las", lsp
); /* { dg-warning "but argument 2 has type" } */
19 scanf ("%a[bcd]", sp
);
20 scanf ("%la[bcd]", dp
);
23 scanf ("%*las"); /* { dg-warning "assignment suppression and length modifier" } */
25 scanf ("%*la[bcd]"); /* { dg-warning "assignment suppression and length modifier" } */
29 scanf ("%25a[bcd]", sp
);
30 scanf ("%48la[bcd]", dp
);
33 scanf ("%*9las"); /* { dg-warning "assignment suppression and length modifier" } */
35 scanf ("%*48la[bcd]"); /* { dg-warning "assignment suppression and length modifier" } */
37 /* m assignment-allocation modifier, recognized in both C90
38 and C99 modes, is a POSIX and ISO/IEC WDTR 24731-2 extension. */
42 scanf ("%m[bcd]", sp
);
43 scanf ("%ml[bcd]", lsp
);
49 scanf ("%*mls"); /* { dg-warning "assignment suppression and length modifier" } */
51 scanf ("%*ml[bcd]"); /* { dg-warning "assignment suppression and length modifier" } */
53 scanf ("%*mlc"); /* { dg-warning "assignment suppression and length modifier" } */
58 scanf ("%25m[bcd]", sp
);
59 scanf ("%41ml[bcd]", lsp
);
61 scanf ("%27mlc", lsp
);
65 scanf ("%*9mls"); /* { dg-warning "assignment suppression and length modifier" } */
67 scanf ("%*41ml[bcd]"); /* { dg-warning "assignment suppression and length modifier" } */
69 scanf ("%*27mlc"); /* { dg-warning "assignment suppression and length modifier" } */
72 scanf ("%md", ip
); /* { dg-warning "flag used with" } */
73 scanf ("%mi", ip
); /* { dg-warning "flag used with" } */
74 scanf ("%mo", ip
); /* { dg-warning "flag used with" } */
75 scanf ("%mu", ip
); /* { dg-warning "flag used with" } */
76 scanf ("%mx", ip
); /* { dg-warning "flag used with" } */
77 scanf ("%me", fp
); /* { dg-warning "flag used with" } */
78 scanf ("%mf", fp
); /* { dg-warning "flag used with" } */
79 scanf ("%mg", fp
); /* { dg-warning "flag used with" } */
80 scanf ("%mp", pp
); /* { dg-warning "flag used with" } */
82 scanf ("%mas", sp
); /* { dg-warning "flag together" } */
83 scanf ("%maS", lsp
); /* { dg-warning "flag together" } */
84 scanf ("%ma[bcd]", sp
); /* { dg-warning "flag together" } */