• Christian Heimes's avatar
    Merged revisions 59642-59665 via svnmerge from · 57dddfbb
    Christian Heimes yazdı
    svn+ssh://pythondev@svn.python.org/python/trunk
    
    ........
      r59653 | martin.v.loewis | 2008-01-01 22:05:17 +0100 (Tue, 01 Jan 2008) | 3 lines
    
      Return results from Python callbacks to Tcl as Tcl objects.
      Fixes Tk issue #1851526
    ........
      r59654 | martin.v.loewis | 2008-01-01 22:08:18 +0100 (Tue, 01 Jan 2008) | 4 lines
    
      Always convert Text.index result to string.
      This improves compatibility with Tcl 8.5, which would
      otherwise return textindex objects.
    ........
      r59655 | martin.v.loewis | 2008-01-01 22:09:07 +0100 (Tue, 01 Jan 2008) | 2 lines
    
      News item for r59653.
    ........
      r59656 | martin.v.loewis | 2008-01-02 00:00:00 +0100 (Wed, 02 Jan 2008) | 1 line
    
      Don't link with Tix; Tix is loaded dynamically by Tcl.
    ........
      r59657 | martin.v.loewis | 2008-01-02 00:00:48 +0100 (Wed, 02 Jan 2008) | 1 line
    
      Use Visual Studio 2009 on the build slaves.
    ........
      r59658 | martin.v.loewis | 2008-01-02 00:36:24 +0100 (Wed, 02 Jan 2008) | 1 line
    
      Test in PCbuild directory.
    ........
      r59661 | kurt.kaiser | 2008-01-02 05:11:28 +0100 (Wed, 02 Jan 2008) | 6 lines
    
      Issue1177
      r58207 and r58247 patch logic is reversed.  I noticed this when I
      tried to use urllib to retrieve a file which required auth.
    
      Fix that and add a test for 401 error to verify.
    ........
      r59662 | kurt.kaiser | 2008-01-02 06:23:38 +0100 (Wed, 02 Jan 2008) | 2 lines
    
      Change docstrings to comments so test output will display normally.
    ........
      r59665 | christian.heimes | 2008-01-02 18:43:40 +0100 (Wed, 02 Jan 2008) | 5 lines
    
      Removed PCbuild8/ directory and added a new build directory for VS 2005
      based on the VS 2008 build directory to PC/VS8.0. The script
      PCbuild/vs8to9.py was added to sync changes from PCbuild to PC/VS8.0.
    
      Kristjan, the initial creator of the PCbuild8 directory is fine with the replacement. I've moved the new version of the VS 2005 build directory next to the other legacy build directories. The new sync script is based on the work of wreck and syncs changes in the project, property and solution files.
    ........
    57dddfbb
kill_python.c 1.94 KB
/* This program looks for processes which have build\PCbuild\python.exe
   in their path and terminates them. */
#include <windows.h>
#include <psapi.h>
#include <stdio.h>

int main()
{
	DWORD pids[1024], cbNeeded;
	int i, num_processes;
	if (!EnumProcesses(pids, sizeof(pids), &cbNeeded)) {
		printf("EnumProcesses failed\n");
		return 1;
	}
	num_processes = cbNeeded/sizeof(pids[0]);
	for (i = 0; i < num_processes; i++) {
		HANDLE hProcess;
		char path[MAX_PATH];
		HMODULE mods[1024];
		int k, num_mods;
		hProcess = OpenProcess(PROCESS_QUERY_INFORMATION 
					| PROCESS_VM_READ 
					|  PROCESS_TERMINATE ,
					FALSE, pids[i]);
		if (!hProcess)
			/* process not accessible */
			continue;
		if (!EnumProcessModules(hProcess, mods, sizeof(mods), &cbNeeded)) {
			/* For unknown reasons, this sometimes returns ERROR_PARTIAL_COPY;
			   this apparently means we are not supposed to read the process. */
			if (GetLastError() == ERROR_PARTIAL_COPY) {
				CloseHandle(hProcess);
				continue;
			}
			printf("EnumProcessModules failed: %d\n", GetLastError());
			return 1;
		}
		if (!GetModuleFileNameEx(hProcess, NULL, path, sizeof(path))) {
			printf("GetProcessImageFileName failed\n");
			return 1;
		}

		_strlwr(path);
		/* printf("%s\n", path); */

		/* Check if we are running a buildbot version of Python.

		   On Windows, this will always be a debug build from the
		   PCbuild directory.  build\\PCbuild\\python_d.exe
		   
		   On Cygwin, the pathname is similar to other Unixes.
		   Use \\build\\python.exe to ensure we don't match
		   PCbuild\\python.exe which could be a normal instance
		   of Python running on vanilla Windows.
		*/
		if ((strstr(path, "pcbuild\\python_d.exe") != NULL) ||
		    (strstr(path, "\\build\\python.exe") != NULL)) {
			printf("Terminating %s (pid %d)\n", path, pids[i]);
			if (!TerminateProcess(hProcess, 1)) {
				printf("Termination failed: %d\n", GetLastError());
				return 1;
			}
			return 0;
		}

		CloseHandle(hProcess);
	}
}