FreeRDP
Loading...
Searching...
No Matches
TestFilePatternMatch.c
1
2
#include <stdio.h>
3
#include <winpr/crt.h>
4
#include <winpr/file.h>
5
#include <winpr/windows.h>
6
7
int
TestFilePatternMatch(
int
argc,
char
* argv[])
8
{
9
/* '*' expression */
10
WINPR_UNUSED(argc);
11
WINPR_UNUSED(argv);
12
if
(!FilePatternMatchA(
"document.txt"
,
"*"
))
13
{
14
printf(
"FilePatternMatchA error: FileName: %s Pattern: %s\n"
,
"document.txt"
,
"*"
);
15
return
-1;
16
}
17
18
/* '*X' expression */
19
20
if
(!FilePatternMatchA(
"document.txt"
,
"*.txt"
))
21
{
22
printf(
"FilePatternMatchA error: FileName: %s Pattern: %s\n"
,
"document.txt"
,
"*.txt"
);
23
return
-1;
24
}
25
26
if
(FilePatternMatchA(
"document.docx"
,
"*.txt"
))
27
{
28
printf(
"FilePatternMatchA error: FileName: %s Pattern: %s\n"
,
"document.docx"
,
"*.txt"
);
29
return
-1;
30
}
31
32
if
(FilePatternMatchA(
"document.txt.bak"
,
"*.txt"
))
33
{
34
printf(
"FilePatternMatchA error: FileName: %s Pattern: %s\n"
,
"document.txt.bak"
,
"*.txt"
);
35
return
-1;
36
}
37
38
if
(FilePatternMatchA(
"bak"
,
"*.txt"
))
39
{
40
printf(
"FilePatternMatchA error: FileName: %s Pattern: %s\n"
,
"bak"
,
"*.txt"
);
41
return
-1;
42
}
43
44
/* 'X*' expression */
45
46
if
(!FilePatternMatchA(
"document.txt"
,
"document.*"
))
47
{
48
printf(
"FilePatternMatchA error: FileName: %s Pattern: %s\n"
,
"document.txt"
,
"document.*"
);
49
return
-1;
50
}
51
52
/* 'X?' expression */
53
54
if
(!FilePatternMatchA(
"document.docx"
,
"document.doc?"
))
55
{
56
printf(
"FilePatternMatchA error: FileName: %s Pattern: %s\n"
,
"document.docx"
,
57
"document.doc?"
);
58
return
-1;
59
}
60
61
if
(FilePatternMatchA(
"document.doc"
,
"document.doc?"
))
62
{
63
printf(
"FilePatternMatchA error: FileName: %s Pattern: %s\n"
,
"document.doc"
,
64
"document.doc?"
);
65
return
-1;
66
}
67
68
/* no wildcards expression */
69
70
if
(!FilePatternMatchA(
"document.txt"
,
"document.txt"
))
71
{
72
printf(
"FilePatternMatchA error: FileName: %s Pattern: %s\n"
,
"document.txt"
,
73
"document.txt"
);
74
return
-1;
75
}
76
77
/* 'X * Y' expression */
78
79
if
(!FilePatternMatchA(
"X123Y.txt"
,
"X*Y.txt"
))
80
{
81
printf(
"FilePatternMatchA error: FileName: %s Pattern: %s\n"
,
"X123Y.txt"
,
"X*Y.txt"
);
82
return
-1;
83
}
84
85
if
(!FilePatternMatchA(
"XY.txt"
,
"X*Y.txt"
))
86
{
87
printf(
"FilePatternMatchA error: FileName: %s Pattern: %s\n"
,
"XY.txt"
,
"X*Y.txt"
);
88
return
-1;
89
}
90
91
if
(FilePatternMatchA(
"XZ.txt"
,
"X*Y.txt"
))
92
{
93
printf(
"FilePatternMatchA error: FileName: %s Pattern: %s\n"
,
"XZ.txt"
,
"X*Y.txt"
);
94
return
-1;
95
}
96
97
if
(FilePatternMatchA(
"X123Z.txt"
,
"X*Y.txt"
))
98
{
99
printf(
"FilePatternMatchA error: FileName: %s Pattern: %s\n"
,
"X123Z.txt"
,
"X*Y.txt"
);
100
return
-1;
101
}
102
103
/* 'X * Y * Z' expression */
104
105
if
(!FilePatternMatchA(
"X123Y456Z.txt"
,
"X*Y*Z.txt"
))
106
{
107
printf(
"FilePatternMatchA error: FileName: %s Pattern: %s\n"
,
"X123Y456Z.txt"
,
"X*Y*Z.txt"
);
108
return
-1;
109
}
110
111
if
(!FilePatternMatchA(
"XYZ.txt"
,
"X*Y*Z.txt"
))
112
{
113
printf(
"FilePatternMatchA error: FileName: %s Pattern: %s\n"
,
"XYZ.txt"
,
"X*Y*Z.txt"
);
114
return
-1;
115
}
116
117
if
(!FilePatternMatchA(
"X123Y456W.txt"
,
"X*Y*Z.txt"
))
118
{
119
printf(
"FilePatternMatchA error: FileName: %s Pattern: %s\n"
,
"X123Y456W.txt"
,
"X*Y*Z.txt"
);
120
return
-1;
121
}
122
123
if
(!FilePatternMatchA(
"XYW.txt"
,
"X*Y*Z.txt"
))
124
{
125
printf(
"FilePatternMatchA error: FileName: %s Pattern: %s\n"
,
"XYW.txt"
,
"X*Y*Z.txt"
);
126
return
-1;
127
}
128
129
/* 'X ? Y' expression */
130
131
if
(!FilePatternMatchA(
"X1Y.txt"
,
"X?Y.txt"
))
132
{
133
printf(
"FilePatternMatchA error: FileName: %s Pattern: %s\n"
,
"X1Y.txt"
,
"X?Y.txt"
);
134
return
-1;
135
}
136
137
if
(FilePatternMatchA(
"XY.txt"
,
"X?Y.txt"
))
138
{
139
printf(
"FilePatternMatchA error: FileName: %s Pattern: %s\n"
,
"XY.txt"
,
"X?Y.txt"
);
140
return
-1;
141
}
142
143
if
(FilePatternMatchA(
"XZ.txt"
,
"X?Y.txt"
))
144
{
145
printf(
"FilePatternMatchA error: FileName: %s Pattern: %s\n"
,
"XZ.txt"
,
"X?Y.txt"
);
146
return
-1;
147
}
148
149
if
(FilePatternMatchA(
"X123Z.txt"
,
"X?Y.txt"
))
150
{
151
printf(
"FilePatternMatchA error: FileName: %s Pattern: %s\n"
,
"X123Z.txt"
,
"X?Y.txt"
);
152
return
-1;
153
}
154
155
/* 'X ? Y ? Z' expression */
156
157
if
(!FilePatternMatchA(
"X123Y456Z.txt"
,
"X?Y?Z.txt"
))
158
{
159
printf(
"FilePatternMatchA error: FileName: %s Pattern: %s\n"
,
"X123Y456Z.txt"
,
"X?Y?Z.txt"
);
160
return
-1;
161
}
162
163
if
(FilePatternMatchA(
"XYZ.txt"
,
"X?Y?Z.txt"
))
164
{
165
printf(
"FilePatternMatchA error: FileName: %s Pattern: %s\n"
,
"XYZ.txt"
,
"X?Y?Z.txt"
);
166
return
-1;
167
}
168
169
if
(!FilePatternMatchA(
"X123Y456W.txt"
,
"X?Y?Z.txt"
))
170
{
171
printf(
"FilePatternMatchA error: FileName: %s Pattern: %s\n"
,
"X123Y456W.txt"
,
"X?Y?Z.txt"
);
172
return
-1;
173
}
174
175
if
(FilePatternMatchA(
"XYW.txt"
,
"X?Y?Z.txt"
))
176
{
177
printf(
"FilePatternMatchA error: FileName: %s Pattern: %s\n"
,
"XYW.txt"
,
"X?Y?Z.txt"
);
178
return
-1;
179
}
180
181
/* '?' must not match past the end of the file name.
182
* The file name "X" is one character; the byte after its terminator
183
* is set to 'Y' so that an out-of-bounds read in the X?Y branch would
184
* wrongly report a match. */
185
{
186
const
char
shortName[] = {
'X'
,
'\0'
,
'Y'
,
'\0'
};
187
188
if
(FilePatternMatchA(shortName,
"X?Y"
))
189
{
190
printf(
"FilePatternMatchA error: FileName: %s Pattern: %s\n"
,
"X"
,
"X?Y"
);
191
return
-1;
192
}
193
}
194
195
return
0;
196
}
winpr
libwinpr
file
test
TestFilePatternMatch.c
Generated by
1.9.8