Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/cygrun.c')
-rw-r--r--winsup/cygwin/cygrun.c67
1 files changed, 67 insertions, 0 deletions
diff --git a/winsup/cygwin/cygrun.c b/winsup/cygwin/cygrun.c
new file mode 100644
index 000000000..63d9863f7
--- /dev/null
+++ b/winsup/cygwin/cygrun.c
@@ -0,0 +1,67 @@
+/* cygrun.c: testsuite support program
+
+ Copyright 1999, 2000, 2001, 2002 Red Hat, Inc.
+
+This file is part of Cygwin.
+
+This software is a copyrighted work licensed under the terms of the
+Cygwin license. Please consult the file "CYGWIN_LICENSE" for
+details. */
+
+/* This program is intended to be used only by the testsuite. It runs
+ programs without using the cygwin api, so that the just-built dll
+ can be tested without interference from the currently installed
+ dll. */
+
+#include <stdio.h>
+#include <windows.h>
+#include <stdlib.h>
+
+int
+main (int argc, char **argv)
+{
+ STARTUPINFO sa;
+ PROCESS_INFORMATION pi;
+ DWORD ec = 1;
+ char *p;
+
+ if (argc < 2)
+ {
+ fprintf (stderr, "Usage: cygrun [program]\n");
+ exit (0);
+ }
+
+ SetEnvironmentVariable ("CYGWIN_TESTING", "1");
+ if ((p = getenv ("CYGWIN")) == NULL || (strstr (p, "ntsec") == NULL))
+ {
+ char buf[4096];
+ if (!p)
+ {
+ p = buf;
+ p[0] = '\0';
+ }
+ else
+ {
+ strcpy (buf, p);
+ strcat (buf, " ");
+ }
+ strcat(buf, "ntsec");
+ SetEnvironmentVariable ("CYGWIN", buf);
+ }
+
+ memset (&sa, 0, sizeof (sa));
+ memset (&pi, 0, sizeof (pi));
+ if (!CreateProcess (0, argv[1], 0, 0, 1, 0, 0, 0, &sa, &pi))
+ {
+ fprintf (stderr, "CreateProcess %s failed\n", argv[1]);
+ exit (1);
+ }
+
+ WaitForSingleObject (pi.hProcess, INFINITE);
+
+ GetExitCodeProcess (pi.hProcess, &ec);
+
+ CloseHandle (pi.hProcess);
+ CloseHandle (pi.hThread);
+ return ec;
+}