27 { __LINE__, 0,
"cmd /c exit" },
28 { __LINE__, 0,
"cmd /c exit 0" },
29 { __LINE__, 0,
"cmd /c exit \"\"" },
30 { __LINE__, 0,
"cmd /c exit ABC" },
31 { __LINE__, 0,
"cmd /c exit \"ABC" },
32 { __LINE__, 0,
"cmd /c exit \"ABC\"" },
33 { __LINE__, 1234,
"cmd /c exit 1234" },
39 { __LINE__, 0,
"cmd /c echo.",
TRUE,
FALSE,
"\r\n" },
40 { __LINE__, 0,
"cmd /c echo ABC",
TRUE,
FALSE,
"ABC\r\n" },
45 { __LINE__, 0,
"cmd /c cd \"C:\\ " },
46 { __LINE__, 0,
"cmd /c cd C:/" },
47 { __LINE__, 0,
"cmd /c cd \"\"",
TRUE,
FALSE },
48 { __LINE__, 0,
"cmd /c cd",
TRUE,
FALSE },
49 { __LINE__, 1234,
"cmd /c cd C:\\Program Files && exit 1234" },
50 { __LINE__, 1234,
"cmd /c cd \"C:\\ \" && exit 1234" },
51 { __LINE__, 1234,
"cmd /c cd \"C:\\Program Files\" && exit 1234" },
52 { __LINE__, 1234,
"cmd /c cd \"\" && exit 1234",
TRUE,
FALSE },
53 { __LINE__, 1234,
"cmd /c cd \\ && exit 1234" },
58 { __LINE__, 0,
"cmd /c pushd C:\\ " },
59 { __LINE__, 0,
"cmd /c pushd C:\\ \"" },
60 { __LINE__, 0,
"cmd /c pushd C:\\ \"\"" },
61 { __LINE__, 0,
"cmd /c pushd C:\\ \"\"\"" },
62 { __LINE__, 0,
"cmd /c pushd C:\\ \"\"\"\"" },
63 { __LINE__, 0,
"cmd /c pushd C:\\ \" " },
64 { __LINE__, 0,
"cmd /c pushd C:\\ \"\" " },
65 { __LINE__, 0,
"cmd /c pushd C:\\ \"\"\" " },
66 { __LINE__, 0,
"cmd /c pushd C:\\ \"\"\"\" " },
67 { __LINE__, 0,
"cmd /c pushd C:\\" },
68 { __LINE__, 0,
"cmd /c pushd C:\\\"" },
69 { __LINE__, 0,
"cmd /c pushd C:\\\"\"" },
70 { __LINE__, 0,
"cmd /c pushd C:\\\"\"\"" },
71 { __LINE__, 0,
"cmd /c pushd C:\\\"\"\"\"" },
72 { __LINE__, 0,
"cmd /c pushd C:\\\" " },
73 { __LINE__, 0,
"cmd /c pushd C:\\\"\" " },
74 { __LINE__, 0,
"cmd /c pushd C:\\\"\"\" " },
75 { __LINE__, 0,
"cmd /c pushd C:\\\"\"\"\" " },
76 { __LINE__, 0,
"cmd /c pushd \"C:\\ " },
77 { __LINE__, 0,
"cmd /c pushd \"C:\\ \"" },
78 { __LINE__, 0,
"cmd /c pushd \"C:\\ \"\"" },
79 { __LINE__, 0,
"cmd /c pushd \"C:\\ \"\"\"" },
80 { __LINE__, 0,
"cmd /c pushd \"C:\\ \"\"\"\"" },
81 { __LINE__, 0,
"cmd /c pushd \"C:\\ \" " },
82 { __LINE__, 0,
"cmd /c pushd \"C:\\ \"\" " },
83 { __LINE__, 0,
"cmd /c pushd \"C:\\ \"\"\" " },
84 { __LINE__, 0,
"cmd /c pushd \"C:\\ \"\"\"\" " },
85 { __LINE__, 0,
"cmd /c pushd \"C:\\" },
86 { __LINE__, 0,
"cmd /c pushd \"C:\\\"" },
87 { __LINE__, 0,
"cmd /c pushd \"C:\\\"\"" },
88 { __LINE__, 0,
"cmd /c pushd \"C:\\\"\"\"" },
89 { __LINE__, 0,
"cmd /c pushd \"C:\\\"\"\"\"" },
90 { __LINE__, 0,
"cmd /c pushd \"C:\\\"" },
91 { __LINE__, 1,
"cmd /c pushd \" C:\\ ",
FALSE,
TRUE },
92 { __LINE__, 1,
"cmd /c pushd \" C:\\ \"",
FALSE,
TRUE },
93 { __LINE__, 1,
"cmd /c pushd \" C:\\ \"\"",
FALSE,
TRUE },
94 { __LINE__, 1,
"cmd /c pushd \" C:\\ \"\"\"",
FALSE,
TRUE },
95 { __LINE__, 1,
"cmd /c pushd \" C:\\ \"\"\"\"",
FALSE,
TRUE },
96 { __LINE__, 1,
"cmd /c pushd \"\" C:\\ ",
FALSE,
TRUE },
97 { __LINE__, 1,
"cmd /c pushd \"\" C:\\ \"",
FALSE,
TRUE },
98 { __LINE__, 1,
"cmd /c pushd \"\" C:\\ \"\"",
FALSE,
TRUE },
99 { __LINE__, 1,
"cmd /c pushd \"\" C:\\ \"\"\"",
FALSE,
TRUE },
100 { __LINE__, 1,
"cmd /c pushd \"\" C:\\ \"\"\"\"",
FALSE,
TRUE },
101 { __LINE__, 1,
"cmd /c pushd \"\" C:\\\"",
FALSE,
TRUE },
102 { __LINE__, 1,
"cmd /c popd ABC" },
103 { __LINE__, 1,
"cmd /c popd \" " },
104 { __LINE__, 1,
"cmd /c popd \"\"" },
105 { __LINE__, 1,
"cmd /c popd" },
106 { __LINE__, 1,
"cmd /c pushd ABC",
FALSE,
TRUE },
107 { __LINE__, 1,
"cmd /c pushd C:/Program Files && popd && exit 1234",
FALSE,
TRUE },
108 { __LINE__, 1,
"cmd /c pushd C:\\ C:\\ && popd && exit 1234",
FALSE,
TRUE },
109 { __LINE__, 1,
"cmd /c pushd C:\\Invalid Directory && exit 1234",
FALSE,
TRUE },
110 { __LINE__, 1,
"cmd /c pushd C:\\Invalid Directory && popd && exit 1234",
FALSE,
TRUE },
111 { __LINE__, 1,
"cmd /c pushd \" C:\\ ",
FALSE,
TRUE },
112 { __LINE__, 1,
"cmd /c pushd \"C:\\ C:\\\" && popd && exit 1234",
FALSE,
TRUE },
113 { __LINE__, 1234,
"cmd /c pushd && exit 1234 " },
114 { __LINE__, 1234,
"cmd /c pushd C:\\ && popd && exit 1234" },
115 { __LINE__, 1234,
"cmd /c pushd C:\\ \"\" && popd && exit 1234" },
116 { __LINE__, 1234,
"cmd /c pushd C:\\Program Files && popd && exit 1234" },
119 { __LINE__, 1234,
"cmd /c pushd \"C:\\ \" && popd && exit 1234" },
120 { __LINE__, 1234,
"cmd /c pushd \"C:\\ \"\"\" && popd && exit 1234" },
121 { __LINE__, 1234,
"cmd /c pushd \"C:\\ \"\"\"\"\" && popd && exit 1234" },
122 { __LINE__, 1234,
"cmd /c pushd \"C:\\Program Files\" && popd && exit 1234" },
123 { __LINE__, 1234,
"cmd /c pushd \"C:\\Program Files\\\" && popd && exit 1234" },
124 { __LINE__, 1234,
"cmd /c pushd \"C:\\\" && popd && exit 1234" },
130 { __LINE__, 0,
"attrib invalid-path.txt",
TRUE,
FALSE },
131 { __LINE__, 0,
"attrib +H invalid-path.txt",
TRUE,
FALSE },
132 { __LINE__, 0,
"attrib -H invalid-path.txt",
TRUE,
FALSE },
135 { __LINE__, 0,
"cmd /c if exist attr-test.txt attrib -H attr-test.txt" },
136 { __LINE__, 0,
"cmd /c if exist attr-test.txt del /Q attr-test.txt" },
137 { __LINE__, 0,
"cmd /c copy NUL attr-test.txt ",
TRUE,
FALSE },
139 { __LINE__, 0,
"attrib +H attr-test.txt",
FALSE,
FALSE },
140 { __LINE__, 0,
"attrib attr-test.txt",
TRUE,
FALSE,
" H " },
141 { __LINE__, 0,
"attrib -H attr-test.txt",
FALSE,
FALSE },
144 { __LINE__, 0,
"attrib +H attr-te*.txt",
FALSE,
FALSE },
145 { __LINE__, 0,
"attrib attr-te*.txt",
TRUE,
FALSE,
" H " },
146 { __LINE__, 0,
"attrib -H attr-te*.txt",
FALSE,
FALSE },
148 { __LINE__, 0,
"cmd /c if exist attr-test.txt attrib -H attr-test.txt" },
149 { __LINE__, 0,
"cmd /c if exist attr-test.txt del /Q attr-test.txt" },
152 { __LINE__, 0,
"cmd /c if exist attr-test.txt attrib -H attr-test.txt" },
153 { __LINE__, 0,
"cmd /c if exist attr-test.txt del /Q attr-test.txt" },
154 { __LINE__, 0,
"cmd /c copy NUL attr-test.txt ",
TRUE,
FALSE },
156 { __LINE__, 0,
"attrib /S +H attr-test.txt",
FALSE,
FALSE },
157 { __LINE__, 0,
"attrib /S attr-test.txt",
TRUE,
FALSE,
" H " },
158 { __LINE__, 0,
"attrib /S -H attr-test.txt",
FALSE,
FALSE },
161 { __LINE__, 0,
"attrib /S +H attr-te*.txt",
FALSE,
FALSE },
162 { __LINE__, 0,
"attrib /S attr-te*.txt",
TRUE,
FALSE,
" H " },
163 { __LINE__, 0,
"attrib /S -H attr-te*.txt",
FALSE,
FALSE },
165 { __LINE__, 0,
"attrib /S +H",
FALSE,
FALSE },
166 { __LINE__, 0,
"attrib /S attr-test.txt",
TRUE,
FALSE,
" H " },
167 { __LINE__, 0,
"attrib /S -H",
FALSE,
FALSE },
169 { __LINE__, 0,
"cmd /c if exist attr-test.txt attrib -H attr-test.txt" },
170 { __LINE__, 0,
"cmd /c if exist attr-test.txt del /Q attr-test.txt" },
173 { __LINE__, 0,
"cmd /c if exist attr-test.txt attrib -H attr-test.txt" },
174 { __LINE__, 0,
"cmd /c if exist attr-test.txt del /Q attr-test.txt" },
175 { __LINE__, 0,
"cmd /c copy NUL attr-test.txt ",
TRUE,
FALSE },
177 { __LINE__, 0,
"attrib /S /D +H attr-test.txt",
FALSE,
FALSE },
178 { __LINE__, 0,
"attrib /S /D attr-test.txt",
TRUE,
FALSE,
" H " },
179 { __LINE__, 0,
"attrib /S /D -H attr-test.txt",
FALSE,
FALSE },
182 { __LINE__, 0,
"attrib /S /D +H attr-te*.txt",
FALSE,
FALSE },
183 { __LINE__, 0,
"attrib /S /D attr-te*.txt",
TRUE,
FALSE,
" H " },
184 { __LINE__, 0,
"attrib /S /D -H attr-te*.txt",
FALSE,
FALSE },
186 { __LINE__, 0,
"cmd /c if exist attr-test.txt attrib -H attr-test.txt" },
187 { __LINE__, 0,
"cmd /c if exist attr-test.txt del /Q attr-test.txt" },
190 { __LINE__, 0,
"cmd /c if exist attr-dir rmdir /s /q attr-dir" },
191 { __LINE__, 0,
"cmd /c mkdir attr-dir",
FALSE,
FALSE },
192 { __LINE__, 0,
"cmd /c if exist attr-dir/test.txt attrib -H attr-dir/test.txt" },
193 { __LINE__, 0,
"cmd /c if exist attr-dir/test.txt del /Q attr-dir/test.txt" },
194 { __LINE__, 1,
"cmd /c copy NUL attr-dir/test.txt ",
TRUE,
FALSE },
196 { __LINE__, 0,
"attrib +H attr-dir/test.txt",
TRUE,
FALSE },
198 { __LINE__, 0,
"attrib -H attr-dir/test.txt",
TRUE,
FALSE,
"test.txt" },
201 { __LINE__, 0,
"attrib attr-dir",
TRUE,
FALSE,
" H " },
205 { __LINE__, 0,
"cmd /c if exist attr-dir/test.txt attrib -H attr-dir/test.txt" },
206 { __LINE__, 0,
"cmd /c if exist attr-dir/test.txt del /Q attr-dir/test.txt" },
207 { __LINE__, 0,
"cmd /c if exist attr-dir rmdir /s /q attr-dir" },
210 { __LINE__, 0,
"cmd /c if exist attr-dir rmdir /s /q attr-dir" },
211 { __LINE__, 0,
"cmd /c mkdir attr-dir",
FALSE,
FALSE },
213 { __LINE__, 0,
"cmd /c if exist attr-dir echo OK",
TRUE,
FALSE,
"OK" },
214 { __LINE__, 0,
"cmd /c mkdir attr-dir\\dir1",
FALSE,
FALSE },
215 { __LINE__, 0,
"cmd /c if exist attr-dir\\dir1 echo OK",
TRUE,
FALSE,
"OK" },
217 { __LINE__, 0,
"attrib +H attr-dir\\dir1",
FALSE,
FALSE },
218 { __LINE__, 0,
"attrib attr-dir\\dir1",
TRUE,
FALSE,
" H " },
219 { __LINE__, 0,
"attrib -H attr-dir\\dir1",
FALSE,
FALSE },
221 { __LINE__, 0,
"attrib +H attr-dir",
FALSE,
FALSE },
223 { __LINE__, 0,
"attrib -H attr-dir",
FALSE,
FALSE },
225 { __LINE__, 0,
"attrib +H attr-d*",
TRUE,
FALSE,
"attr-d*" },
227 { __LINE__, 0,
"attrib -H attr-d*",
TRUE,
FALSE,
"attr-d*" },
229 { __LINE__, 0,
"attrib +H attr-dir\\d*",
TRUE,
FALSE,
"attr-dir\\d*" },
231 { __LINE__, 0,
"attrib -H attr-dir\\d*",
TRUE,
FALSE,
"attr-dir\\d*" },
233 { __LINE__, 0,
"attrib -H attr-dir\\dir1",
FALSE,
FALSE },
234 { __LINE__, 0,
"attrib -H attr-dir",
FALSE,
FALSE },
235 { __LINE__, 0,
"cmd /c if exist attr-dir rmdir /s /q attr-dir" },
238 { __LINE__, 0,
"cmd /c if exist attr-dir rmdir /s /q attr-dir" },
239 { __LINE__, 0,
"cmd /c mkdir attr-dir",
FALSE,
FALSE },
241 { __LINE__, 0,
"cmd /c if exist attr-dir echo OK",
TRUE,
FALSE,
"OK" },
242 { __LINE__, 0,
"cmd /c mkdir attr-dir\\dir1",
FALSE,
FALSE },
243 { __LINE__, 0,
"cmd /c if exist attr-dir\\dir1 echo OK",
TRUE,
FALSE,
"OK" },
245 { __LINE__, 0,
"attrib /S +H attr-dir\\dir1",
TRUE,
FALSE,
"attr-dir\\dir1", },
246 { __LINE__, 0,
"attrib /S attr-dir\\dir1",
TRUE,
FALSE,
"attr-dir\\dir1" },
247 { __LINE__, 0,
"attrib /S -H attr-dir\\dir1",
TRUE,
FALSE,
"attr-dir\\dir1" },
249 { __LINE__, 0,
"attrib /S +H attr-dir",
TRUE,
FALSE,
"attr-dir" },
251 { __LINE__, 0,
"attrib /S -H attr-dir",
TRUE,
FALSE,
"attr-dir" },
253 { __LINE__, 0,
"attrib /S +H attr-d*",
TRUE,
FALSE,
"attr-d*" },
255 { __LINE__, 0,
"attrib /S -H attr-d*",
TRUE,
FALSE,
"attr-d*" },
257 { __LINE__, 0,
"attrib /S +H attr-dir\\d*",
TRUE,
FALSE,
"attr-dir\\d*" },
259 { __LINE__, 0,
"attrib /S -H attr-dir\\d*",
TRUE,
FALSE,
"attr-dir\\d*" },
261 { __LINE__, 0,
"attrib /S -H attr-dir\\dir1",
TRUE,
FALSE,
"attr-dir\\dir1" },
262 { __LINE__, 0,
"attrib /S -H attr-dir",
TRUE,
FALSE,
"attr-dir" },
263 { __LINE__, 0,
"cmd /c if exist attr-dir rmdir /s /q attr-dir" },
266 { __LINE__, 0,
"cmd /c if exist attr-dir rmdir /s /q attr-dir" },
267 { __LINE__, 0,
"cmd /c mkdir attr-dir",
FALSE,
FALSE },
269 { __LINE__, 0,
"cmd /c if exist attr-dir echo OK",
TRUE,
FALSE,
"OK" },
270 { __LINE__, 0,
"cmd /c mkdir attr-dir\\dir1",
FALSE,
FALSE },
271 { __LINE__, 0,
"cmd /c if exist attr-dir\\dir1 echo OK",
TRUE,
FALSE,
"OK" },
273 { __LINE__, 0,
"attrib /S /D +H attr-dir\\dir1",
FALSE,
FALSE },
274 { __LINE__, 0,
"attrib /S /D attr-dir\\dir1",
TRUE,
FALSE,
" H " },
275 { __LINE__, 0,
"attrib /S /D -H attr-dir\\dir1",
FALSE,
FALSE },
277 { __LINE__, 0,
"attrib /S /D +H attr-dir",
FALSE,
FALSE },
279 { __LINE__, 0,
"attrib /S /D -H attr-dir",
FALSE,
FALSE },
281 { __LINE__, 0,
"attrib /S /D +H attr-d*",
FALSE,
FALSE },
283 { __LINE__, 0,
"attrib /S /D -H attr-d*",
FALSE,
FALSE },
285 { __LINE__, 0,
"attrib /S /D +H attr-dir\\d*",
FALSE,
FALSE },
286 { __LINE__, 0,
"attrib /S /D attr-dir\\dir1",
TRUE,
FALSE,
" H " },
287 { __LINE__, 0,
"attrib /S /D -H attr-dir\\d*",
FALSE,
FALSE },
289 { __LINE__, 0,
"attrib /S /D -H attr-dir\\dir1",
FALSE,
FALSE },
290 { __LINE__, 0,
"attrib /S /D -H attr-dir",
FALSE,
FALSE },
291 { __LINE__, 0,
"cmd /c if exist attr-dir rmdir /s /q attr-dir" },
294 { __LINE__, 0,
"cmd /c if exist attr-dir rmdir /s /q attr-dir" },
295 { __LINE__, 0,
"cmd /c mkdir attr-dir",
FALSE,
FALSE },
297 { __LINE__, 0,
"cmd /c if exist attr-dir echo OK",
TRUE,
FALSE,
"OK" },
298 { __LINE__, 0,
"cmd /c mkdir attr-dir\\dir1",
FALSE,
FALSE },
299 { __LINE__, 0,
"cmd /c if exist attr-dir\\dir1 echo OK",
TRUE,
FALSE,
"OK" },
300 { __LINE__, 0,
"cmd /c copy NUL attr-dir\\dir1\\attr-test.txt ",
TRUE,
FALSE },
301 { __LINE__, 0,
"attrib attr-dir\\dir1\\attr-test.txt",
TRUE,
FALSE,
NULL,
NULL,
" H " },
302 { __LINE__, 0,
"attrib /S +H attr-dir\\dir1\\attr-test.txt",
FALSE,
FALSE },
303 { __LINE__, 0,
"attrib /S attr-test.txt",
TRUE,
FALSE,
" H " },
304 { __LINE__, 0,
"attrib /S -H attr-dir\\dir1\\attr-test.txt",
FALSE,
FALSE },
306 { __LINE__, 0,
"attrib /S +H attr-test.txt",
FALSE,
FALSE },
307 { __LINE__, 0,
"attrib /S attr-test.txt",
TRUE,
FALSE,
" H " },
308 { __LINE__, 0,
"attrib /S -H attr-test.txt",
FALSE,
FALSE },
310 { __LINE__, 0,
"attrib /S +H",
FALSE,
FALSE },
311 { __LINE__, 0,
"attrib /S attr-test.txt",
TRUE,
FALSE,
" H " },
312 { __LINE__, 0,
"attrib /S attr-tes*.*",
TRUE,
FALSE,
" H " },
313 { __LINE__, 0,
"attrib /S -H",
FALSE,
FALSE },
316 { __LINE__, 0,
"cmd /c if exist attr-dir/dir1/test.txt attrib -H attr-dir/dir1/test.txt" },
317 { __LINE__, 0,
"cmd /c if exist attr-dir/dir1/test.txt del /Q attr-dir/dir1/test.txt" },
318 { __LINE__, 0,
"cmd /c if exist attr-dir rmdir /s /q attr-dir" },
367 if (phOutputRead && phOutputRead == phErrorRead)
372 else if (phErrorRead)
407 DWORD dwExitCode, dwWait;
411 BOOL bStdOutput, bStdError;
414 memset(&si, 0,
sizeof(si));
420 skip(
"PrepareForRedirect failed\n");
444 bStdOutput = dwRead != 0;
449 bStdError = dwRead != 0;
458 ok(
pEntry->bStdOutput == bStdOutput,
459 "Line %u: bStdOutput %d vs %d\n",
463 "Line %u: bStdError %d vs %d\n",
466 ok(
pEntry->dwExitCode == dwExitCode,
467 "Line %u: dwExitCode %ld vs %ld\n",
470 if (
pEntry->OutputContains)
473 "Line %u: szOut was '%s'\n",
477 if (
pEntry->ErrorContains)
480 "Line %u: szErr was '%s'\n",
484 if (
pEntry->OutputNotContains)
487 "Line %u: szOut was '%s'\n",
491 if (
pEntry->ErrorNotContains)
494 "Line %u: szErr was '%s'\n",
char * strstr(char *String1, char *String2)
static struct sockaddr_in sa
#define GetCurrentProcess()
BOOL WINAPI DuplicateHandle(IN HANDLE hSourceProcessHandle, IN HANDLE hSourceHandle, IN HANDLE hTargetProcessHandle, OUT LPHANDLE lpTargetHandle, IN DWORD dwDesiredAccess, IN BOOL bInheritHandle, IN DWORD dwOptions)
BOOL WINAPI GetExitCodeProcess(IN HANDLE hProcess, IN LPDWORD lpExitCode)
BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessA(LPCSTR lpApplicationName, LPSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCSTR lpCurrentDirectory, LPSTARTUPINFOA lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation)
BOOL WINAPI TerminateProcess(IN HANDLE hProcess, IN UINT uExitCode)
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
_In_ BOOL _In_ HANDLE hProcess
static const TEST_ENTRY s_pushd_entries[]
static BOOL PrepareForRedirect(STARTUPINFOA *psi, PHANDLE phInputWrite, PHANDLE phOutputRead, PHANDLE phErrorRead)
static const TEST_ENTRY s_attrib_entries[]
static void DoTestEntry(const TEST_ENTRY *pEntry)
static const TEST_ENTRY s_cd_entries[]
static BOOL MyDuplicateHandle(HANDLE hFile, PHANDLE phFile, BOOL bInherit)
static const TEST_ENTRY s_echo_entries[]
struct TEST_ENTRY TEST_ENTRY
static const TEST_ENTRY s_exit_entries[]
BOOL WINAPI PeekNamedPipe(HANDLE hNamedPipe, LPVOID lpBuffer, DWORD nBufferSize, LPDWORD lpBytesRead, LPDWORD lpTotalBytesAvail, LPDWORD lpBytesLeftThisMessage)
BOOL WINAPI CreatePipe(PHANDLE hReadPipe, PHANDLE hWritePipe, LPSECURITY_ATTRIBUTES lpPipeAttributes, DWORD nSize)
const char * OutputContains
const char * ErrorNotContains
const char * ErrorContains
const char * OutputNotContains
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
#define STARTF_USESTDHANDLES
#define DUPLICATE_SAME_ACCESS