ReactOS 0.4.15-dev-7788-g1ad9096
FindFiles.c
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS api tests
3 * LICENSE: GPLv2+ - See COPYING in the top level directory
4 * PURPOSE: Tests for the Find*File*A/W APIs.
5 * PROGRAMMER: Hermès BÉLUSCA - MAÏTO
6 */
7
8#include "precomp.h"
9#include <versionhelpers.h>
10
11/*
12 * NOTE: This test supposes the following requirements:
13 * - There is a disk attached to the letter "C:"
14 * - There is a Windows-like system installed in "C:<installation_directory>"
15 * which contains a sub-directory "system32"
16 * - There is no sub-directory called "foobar" in "C:\".
17 *
18 * If one of these requirements is not fulfilled, one or more tests may fail.
19 */
20
21static CHAR OSDirA[MAX_PATH]; // OS directory
23static CHAR baseA[MAX_PATH]; // Current directory
25static CHAR selfnameA[MAX_PATH]; // Path to this executable
27static LPSTR exenameA; // Executable's name
29static INT myARGC;
30static LPSTR* myARGV;
31
32
33/*
34 * Fixes definition of Wine's ok_err
35 */
36#ifdef ok_err
37#undef ok_err
38#endif
39
40#define ok_err(error) \
41 ok_int(GetLastError(), error)
42
43
44/*
45 * Types of tests. Define them as macros so that calling them
46 * into the code reports the actual line where they were called.
47 */
48#define testType1_A(lpFileName, dwInitialError, hExpectedHandleValue, dwExpectedError, bExpectedNullFilename) \
49do { \
50 ZeroMemory(&fd, sizeof(fd)); \
51 SetLastError((dwInitialError)); \
52 h = FindFirstFileA((lpFileName), &fd); \
53 ok(h == (hExpectedHandleValue), "FindFirstFileA returned 0x%p, expected 0x%p\n", h, (hExpectedHandleValue)); \
54 ok_err(dwExpectedError); \
55 if (bExpectedNullFilename) \
56 ok(fd.cFileName[0] == 0, "fd.cFileName != \"\"\n"); \
57 else \
58 ok(fd.cFileName[0] != 0, "fd.cFileName == \"\"\n"); \
59 FindClose(h); \
60} while (0)
61
62#define testType1_W(lpFileName, dwInitialError, hExpectedHandleValue, dwExpectedError, bExpectedNullFilename) \
63do { \
64 ZeroMemory(&fd, sizeof(fd)); \
65 SetLastError((dwInitialError)); \
66 h = FindFirstFileW((lpFileName), &fd); \
67 ok(h == (hExpectedHandleValue), "FindFirstFileW returned 0x%p, expected 0x%p\n", h, (hExpectedHandleValue)); \
68 ok_err(dwExpectedError); \
69 if (bExpectedNullFilename) \
70 ok(fd.cFileName[0] == 0, "fd.cFileName != \"\"\n"); \
71 else \
72 ok(fd.cFileName[0] != 0, "fd.cFileName == \"\"\n"); \
73 FindClose(h); \
74} while (0)
75
76#define testType2_A(lpFileName, dwInitialError, hUnexpectedHandleValue, dwExpectedError) \
77do { \
78 ZeroMemory(&fd, sizeof(fd)); \
79 SetLastError((dwInitialError)); \
80 h = FindFirstFileA((lpFileName), &fd); \
81 ok(h != (hUnexpectedHandleValue), "FindFirstFileA returned 0x%p\n", h); \
82 ok_err(dwExpectedError); \
83 ok(fd.cFileName[0] != 0, "fd.cFileName == \"\"\n"); \
84 FindClose(h); \
85} while (0)
86
87#define testType2_W(lpFileName, dwInitialError, hUnexpectedHandleValue, dwExpectedError) \
88do { \
89 ZeroMemory(&fd, sizeof(fd)); \
90 SetLastError((dwInitialError)); \
91 h = FindFirstFileW((lpFileName), &fd); \
92 ok(h != (hUnexpectedHandleValue), "FindFirstFileW returned 0x%p\n", h); \
93 ok_err(dwExpectedError); \
94 ok(fd.cFileName[0] != 0, "fd.cFileName == \"\"\n"); \
95 FindClose(h); \
96} while (0)
97
98#define testType3_A(lpFileName, fInfoLevelId, fSearchOp, lpSearchFilter, dwAdditionalFlags, dwInitialError, hUnexpectedHandleValue, dwExpectedError) \
99do { \
100 ZeroMemory(&fd, sizeof(fd)); \
101 SetLastError((dwInitialError)); \
102 h = FindFirstFileExA((lpFileName), (fInfoLevelId), &fd, (fSearchOp), (lpSearchFilter), (dwAdditionalFlags)); \
103 ok(h != (hUnexpectedHandleValue), "FindFirstFileExA returned 0x%p\n", h); \
104 ok_err(dwExpectedError); \
105 ok(fd.cFileName[0] != 0, "fd.cFileName == \"\"\n"); \
106 FindClose(h); \
107} while (0)
108
109#define testType3_W(lpFileName, fInfoLevelId, fSearchOp, lpSearchFilter, dwAdditionalFlags, dwInitialError, hUnexpectedHandleValue, dwExpectedError) \
110do { \
111 ZeroMemory(&fd, sizeof(fd)); \
112 SetLastError((dwInitialError)); \
113 h = FindFirstFileExW((lpFileName), (fInfoLevelId), &fd, (fSearchOp), (lpSearchFilter), (dwAdditionalFlags)); \
114 ok(h != (hUnexpectedHandleValue), "FindFirstFileExW returned 0x%p\n", h); \
115 ok_err(dwExpectedError); \
116 ok(fd.cFileName[0] != 0, "fd.cFileName == \"\"\n"); \
117 FindClose(h); \
118} while (0)
119
120
121static void Test_FindFirstFileA(void)
122{
126 HANDLE h;
127
128 /* Save the current directory */
130
131/*** Tests for the root directory - root directory ***/
132 /* Modify the current directory */
133 SetCurrentDirectoryA("C:\\");
134
136
139 testType2_A("C:\\*", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef);
140
143 testType2_A("\\*", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef);
144
145 /* Restore the old current directory */
147/*****************************************************/
148
149/*** Tests for the root directory - long directory ***/
150 /* Modify the current directory */
151 SetCurrentDirectoryA(OSDirA); /* We expect here that OSDir is of the form: C:\OSDir */
152
153 testType2_A("C:", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef);
154
157 testType2_A("C:\\*", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef);
158
161 testType2_A("\\*", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef);
162
163 /* Restore the old current directory */
165/*****************************************************/
166
167/*** Relative paths ***/
168 /*
169 * NOTE: This test does not give the same results if you launch the app
170 * from a root drive or from a long-form directory (of the form C:\dir).
171 */
172 // testType2_A("..", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef);
173 // testType1_A("..", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE);
174/**********************/
175
176/*** Relative paths - root directory ***/
177 /* Modify the current directory */
178 SetCurrentDirectoryA("C:\\");
179
183 testType2_A(".\\*", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef);
184
188 testType2_A("..\\*", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef);
189
190 /* Restore the old current directory */
192/***************************************/
193
194/*** Relative paths - long directory ***/
195 /* Modify the current directory */
196 SetCurrentDirectoryA(OSDirA); /* We expect here that OSDir is of the form: C:\OSDir */
197
198 testType2_A(".", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef);
199
202 testType2_A(".\\*", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef);
203
205
208 testType2_A("..\\*", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef);
209
210 /* Restore the old current directory */
212/****************************************/
213
214/*** Unexisting path ***/
215 testType1_A("C:\\foobar", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE);
216 testType1_A("C:\\foobar\\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE);
217 testType1_A("C:\\foobar\\\\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE);
218 testType1_A("C:\\foobar\\*", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE);
219 testType1_A("C:\\foobar\\system32\\..\\*", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE);
220
221 /* Possibly a DOS device */
222 testType1_A("C:\\foobar\\nul", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE);
223 testType1_A("C:\\foobar\\nul\\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE);
224 testType1_A("C:\\foobar\\nul\\\\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE);
225 testType1_A("C:\\foobar\\nul\\*", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE);
226
227 testType1_A("C:\\foobar\\toto", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE);
228 testType1_A("C:\\foobar\\toto\\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE);
229 testType1_A("C:\\foobar\\toto\\\\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE);
230 testType1_A("C:\\foobar\\toto\\*", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE);
231
232 strcpy(Buffer, "C:\\foobar\\");
235
236 strcpy(Buffer, "C:\\foobar\\.\\");
239/***********************/
240
241/*** Existing path ***/
243 testType2_A(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef);
244
246 strcat(Buffer, "\\");
248
250 strcat(Buffer, "\\\\");
252
254 strcat(Buffer, "\\*");
255 testType2_A(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef);
256
258 strcat(Buffer, "\\.\\*");
259 testType2_A(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef);
260
262 strcat(Buffer, "\\system32\\..\\*");
263 testType2_A(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef);
264
265 /* Possibly a DOS device */
267 strcat(Buffer, "\\nul");
268 testType1_A(Buffer, 0xdeadbeef, (HANDLE)0x00000001, 0xdeadbeef, FALSE);
269
271 strcat(Buffer, "\\nul\\");
273
275 strcat(Buffer, "\\nul\\\\");
277
279 strcat(Buffer, "\\nul\\*");
281
283 strcat(Buffer, "\\toto");
285
287 strcat(Buffer, "\\toto\\");
289
291 strcat(Buffer, "\\toto\\\\");
293
295 strcat(Buffer, "\\toto\\*");
297
298 // strcpy(Buffer, baseA);
299 // strcat(Buffer, "\\");
300 // strcat(Buffer, exenameA);
301 // testType2_A(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef);
302
303 // strcpy(Buffer, baseA);
304 // strcat(Buffer, "\\.\\");
305 // strcat(Buffer, exenameA);
306 // testType2_A(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef);
307/*********************/
308
309 return;
310}
311
312static void Test_FindFirstFileW(void)
313{
317 HANDLE h;
318
319 /* Save the current directory */
321
322/*** Tests for the root directory - root directory ***/
323 /* Modify the current directory */
324 SetCurrentDirectoryW(L"C:\\");
325
327
330 testType2_W(L"C:\\*", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef);
331
334 testType2_W(L"\\*", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef);
335
336 /* Restore the old current directory */
338/*****************************************************/
339
340/*** Tests for the root directory - long directory ***/
341 /* Modify the current directory */
342 SetCurrentDirectoryW(OSDirW); /* We expect here that OSDir is of the form: C:\OSDir */
343
344 testType2_W(L"C:", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef);
345
348 testType2_W(L"C:\\*", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef);
349
352 testType2_W(L"\\*", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef);
353
354 /* Restore the old current directory */
356/*****************************************************/
357
358/*** Relative paths ***/
359 /*
360 * NOTE: This test does not give the same results if you launch the app
361 * from a root drive or from a long-form directory (of the form C:\dir).
362 */
363 // testType2_W(L"..", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef);
364 // testType1_W(L"..", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE);
365/**********************/
366
367/*** Relative paths - root directory ***/
368 /* Modify the current directory */
369 SetCurrentDirectoryW(L"C:\\");
370
374 testType2_W(L".\\*", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef);
375
379 testType2_W(L"..\\*", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef);
380
381 /* Restore the old current directory */
383/***************************************/
384
385/*** Relative paths - long directory ***/
386 /* Modify the current directory */
387 SetCurrentDirectoryW(OSDirW); /* We expect here that OSDir is of the form: C:\OSDir */
388
389 testType2_W(L".", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef);
390
393 testType2_W(L".\\*", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef);
394
396
399 testType2_W(L"..\\*", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef);
400
401 /* Restore the old current directory */
403/****************************************/
404
405/*** Unexisting path ***/
406 testType1_W(L"C:\\foobar", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE);
407 testType1_W(L"C:\\foobar\\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE);
408 testType1_W(L"C:\\foobar\\\\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE);
409 testType1_W(L"C:\\foobar\\*", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE);
410 testType1_W(L"C:\\foobar\\system32\\..\\*", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE);
411
412 /* Possibly a DOS device */
413 testType1_W(L"C:\\foobar\\nul", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE);
414 testType1_W(L"C:\\foobar\\nul\\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE);
415 testType1_W(L"C:\\foobar\\nul\\\\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE);
416 testType1_W(L"C:\\foobar\\nul\\*", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE);
417
418 testType1_W(L"C:\\foobar\\toto", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE);
419 testType1_W(L"C:\\foobar\\toto\\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE);
420 testType1_W(L"C:\\foobar\\toto\\\\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE);
421 testType1_W(L"C:\\foobar\\toto\\*", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE);
422
423 wcscpy(Buffer, L"C:\\foobar\\");
426
427 wcscpy(Buffer, L"C:\\foobar\\.\\");
430/***********************/
431
432/*** Existing path ***/
434 testType2_W(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef);
435
437 wcscat(Buffer, L"\\");
439
441 wcscat(Buffer, L"\\\\");
443
445 wcscat(Buffer, L"\\*");
446 testType2_W(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef);
447
449 wcscat(Buffer, L"\\.\\*");
450 testType2_W(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef);
451
453 wcscat(Buffer, L"\\system32\\..\\*");
454 testType2_W(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef);
455
456 /* Possibly a DOS device */
458 wcscat(Buffer, L"\\nul");
459 testType1_W(Buffer, 0xdeadbeef, (HANDLE)0x00000001, 0xdeadbeef, FALSE);
460
462 wcscat(Buffer, L"\\nul\\");
464
466 wcscat(Buffer, L"\\nul\\\\");
468
470 wcscat(Buffer, L"\\nul\\*");
472
474 wcscat(Buffer, L"\\toto");
476
478 wcscat(Buffer, L"\\toto\\");
480
482 wcscat(Buffer, L"\\toto\\\\");
484
486 wcscat(Buffer, L"\\toto\\*");
488
489 // wcscpy(Buffer, baseW);
490 // wcscat(Buffer, L"\\");
491 // wcscat(Buffer, exenameW);
492 // testType2_W(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef);
493
494 // wcscpy(Buffer, baseW);
495 // wcscat(Buffer, L"\\.\\");
496 // wcscat(Buffer, exenameW);
497 // testType2_W(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef);
498/*********************/
499
500 return;
501}
502
503static void Test_FindFirstFileExA(void)
504{
507 HANDLE h;
508
509 /* Save the current directory */
511 SetCurrentDirectoryA(OSDirA); /* We expect here that OSDir is of the form: C:\OSDir */
512
514 testType3_A(".", FindExInfoStandard, FindExSearchNameMatch, "XXX", 0, 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef);
515
516 /* Restore the old current directory */
518}
519
520static void Test_FindFirstFileExW(void)
521{
524 HANDLE h;
525
526 /* Save the current directory */
528 SetCurrentDirectoryW(OSDirW); /* We expect here that OSDir is of the form: C:\OSDir */
529
531 testType3_W(L".", FindExInfoStandard, FindExSearchNameMatch, L"XXX", 0, 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef);
532
533 /* Restore the old current directory */
535}
536
537static int init(void)
538{
539 LPSTR p;
540 size_t i;
541
543 if (!GetCurrentDirectoryA(_countof(baseA), baseA)) return 0;
545
546 /* Strip the path of selfname */
547 if ((p = strrchr(selfnameA, '\\')) != NULL)
548 exenameA = p + 1;
549 else
551
552 if ((p = strrchr(exenameA, '/')) != NULL)
553 exenameA = p + 1;
554
555 if (!GetWindowsDirectoryA(OSDirA, _countof(OSDirA))) return 0;
556
557 /* Quick-and-dirty conversion ANSI --> UNICODE without the Win32 APIs */
558 for (i = 0 ; i <= strlen(baseA) ; ++i)
559 {
560 baseW[i] = (WCHAR)baseA[i];
561 }
562 for (i = 0 ; i <= strlen(selfnameA) ; ++i)
563 {
565 }
567 for (i = 0 ; i <= strlen(OSDirA) ; ++i)
568 {
569 OSDirW[i] = (WCHAR)OSDirA[i];
570 }
571
572 return 1;
573}
574
575START_TEST(FindFiles)
576{
577 int b = init();
578 ok(b, "Basic init of FindFiles test\n");
579 if (!b) return;
580
585}
static void Test_FindFirstFileExA(void)
Definition: FindFiles.c:503
static LPSTR exenameA
Definition: FindFiles.c:27
static void Test_FindFirstFileExW(void)
Definition: FindFiles.c:520
static CHAR baseA[MAX_PATH]
Definition: FindFiles.c:23
static WCHAR OSDirW[MAX_PATH]
Definition: FindFiles.c:22
static INT myARGC
Definition: FindFiles.c:29
static CHAR OSDirA[MAX_PATH]
Definition: FindFiles.c:21
#define testType3_W(lpFileName, fInfoLevelId, fSearchOp, lpSearchFilter, dwAdditionalFlags, dwInitialError, hUnexpectedHandleValue, dwExpectedError)
Definition: FindFiles.c:109
static WCHAR selfnameW[MAX_PATH]
Definition: FindFiles.c:26
static void Test_FindFirstFileA(void)
Definition: FindFiles.c:121
static void Test_FindFirstFileW(void)
Definition: FindFiles.c:312
static WCHAR baseW[MAX_PATH]
Definition: FindFiles.c:24
#define testType1_W(lpFileName, dwInitialError, hExpectedHandleValue, dwExpectedError, bExpectedNullFilename)
Definition: FindFiles.c:62
#define testType1_A(lpFileName, dwInitialError, hExpectedHandleValue, dwExpectedError, bExpectedNullFilename)
Definition: FindFiles.c:48
static LPWSTR exenameW
Definition: FindFiles.c:28
#define testType3_A(lpFileName, fInfoLevelId, fSearchOp, lpSearchFilter, dwAdditionalFlags, dwInitialError, hUnexpectedHandleValue, dwExpectedError)
Definition: FindFiles.c:98
static LPSTR * myARGV
Definition: FindFiles.c:30
#define testType2_W(lpFileName, dwInitialError, hUnexpectedHandleValue, dwExpectedError)
Definition: FindFiles.c:87
static CHAR selfnameA[MAX_PATH]
Definition: FindFiles.c:25
#define testType2_A(lpFileName, dwInitialError, hUnexpectedHandleValue, dwExpectedError)
Definition: FindFiles.c:76
static int init(void)
Definition: FindFiles.c:537
char * strcat(char *DstString, const char *SrcString)
Definition: utclib.c:568
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
char * strcpy(char *DstString, const char *SrcString)
Definition: utclib.c:388
#define ok(value,...)
Definition: atltest.h:57
#define START_TEST(x)
Definition: atltest.h:75
WCHAR CurrentDirectory[1024]
Definition: chkdsk.c:74
Definition: bufpool.h:45
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define GetCurrentDirectoryW(x, y)
Definition: compat.h:756
#define INVALID_HANDLE_VALUE
Definition: compat.h:731
#define MAX_PATH
Definition: compat.h:34
#define ERROR_INVALID_NAME
Definition: compat.h:103
DWORD WINAPI GetCurrentDirectoryA(IN DWORD nBufferLength, OUT LPSTR lpBuffer)
Definition: path.c:2146
UINT WINAPI GetWindowsDirectoryA(OUT LPSTR lpBuffer, IN UINT uSize)
Definition: path.c:2337
BOOL WINAPI SetCurrentDirectoryW(IN LPCWSTR lpPathName)
Definition: path.c:2249
BOOL WINAPI SetCurrentDirectoryA(IN LPCSTR lpPathName)
Definition: path.c:2206
GLboolean GLboolean GLboolean b
Definition: glext.h:6204
GLfloat GLfloat p
Definition: glext.h:8902
GLfloat GLfloat GLfloat GLfloat h
Definition: glext.h:7723
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define ERROR_FILE_NOT_FOUND
Definition: disk.h:79
#define L(x)
Definition: ntvdm.h:50
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
_CRTIMP wchar_t *__cdecl wcscat(_Inout_updates_z_(_String_length_(_Dest)+_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
_Check_return_ _CRTIMP _CONST_RETURN char *__cdecl strrchr(_In_z_ const char *_Str, _In_ int _Ch)
int winetest_get_mainargs(char ***pargv)
static int fd
Definition: io.c:51
#define _countof(array)
Definition: sndvol32.h:68
int32_t INT
Definition: typedefs.h:58
@ FindExSearchNameMatch
Definition: winbase.h:1134
@ FindExInfoStandard
Definition: winbase.h:1128
#define ERROR_PATH_NOT_FOUND
Definition: winerror.h:106
char * LPSTR
Definition: xmlstorage.h:182
__wchar_t WCHAR
Definition: xmlstorage.h:180
WCHAR * LPWSTR
Definition: xmlstorage.h:184
char CHAR
Definition: xmlstorage.h:175