8 WinMain (struct HINSTANCE__ *hInstance,
9 struct HINSTANCE__ *hPrevInstance,
15 if (__argc >= 2 && strcmp (__argv[1], "nop") == 0)
17 sprintf (buf, "spawn-test-win32-gui: argv[0]=\"%s\"", __argv[0]);
18 MessageBox (NULL, buf, lpszCmdLine, MB_ICONINFORMATION|MB_SYSTEMMODAL);
22 MessageBox (NULL, "spawn-test-win32-gui: Will write to stdout",
23 lpszCmdLine, MB_ICONINFORMATION|MB_SYSTEMMODAL);
25 printf ("This is stdout\n");
28 MessageBox (NULL, "spawn-test-win32-gui: Will write to stderr",
29 lpszCmdLine, MB_ICONINFORMATION|MB_SYSTEMMODAL);
31 fprintf (stderr, "This is stderr\n");
34 else if (__argc == 4 && strcmp (__argv[1], "pipes") == 0)
36 int infd = atoi (__argv[2]);
37 int outfd = atoi (__argv[3]);
40 if (infd < 0 || outfd < 0)
42 MessageBox (NULL, "spawn-test-win32-gui: illegal fds on command line",
43 lpszCmdLine, MB_ICONERROR|MB_SYSTEMMODAL);
47 MessageBox (NULL, "spawn-test-win32-gui: Will write to parent",
48 lpszCmdLine, MB_ICONINFORMATION|MB_SYSTEMMODAL);
50 n = strlen ("Hello there");
51 if (write (outfd, &n, sizeof (n)) == -1 ||
52 write (outfd, "Hello there", n) == -1)
54 sprintf (buf, "spawn-test-win32-gui: Write: %s", strerror (errno));
55 MessageBox (NULL, buf, lpszCmdLine, MB_ICONERROR|MB_SYSTEMMODAL);
59 MessageBox (NULL, "spawn-test-win32-gui: Will read from parent",
60 lpszCmdLine, MB_ICONINFORMATION|MB_SYSTEMMODAL);
62 if ((k = read (infd, &n, sizeof (n))) != sizeof (n))
64 sprintf (buf, "spawn-test-win32-gui: Got only %d bytes, wanted %d",
66 MessageBox (NULL, buf, lpszCmdLine, MB_ICONERROR|MB_SYSTEMMODAL);
70 sprintf (buf, "spawn-test-win32-gui: Parent says %d bytes to read", n);
71 MessageBox (NULL, buf, lpszCmdLine, MB_ICONINFORMATION|MB_SYSTEMMODAL);
73 if ((k = read (infd, buf, n)) != n)
76 sprintf (buf, "spawn-test-win32-gui: Read: %s", strerror (errno));
78 sprintf (buf, "spawn-test-win32-gui: Got only %d bytes", k);
79 MessageBox (NULL, buf, lpszCmdLine, MB_ICONERROR|MB_SYSTEMMODAL);
83 MessageBox (NULL, "spawn-test-win32-gui: Will write more to parent",
84 lpszCmdLine, MB_ICONINFORMATION|MB_SYSTEMMODAL);
86 n = strlen ("See ya");
87 if (write (outfd, &n, sizeof (n)) == -1 ||
88 write (outfd, "See ya", n) == -1)
90 sprintf (buf, "spawn-test-win32-gui: Write: %s", strerror (errno));
91 MessageBox (NULL, buf, lpszCmdLine, MB_ICONERROR|MB_SYSTEMMODAL);
98 MessageBox (NULL, "spawn-test-win32-gui: Done, exiting.",
99 lpszCmdLine, MB_ICONINFORMATION|MB_SYSTEMMODAL);