blob: b485304c188fd20941022e92108d480277680868 [file] [log] [blame]
// https://issues.dlang.org/show_bug.cgi?id=21177
/*
DISABLED: win
TEST_OUTPUT:
---
compilable/test21177.d(103): Deprecation: more format specifiers than 0 arguments
compilable/test21177.d(111): Deprecation: more format specifiers than 0 arguments
compilable/test21177.d(150): Deprecation: more format specifiers than 0 arguments
compilable/test21177.d(151): Deprecation: more format specifiers than 0 arguments
compilable/test21177.d(152): Deprecation: more format specifiers than 0 arguments
compilable/test21177.d(153): Deprecation: more format specifiers than 0 arguments
compilable/test21177.d(154): Deprecation: more format specifiers than 0 arguments
compilable/test21177.d(155): Deprecation: more format specifiers than 0 arguments
compilable/test21177.d(202): Deprecation: format specifier `"%m"` is invalid
compilable/test21177.d(203): Deprecation: argument `d` for format specification `"%mc"` must be `char**`, not `int`
compilable/test21177.d(204): Deprecation: argument `c` for format specification `"%ms"` must be `char**`, not `char*`
compilable/test21177.d(205): Deprecation: format specifier `"%ml"` is invalid
compilable/test21177.d(206): Deprecation: argument `d` for format specification `"%mlc"` must be `wchar_t**`, not `int`
compilable/test21177.d(207): Deprecation: argument `c` for format specification `"%mls"` must be `wchar_t**`, not `char*`
---
*/
import core.stdc.stdio;
import core.stdc.string;
import core.stdc.stdlib;
void main()
{
version (CRuntime_Glibc)
{
#line 100
printf("%m this is a string in errno");
printf("%s %m", "str".ptr, 2);
printf("%m %a", 2.);
printf("%m %m %s");
printf("%m");
printf("%*m");
pragma(msg, "compilable/test21177.d(111): Deprecation: more format specifiers than 0 arguments");
}
else
{
pragma(msg, "compilable/test21177.d(103): Deprecation: more format specifiers than 0 arguments");
printf("%m");
}
{
char* a, b;
sscanf("salut poilu", "%ms %m[^\n]", &a, &b);
assert(!strcmp(a, b));
free(a);
free(b);
char* t; wchar_t* p;
sscanf("Tomate Patate", "%mc %mlc", &t, &p);
free(t);
free(p);
#line 150
sscanf("150", "%m");
sscanf("151", "%ms");
sscanf("152", "%mc");
sscanf("153", "%ml");
sscanf("154", "%mls");
sscanf("155", "%mlc");
#line 200
char* c;
int d;
sscanf("204", "%m", c);
sscanf("205", "%mc", d);
sscanf("206", "%ms", c);
sscanf("207", "%ml", d);
sscanf("208", "%mlc", d);
sscanf("209", "%mls", c);
}
}