70 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
/* 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);
 | 
						|
  if (ec > 0xff)
 | 
						|
    ec >>= 8;
 | 
						|
  return ec;
 | 
						|
}
 |