Run svneol.py on all sources.

This commit is contained in:
Martin v. Löwis 2008-06-13 22:38:33 +00:00
parent 6733ef5273
commit 06510b2213
36 changed files with 19402 additions and 19402 deletions

View file

@ -1,76 +1,76 @@
import unittest, os, errno import unittest, os, errno
from ctypes import * from ctypes import *
from ctypes.util import find_library from ctypes.util import find_library
import threading import threading
class Test(unittest.TestCase): class Test(unittest.TestCase):
def test_open(self): def test_open(self):
libc_name = find_library("c") libc_name = find_library("c")
if libc_name is not None: if libc_name is not None:
libc = CDLL(libc_name, use_errno=True) libc = CDLL(libc_name, use_errno=True)
if os.name == "nt": if os.name == "nt":
libc_open = libc._open libc_open = libc._open
else: else:
libc_open = libc.open libc_open = libc.open
libc_open.argtypes = c_char_p, c_int libc_open.argtypes = c_char_p, c_int
self.failUnlessEqual(libc_open("", 0), -1) self.failUnlessEqual(libc_open("", 0), -1)
self.failUnlessEqual(get_errno(), errno.ENOENT) self.failUnlessEqual(get_errno(), errno.ENOENT)
self.failUnlessEqual(set_errno(32), errno.ENOENT) self.failUnlessEqual(set_errno(32), errno.ENOENT)
self.failUnlessEqual(get_errno(), 32) self.failUnlessEqual(get_errno(), 32)
def _worker(): def _worker():
set_errno(0) set_errno(0)
libc = CDLL(libc_name, use_errno=False) libc = CDLL(libc_name, use_errno=False)
if os.name == "nt": if os.name == "nt":
libc_open = libc._open libc_open = libc._open
else: else:
libc_open = libc.open libc_open = libc.open
libc_open.argtypes = c_char_p, c_int libc_open.argtypes = c_char_p, c_int
self.failUnlessEqual(libc_open("", 0), -1) self.failUnlessEqual(libc_open("", 0), -1)
self.failUnlessEqual(get_errno(), 0) self.failUnlessEqual(get_errno(), 0)
t = threading.Thread(target=_worker) t = threading.Thread(target=_worker)
t.start() t.start()
t.join() t.join()
self.failUnlessEqual(get_errno(), 32) self.failUnlessEqual(get_errno(), 32)
set_errno(0) set_errno(0)
if os.name == "nt": if os.name == "nt":
def test_GetLastError(self): def test_GetLastError(self):
dll = WinDLL("kernel32", use_last_error=True) dll = WinDLL("kernel32", use_last_error=True)
GetModuleHandle = dll.GetModuleHandleA GetModuleHandle = dll.GetModuleHandleA
GetModuleHandle.argtypes = [c_wchar_p] GetModuleHandle.argtypes = [c_wchar_p]
self.failUnlessEqual(0, GetModuleHandle("foo")) self.failUnlessEqual(0, GetModuleHandle("foo"))
self.failUnlessEqual(get_last_error(), 126) self.failUnlessEqual(get_last_error(), 126)
self.failUnlessEqual(set_last_error(32), 126) self.failUnlessEqual(set_last_error(32), 126)
self.failUnlessEqual(get_last_error(), 32) self.failUnlessEqual(get_last_error(), 32)
def _worker(): def _worker():
set_last_error(0) set_last_error(0)
dll = WinDLL("kernel32", use_last_error=False) dll = WinDLL("kernel32", use_last_error=False)
GetModuleHandle = dll.GetModuleHandleW GetModuleHandle = dll.GetModuleHandleW
GetModuleHandle.argtypes = [c_wchar_p] GetModuleHandle.argtypes = [c_wchar_p]
GetModuleHandle("bar") GetModuleHandle("bar")
self.failUnlessEqual(get_last_error(), 0) self.failUnlessEqual(get_last_error(), 0)
t = threading.Thread(target=_worker) t = threading.Thread(target=_worker)
t.start() t.start()
t.join() t.join()
self.failUnlessEqual(get_last_error(), 32) self.failUnlessEqual(get_last_error(), 32)
set_last_error(0) set_last_error(0)
if __name__ == "__main__": if __name__ == "__main__":
unittest.main() unittest.main()

View file

@ -1,45 +1,45 @@
Received: from xcar [192.168.0.2] by jeeves.wooster.local Received: from xcar [192.168.0.2] by jeeves.wooster.local
(SMTPD32-7.07 EVAL) id AFF92F0214; Sun, 12 May 2002 08:55:37 +0100 (SMTPD32-7.07 EVAL) id AFF92F0214; Sun, 12 May 2002 08:55:37 +0100
Date: Sun, 12 May 2002 08:56:15 +0100 Date: Sun, 12 May 2002 08:56:15 +0100
From: Father Time <father.time@xcar.wooster.local> From: Father Time <father.time@xcar.wooster.local>
To: timbo@jeeves.wooster.local To: timbo@jeeves.wooster.local
Subject: IMAP file test Subject: IMAP file test
Message-ID: <6df65d354b.father.time@rpc.wooster.local> Message-ID: <6df65d354b.father.time@rpc.wooster.local>
X-Organization: Home X-Organization: Home
User-Agent: Messenger-Pro/2.50a (MsgServe/1.50) (RISC-OS/4.02) POPstar/2.03 User-Agent: Messenger-Pro/2.50a (MsgServe/1.50) (RISC-OS/4.02) POPstar/2.03
MIME-Version: 1.0 MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="1618492860--2051301190--113853680" Content-Type: multipart/mixed; boundary="1618492860--2051301190--113853680"
Status: R Status: R
X-UIDL: 319998302 X-UIDL: 319998302
This message is in MIME format which your mailer apparently does not support. This message is in MIME format which your mailer apparently does not support.
You either require a newer version of your software which supports MIME, or You either require a newer version of your software which supports MIME, or
a separate MIME decoding utility. Alternatively, ask the sender of this a separate MIME decoding utility. Alternatively, ask the sender of this
message to resend it in a different format. message to resend it in a different format.
--1618492860--2051301190--113853680 --1618492860--2051301190--113853680
Content-Type: text/plain; charset=us-ascii Content-Type: text/plain; charset=us-ascii
Simple email with attachment. Simple email with attachment.
--1618492860--2051301190--113853680 --1618492860--2051301190--113853680
Content-Type: application/riscos; name="clock.bmp,69c"; type=BMP; load=&fff69c4b; exec=&355dd4d1; access=&03 Content-Type: application/riscos; name="clock.bmp,69c"; type=BMP; load=&fff69c4b; exec=&355dd4d1; access=&03
Content-Disposition: attachment; filename="clock.bmp" Content-Disposition: attachment; filename="clock.bmp"
Content-Transfer-Encoding: base64 Content-Transfer-Encoding: base64
Qk12AgAAAAAAAHYAAAAoAAAAIAAAACAAAAABAAQAAAAAAAAAAADXDQAA1w0AAAAAAAAA Qk12AgAAAAAAAHYAAAAoAAAAIAAAACAAAAABAAQAAAAAAAAAAADXDQAA1w0AAAAAAAAA
AAAAAAAAAAAAiAAAiAAAAIiIAIgAAACIAIgAiIgAALu7uwCIiIgAERHdACLuIgAz//8A AAAAAAAAAAAAiAAAiAAAAIiIAIgAAACIAIgAiIgAALu7uwCIiIgAERHdACLuIgAz//8A
zAAAAN0R3QDu7iIA////AAAAAAAAAAAAAAAAAAAAAAAAAAi3AAAAAAAAADeAAAAAAAAA zAAAAN0R3QDu7iIA////AAAAAAAAAAAAAAAAAAAAAAAAAAi3AAAAAAAAADeAAAAAAAAA
C3ADMzMzMANwAAAAAAAAAAAHMAAAAANwAAAAAAAAAACAMAd3zPfwAwgAAAAAAAAIAwd/ C3ADMzMzMANwAAAAAAAAAAAHMAAAAANwAAAAAAAAAACAMAd3zPfwAwgAAAAAAAAIAwd/
f8x/f3AwgAAAAAAAgDB0x/f3//zPAwgAAAAAAAcHfM9////8z/AwAAAAAAiwd/f3//// f8x/f3AwgAAAAAAAgDB0x/f3//zPAwgAAAAAAAcHfM9////8z/AwAAAAAAiwd/f3////
////A4AAAAAAcEx/f///////zAMAAAAAiwfM9////3///8zwOAAAAAcHf3////B///// ////A4AAAAAAcEx/f///////zAMAAAAAiwfM9////3///8zwOAAAAAcHf3////B/////
8DAAAAALB/f3///wd3d3//AwAAAABwTPf//wCQAAD/zAMAAAAAsEx/f///B////8wDAA 8DAAAAALB/f3///wd3d3//AwAAAABwTPf//wCQAAD/zAMAAAAAsEx/f///B////8wDAA
AAAHB39////wf/////AwAAAACwf39///8H/////wMAAAAIcHfM9///B////M8DgAAAAA AAAHB39////wf/////AwAAAACwf39///8H/////wMAAAAIcHfM9///B////M8DgAAAAA
sHTH///wf///xAMAAAAACHB3f3//8H////cDgAAAAAALB3zH//D//M9wMAAAAAAAgLB0 sHTH///wf///xAMAAAAACHB3f3//8H////cDgAAAAAALB3zH//D//M9wMAAAAAAAgLB0
z39///xHAwgAAAAAAAgLB3d3RHd3cDCAAAAAAAAAgLAHd0R3cAMIAAAAAAAAgAgLcAAA z39///xHAwgAAAAAAAgLB3d3RHd3cDCAAAAAAAAAgLAHd0R3cAMIAAAAAAAAgAgLcAAA
AAMwgAgAAAAACDAAAAu7t7cwAAgDgAAAAABzcIAAAAAAAAgDMwAAAAAAN7uwgAAAAAgH AAMwgAgAAAAACDAAAAu7t7cwAAgDgAAAAABzcIAAAAAAAAgDMwAAAAAAN7uwgAAAAAgH
MzMAAAAACH97tzAAAAALu3c3gAAAAAAL+7tzDABAu7f7cAAAAAAACA+3MA7EQAv/sIAA MzMAAAAACH97tzAAAAALu3c3gAAAAAAL+7tzDABAu7f7cAAAAAAACA+3MA7EQAv/sIAA
AAAAAAAIAAAAAAAAAIAAAAAA AAAAAAAIAAAAAAAAAIAAAAAA
--1618492860--2051301190--113853680-- --1618492860--2051301190--113853680--

View file

@ -1,415 +1,415 @@
import asyncore import asyncore
import unittest import unittest
import select import select
import os import os
import socket import socket
import threading import threading
import sys import sys
import time import time
from test import test_support from test import test_support
from test.test_support import TESTFN, run_unittest, unlink from test.test_support import TESTFN, run_unittest, unlink
from StringIO import StringIO from StringIO import StringIO
HOST = test_support.HOST HOST = test_support.HOST
class dummysocket: class dummysocket:
def __init__(self): def __init__(self):
self.closed = False self.closed = False
def close(self): def close(self):
self.closed = True self.closed = True
def fileno(self): def fileno(self):
return 42 return 42
class dummychannel: class dummychannel:
def __init__(self): def __init__(self):
self.socket = dummysocket() self.socket = dummysocket()
def close(self): def close(self):
self.socket.close() self.socket.close()
class exitingdummy: class exitingdummy:
def __init__(self): def __init__(self):
pass pass
def handle_read_event(self): def handle_read_event(self):
raise asyncore.ExitNow() raise asyncore.ExitNow()
handle_write_event = handle_read_event handle_write_event = handle_read_event
handle_expt_event = handle_read_event handle_expt_event = handle_read_event
class crashingdummy: class crashingdummy:
def __init__(self): def __init__(self):
self.error_handled = False self.error_handled = False
def handle_read_event(self): def handle_read_event(self):
raise Exception() raise Exception()
handle_write_event = handle_read_event handle_write_event = handle_read_event
handle_expt_event = handle_read_event handle_expt_event = handle_read_event
def handle_error(self): def handle_error(self):
self.error_handled = True self.error_handled = True
# used when testing senders; just collects what it gets until newline is sent # used when testing senders; just collects what it gets until newline is sent
def capture_server(evt, buf, serv): def capture_server(evt, buf, serv):
try: try:
serv.listen(5) serv.listen(5)
conn, addr = serv.accept() conn, addr = serv.accept()
except socket.timeout: except socket.timeout:
pass pass
else: else:
n = 200 n = 200
while n > 0: while n > 0:
r, w, e = select.select([conn], [], []) r, w, e = select.select([conn], [], [])
if r: if r:
data = conn.recv(10) data = conn.recv(10)
# keep everything except for the newline terminator # keep everything except for the newline terminator
buf.write(data.replace('\n', '')) buf.write(data.replace('\n', ''))
if '\n' in data: if '\n' in data:
break break
n -= 1 n -= 1
time.sleep(0.01) time.sleep(0.01)
conn.close() conn.close()
finally: finally:
serv.close() serv.close()
evt.set() evt.set()
class HelperFunctionTests(unittest.TestCase): class HelperFunctionTests(unittest.TestCase):
def test_readwriteexc(self): def test_readwriteexc(self):
# Check exception handling behavior of read, write and _exception # Check exception handling behavior of read, write and _exception
# check that ExitNow exceptions in the object handler method # check that ExitNow exceptions in the object handler method
# bubbles all the way up through asyncore read/write/_exception calls # bubbles all the way up through asyncore read/write/_exception calls
tr1 = exitingdummy() tr1 = exitingdummy()
self.assertRaises(asyncore.ExitNow, asyncore.read, tr1) self.assertRaises(asyncore.ExitNow, asyncore.read, tr1)
self.assertRaises(asyncore.ExitNow, asyncore.write, tr1) self.assertRaises(asyncore.ExitNow, asyncore.write, tr1)
self.assertRaises(asyncore.ExitNow, asyncore._exception, tr1) self.assertRaises(asyncore.ExitNow, asyncore._exception, tr1)
# check that an exception other than ExitNow in the object handler # check that an exception other than ExitNow in the object handler
# method causes the handle_error method to get called # method causes the handle_error method to get called
tr2 = crashingdummy() tr2 = crashingdummy()
asyncore.read(tr2) asyncore.read(tr2)
self.assertEqual(tr2.error_handled, True) self.assertEqual(tr2.error_handled, True)
tr2 = crashingdummy() tr2 = crashingdummy()
asyncore.write(tr2) asyncore.write(tr2)
self.assertEqual(tr2.error_handled, True) self.assertEqual(tr2.error_handled, True)
tr2 = crashingdummy() tr2 = crashingdummy()
asyncore._exception(tr2) asyncore._exception(tr2)
self.assertEqual(tr2.error_handled, True) self.assertEqual(tr2.error_handled, True)
# asyncore.readwrite uses constants in the select module that # asyncore.readwrite uses constants in the select module that
# are not present in Windows systems (see this thread: # are not present in Windows systems (see this thread:
# http://mail.python.org/pipermail/python-list/2001-October/109973.html) # http://mail.python.org/pipermail/python-list/2001-October/109973.html)
# These constants should be present as long as poll is available # These constants should be present as long as poll is available
if hasattr(select, 'poll'): if hasattr(select, 'poll'):
def test_readwrite(self): def test_readwrite(self):
# Check that correct methods are called by readwrite() # Check that correct methods are called by readwrite()
class testobj: class testobj:
def __init__(self): def __init__(self):
self.read = False self.read = False
self.write = False self.write = False
self.expt = False self.expt = False
def handle_read_event(self): def handle_read_event(self):
self.read = True self.read = True
def handle_write_event(self): def handle_write_event(self):
self.write = True self.write = True
def handle_expt_event(self): def handle_expt_event(self):
self.expt = True self.expt = True
def handle_error(self): def handle_error(self):
self.error_handled = True self.error_handled = True
for flag in (select.POLLIN, select.POLLPRI): for flag in (select.POLLIN, select.POLLPRI):
tobj = testobj() tobj = testobj()
self.assertEqual(tobj.read, False) self.assertEqual(tobj.read, False)
asyncore.readwrite(tobj, flag) asyncore.readwrite(tobj, flag)
self.assertEqual(tobj.read, True) self.assertEqual(tobj.read, True)
# check that ExitNow exceptions in the object handler method # check that ExitNow exceptions in the object handler method
# bubbles all the way up through asyncore readwrite call # bubbles all the way up through asyncore readwrite call
tr1 = exitingdummy() tr1 = exitingdummy()
self.assertRaises(asyncore.ExitNow, asyncore.readwrite, tr1, flag) self.assertRaises(asyncore.ExitNow, asyncore.readwrite, tr1, flag)
# check that an exception other than ExitNow in the object handler # check that an exception other than ExitNow in the object handler
# method causes the handle_error method to get called # method causes the handle_error method to get called
tr2 = crashingdummy() tr2 = crashingdummy()
asyncore.readwrite(tr2, flag) asyncore.readwrite(tr2, flag)
self.assertEqual(tr2.error_handled, True) self.assertEqual(tr2.error_handled, True)
tobj = testobj() tobj = testobj()
self.assertEqual(tobj.write, False) self.assertEqual(tobj.write, False)
asyncore.readwrite(tobj, select.POLLOUT) asyncore.readwrite(tobj, select.POLLOUT)
self.assertEqual(tobj.write, True) self.assertEqual(tobj.write, True)
# check that ExitNow exceptions in the object handler method # check that ExitNow exceptions in the object handler method
# bubbles all the way up through asyncore readwrite call # bubbles all the way up through asyncore readwrite call
tr1 = exitingdummy() tr1 = exitingdummy()
self.assertRaises(asyncore.ExitNow, asyncore.readwrite, tr1, self.assertRaises(asyncore.ExitNow, asyncore.readwrite, tr1,
select.POLLOUT) select.POLLOUT)
# check that an exception other than ExitNow in the object handler # check that an exception other than ExitNow in the object handler
# method causes the handle_error method to get called # method causes the handle_error method to get called
tr2 = crashingdummy() tr2 = crashingdummy()
asyncore.readwrite(tr2, select.POLLOUT) asyncore.readwrite(tr2, select.POLLOUT)
self.assertEqual(tr2.error_handled, True) self.assertEqual(tr2.error_handled, True)
for flag in (select.POLLERR, select.POLLHUP, select.POLLNVAL): for flag in (select.POLLERR, select.POLLHUP, select.POLLNVAL):
tobj = testobj() tobj = testobj()
self.assertEqual(tobj.expt, False) self.assertEqual(tobj.expt, False)
asyncore.readwrite(tobj, flag) asyncore.readwrite(tobj, flag)
self.assertEqual(tobj.expt, True) self.assertEqual(tobj.expt, True)
# check that ExitNow exceptions in the object handler method # check that ExitNow exceptions in the object handler method
# bubbles all the way up through asyncore readwrite calls # bubbles all the way up through asyncore readwrite calls
tr1 = exitingdummy() tr1 = exitingdummy()
self.assertRaises(asyncore.ExitNow, asyncore.readwrite, tr1, flag) self.assertRaises(asyncore.ExitNow, asyncore.readwrite, tr1, flag)
# check that an exception other than ExitNow in the object handler # check that an exception other than ExitNow in the object handler
# method causes the handle_error method to get called # method causes the handle_error method to get called
tr2 = crashingdummy() tr2 = crashingdummy()
asyncore.readwrite(tr2, flag) asyncore.readwrite(tr2, flag)
self.assertEqual(tr2.error_handled, True) self.assertEqual(tr2.error_handled, True)
def test_closeall(self): def test_closeall(self):
self.closeall_check(False) self.closeall_check(False)
def test_closeall_default(self): def test_closeall_default(self):
self.closeall_check(True) self.closeall_check(True)
def closeall_check(self, usedefault): def closeall_check(self, usedefault):
# Check that close_all() closes everything in a given map # Check that close_all() closes everything in a given map
l = [] l = []
testmap = {} testmap = {}
for i in range(10): for i in range(10):
c = dummychannel() c = dummychannel()
l.append(c) l.append(c)
self.assertEqual(c.socket.closed, False) self.assertEqual(c.socket.closed, False)
testmap[i] = c testmap[i] = c
if usedefault: if usedefault:
socketmap = asyncore.socket_map socketmap = asyncore.socket_map
try: try:
asyncore.socket_map = testmap asyncore.socket_map = testmap
asyncore.close_all() asyncore.close_all()
finally: finally:
testmap, asyncore.socket_map = asyncore.socket_map, socketmap testmap, asyncore.socket_map = asyncore.socket_map, socketmap
else: else:
asyncore.close_all(testmap) asyncore.close_all(testmap)
self.assertEqual(len(testmap), 0) self.assertEqual(len(testmap), 0)
for c in l: for c in l:
self.assertEqual(c.socket.closed, True) self.assertEqual(c.socket.closed, True)
def test_compact_traceback(self): def test_compact_traceback(self):
try: try:
raise Exception("I don't like spam!") raise Exception("I don't like spam!")
except: except:
real_t, real_v, real_tb = sys.exc_info() real_t, real_v, real_tb = sys.exc_info()
r = asyncore.compact_traceback() r = asyncore.compact_traceback()
else: else:
self.fail("Expected exception") self.fail("Expected exception")
(f, function, line), t, v, info = r (f, function, line), t, v, info = r
self.assertEqual(os.path.split(f)[-1], 'test_asyncore.py') self.assertEqual(os.path.split(f)[-1], 'test_asyncore.py')
self.assertEqual(function, 'test_compact_traceback') self.assertEqual(function, 'test_compact_traceback')
self.assertEqual(t, real_t) self.assertEqual(t, real_t)
self.assertEqual(v, real_v) self.assertEqual(v, real_v)
self.assertEqual(info, '[%s|%s|%s]' % (f, function, line)) self.assertEqual(info, '[%s|%s|%s]' % (f, function, line))
class DispatcherTests(unittest.TestCase): class DispatcherTests(unittest.TestCase):
def setUp(self): def setUp(self):
pass pass
def tearDown(self): def tearDown(self):
asyncore.close_all() asyncore.close_all()
def test_basic(self): def test_basic(self):
d = asyncore.dispatcher() d = asyncore.dispatcher()
self.assertEqual(d.readable(), True) self.assertEqual(d.readable(), True)
self.assertEqual(d.writable(), True) self.assertEqual(d.writable(), True)
def test_repr(self): def test_repr(self):
d = asyncore.dispatcher() d = asyncore.dispatcher()
self.assertEqual(repr(d), '<asyncore.dispatcher at %#x>' % id(d)) self.assertEqual(repr(d), '<asyncore.dispatcher at %#x>' % id(d))
def test_log(self): def test_log(self):
d = asyncore.dispatcher() d = asyncore.dispatcher()
# capture output of dispatcher.log() (to stderr) # capture output of dispatcher.log() (to stderr)
fp = StringIO() fp = StringIO()
stderr = sys.stderr stderr = sys.stderr
l1 = "Lovely spam! Wonderful spam!" l1 = "Lovely spam! Wonderful spam!"
l2 = "I don't like spam!" l2 = "I don't like spam!"
try: try:
sys.stderr = fp sys.stderr = fp
d.log(l1) d.log(l1)
d.log(l2) d.log(l2)
finally: finally:
sys.stderr = stderr sys.stderr = stderr
lines = fp.getvalue().splitlines() lines = fp.getvalue().splitlines()
self.assertEquals(lines, ['log: %s' % l1, 'log: %s' % l2]) self.assertEquals(lines, ['log: %s' % l1, 'log: %s' % l2])
def test_log_info(self): def test_log_info(self):
d = asyncore.dispatcher() d = asyncore.dispatcher()
# capture output of dispatcher.log_info() (to stdout via print) # capture output of dispatcher.log_info() (to stdout via print)
fp = StringIO() fp = StringIO()
stdout = sys.stdout stdout = sys.stdout
l1 = "Have you got anything without spam?" l1 = "Have you got anything without spam?"
l2 = "Why can't she have egg bacon spam and sausage?" l2 = "Why can't she have egg bacon spam and sausage?"
l3 = "THAT'S got spam in it!" l3 = "THAT'S got spam in it!"
try: try:
sys.stdout = fp sys.stdout = fp
d.log_info(l1, 'EGGS') d.log_info(l1, 'EGGS')
d.log_info(l2) d.log_info(l2)
d.log_info(l3, 'SPAM') d.log_info(l3, 'SPAM')
finally: finally:
sys.stdout = stdout sys.stdout = stdout
lines = fp.getvalue().splitlines() lines = fp.getvalue().splitlines()
if __debug__: if __debug__:
expected = ['EGGS: %s' % l1, 'info: %s' % l2, 'SPAM: %s' % l3] expected = ['EGGS: %s' % l1, 'info: %s' % l2, 'SPAM: %s' % l3]
else: else:
expected = ['EGGS: %s' % l1, 'SPAM: %s' % l3] expected = ['EGGS: %s' % l1, 'SPAM: %s' % l3]
self.assertEquals(lines, expected) self.assertEquals(lines, expected)
def test_unhandled(self): def test_unhandled(self):
d = asyncore.dispatcher() d = asyncore.dispatcher()
# capture output of dispatcher.log_info() (to stdout via print) # capture output of dispatcher.log_info() (to stdout via print)
fp = StringIO() fp = StringIO()
stdout = sys.stdout stdout = sys.stdout
try: try:
sys.stdout = fp sys.stdout = fp
d.handle_expt() d.handle_expt()
d.handle_read() d.handle_read()
d.handle_write() d.handle_write()
d.handle_connect() d.handle_connect()
d.handle_accept() d.handle_accept()
finally: finally:
sys.stdout = stdout sys.stdout = stdout
lines = fp.getvalue().splitlines() lines = fp.getvalue().splitlines()
expected = ['warning: unhandled exception', expected = ['warning: unhandled exception',
'warning: unhandled read event', 'warning: unhandled read event',
'warning: unhandled write event', 'warning: unhandled write event',
'warning: unhandled connect event', 'warning: unhandled connect event',
'warning: unhandled accept event'] 'warning: unhandled accept event']
self.assertEquals(lines, expected) self.assertEquals(lines, expected)
class dispatcherwithsend_noread(asyncore.dispatcher_with_send): class dispatcherwithsend_noread(asyncore.dispatcher_with_send):
def readable(self): def readable(self):
return False return False
def handle_connect(self): def handle_connect(self):
pass pass
class DispatcherWithSendTests(unittest.TestCase): class DispatcherWithSendTests(unittest.TestCase):
usepoll = False usepoll = False
def setUp(self): def setUp(self):
pass pass
def tearDown(self): def tearDown(self):
asyncore.close_all() asyncore.close_all()
def test_send(self): def test_send(self):
self.evt = threading.Event() self.evt = threading.Event()
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.sock.settimeout(3) self.sock.settimeout(3)
self.port = test_support.bind_port(self.sock) self.port = test_support.bind_port(self.sock)
cap = StringIO() cap = StringIO()
args = (self.evt, cap, self.sock) args = (self.evt, cap, self.sock)
threading.Thread(target=capture_server, args=args).start() threading.Thread(target=capture_server, args=args).start()
# wait a little longer for the server to initialize (it sometimes # wait a little longer for the server to initialize (it sometimes
# refuses connections on slow machines without this wait) # refuses connections on slow machines without this wait)
time.sleep(0.2) time.sleep(0.2)
data = "Suppose there isn't a 16-ton weight?" data = "Suppose there isn't a 16-ton weight?"
d = dispatcherwithsend_noread() d = dispatcherwithsend_noread()
d.create_socket(socket.AF_INET, socket.SOCK_STREAM) d.create_socket(socket.AF_INET, socket.SOCK_STREAM)
d.connect((HOST, self.port)) d.connect((HOST, self.port))
# give time for socket to connect # give time for socket to connect
time.sleep(0.1) time.sleep(0.1)
d.send(data) d.send(data)
d.send(data) d.send(data)
d.send('\n') d.send('\n')
n = 1000 n = 1000
while d.out_buffer and n > 0: while d.out_buffer and n > 0:
asyncore.poll() asyncore.poll()
n -= 1 n -= 1
self.evt.wait() self.evt.wait()
self.assertEqual(cap.getvalue(), data*2) self.assertEqual(cap.getvalue(), data*2)
class DispatcherWithSendTests_UsePoll(DispatcherWithSendTests): class DispatcherWithSendTests_UsePoll(DispatcherWithSendTests):
usepoll = True usepoll = True
if hasattr(asyncore, 'file_wrapper'): if hasattr(asyncore, 'file_wrapper'):
class FileWrapperTest(unittest.TestCase): class FileWrapperTest(unittest.TestCase):
def setUp(self): def setUp(self):
self.d = "It's not dead, it's sleeping!" self.d = "It's not dead, it's sleeping!"
file(TESTFN, 'w').write(self.d) file(TESTFN, 'w').write(self.d)
def tearDown(self): def tearDown(self):
unlink(TESTFN) unlink(TESTFN)
def test_recv(self): def test_recv(self):
fd = os.open(TESTFN, os.O_RDONLY) fd = os.open(TESTFN, os.O_RDONLY)
w = asyncore.file_wrapper(fd) w = asyncore.file_wrapper(fd)
self.assertNotEqual(w.fd, fd) self.assertNotEqual(w.fd, fd)
self.assertNotEqual(w.fileno(), fd) self.assertNotEqual(w.fileno(), fd)
self.assertEqual(w.recv(13), "It's not dead") self.assertEqual(w.recv(13), "It's not dead")
self.assertEqual(w.read(6), ", it's") self.assertEqual(w.read(6), ", it's")
w.close() w.close()
self.assertRaises(OSError, w.read, 1) self.assertRaises(OSError, w.read, 1)
def test_send(self): def test_send(self):
d1 = "Come again?" d1 = "Come again?"
d2 = "I want to buy some cheese." d2 = "I want to buy some cheese."
fd = os.open(TESTFN, os.O_WRONLY | os.O_APPEND) fd = os.open(TESTFN, os.O_WRONLY | os.O_APPEND)
w = asyncore.file_wrapper(fd) w = asyncore.file_wrapper(fd)
w.write(d1) w.write(d1)
w.send(d2) w.send(d2)
w.close() w.close()
self.assertEqual(file(TESTFN).read(), self.d + d1 + d2) self.assertEqual(file(TESTFN).read(), self.d + d1 + d2)
def test_main(): def test_main():
tests = [HelperFunctionTests, DispatcherTests, DispatcherWithSendTests, tests = [HelperFunctionTests, DispatcherTests, DispatcherWithSendTests,
DispatcherWithSendTests_UsePoll] DispatcherWithSendTests_UsePoll]
if hasattr(asyncore, 'file_wrapper'): if hasattr(asyncore, 'file_wrapper'):
tests.append(FileWrapperTest) tests.append(FileWrapperTest)
run_unittest(*tests) run_unittest(*tests)
if __name__ == "__main__": if __name__ == "__main__":
test_main() test_main()

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,270 +1,270 @@
<?xml version="1.0" encoding="Windows-1252"?> <?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject <VisualStudioProject
ProjectType="Visual C++" ProjectType="Visual C++"
Version="8.00" Version="8.00"
Name="bdist_wininst" Name="bdist_wininst"
ProjectGUID="{EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}" ProjectGUID="{EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}"
RootNamespace="wininst" RootNamespace="wininst"
TargetFrameworkVersion="131072" TargetFrameworkVersion="131072"
> >
<Platforms> <Platforms>
<Platform <Platform
Name="Win32" Name="Win32"
/> />
<Platform <Platform
Name="x64" Name="x64"
/> />
</Platforms> </Platforms>
<ToolFiles> <ToolFiles>
</ToolFiles> </ToolFiles>
<Configurations> <Configurations>
<Configuration <Configuration
Name="Release|Win32" Name="Release|Win32"
OutputDirectory="..\..\lib\distutils\command" OutputDirectory="..\..\lib\distutils\command"
ConfigurationType="1" ConfigurationType="1"
InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops" InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops"
UseOfMFC="0" UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false" ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="0" CharacterSet="0"
> >
<Tool <Tool
Name="VCPreBuildEventTool" Name="VCPreBuildEventTool"
/> />
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
/> />
<Tool <Tool
Name="VCXMLDataGeneratorTool" Name="VCXMLDataGeneratorTool"
/> />
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool" Name="VCWebServiceProxyGeneratorTool"
/> />
<Tool <Tool
Name="VCMIDLTool" Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG" PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="true" MkTypLibCompatible="true"
SuppressStartupBanner="true" SuppressStartupBanner="true"
TargetEnvironment="1" TargetEnvironment="1"
TypeLibraryName=".\..\..\lib\distutils\command\wininst.tlb" TypeLibraryName=".\..\..\lib\distutils\command\wininst.tlb"
HeaderFileName="" HeaderFileName=""
/> />
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="1" Optimization="1"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\PC\bdist_wininst;..\..\Include;..\..\Modules\zlib" AdditionalIncludeDirectories="..\..\PC\bdist_wininst;..\..\Include;..\..\Modules\zlib"
PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE"
StringPooling="true" StringPooling="true"
RuntimeLibrary="2" RuntimeLibrary="2"
EnableFunctionLevelLinking="true" EnableFunctionLevelLinking="true"
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="true" SuppressStartupBanner="true"
/> />
<Tool <Tool
Name="VCManagedResourceCompilerTool" Name="VCManagedResourceCompilerTool"
/> />
<Tool <Tool
Name="VCResourceCompilerTool" Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG" PreprocessorDefinitions="NDEBUG"
Culture="0" Culture="0"
AdditionalIncludeDirectories="..\..\PC;..\..\PC\bdist_wininst;..\..\Include" AdditionalIncludeDirectories="..\..\PC;..\..\PC\bdist_wininst;..\..\Include"
/> />
<Tool <Tool
Name="VCPreLinkEventTool" Name="VCPreLinkEventTool"
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
AdditionalDependencies="comctl32.lib imagehlp.lib" AdditionalDependencies="comctl32.lib imagehlp.lib"
OutputFile="..\..\lib\distutils\command\wininst-8.0.exe" OutputFile="..\..\lib\distutils\command\wininst-8.0.exe"
LinkIncremental="1" LinkIncremental="1"
SuppressStartupBanner="true" SuppressStartupBanner="true"
IgnoreDefaultLibraryNames="LIBC" IgnoreDefaultLibraryNames="LIBC"
ProgramDatabaseFile="..\..\lib\distutils\command\wininst-8.0.pdb" ProgramDatabaseFile="..\..\lib\distutils\command\wininst-8.0.pdb"
SubSystem="2" SubSystem="2"
RandomizedBaseAddress="1" RandomizedBaseAddress="1"
DataExecutionPrevention="0" DataExecutionPrevention="0"
TargetMachine="1" TargetMachine="1"
/> />
<Tool <Tool
Name="VCALinkTool" Name="VCALinkTool"
/> />
<Tool <Tool
Name="VCManifestTool" Name="VCManifestTool"
/> />
<Tool <Tool
Name="VCXDCMakeTool" Name="VCXDCMakeTool"
/> />
<Tool <Tool
Name="VCBscMakeTool" Name="VCBscMakeTool"
/> />
<Tool <Tool
Name="VCFxCopTool" Name="VCFxCopTool"
/> />
<Tool <Tool
Name="VCAppVerifierTool" Name="VCAppVerifierTool"
/> />
<Tool <Tool
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
/> />
</Configuration> </Configuration>
<Configuration <Configuration
Name="Release|x64" Name="Release|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)" OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1" ConfigurationType="1"
InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops" InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops"
UseOfMFC="0" UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false" ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="0" CharacterSet="0"
> >
<Tool <Tool
Name="VCPreBuildEventTool" Name="VCPreBuildEventTool"
/> />
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
/> />
<Tool <Tool
Name="VCXMLDataGeneratorTool" Name="VCXMLDataGeneratorTool"
/> />
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool" Name="VCWebServiceProxyGeneratorTool"
/> />
<Tool <Tool
Name="VCMIDLTool" Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG" PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="true" MkTypLibCompatible="true"
SuppressStartupBanner="true" SuppressStartupBanner="true"
TargetEnvironment="3" TargetEnvironment="3"
TypeLibraryName=".\..\..\lib\distutils\command\wininst.tlb" TypeLibraryName=".\..\..\lib\distutils\command\wininst.tlb"
HeaderFileName="" HeaderFileName=""
/> />
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="1" Optimization="1"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\PC\bdist_wininst;..\..\Include;..\..\Modules\zlib" AdditionalIncludeDirectories="..\..\PC\bdist_wininst;..\..\Include;..\..\Modules\zlib"
PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE"
StringPooling="true" StringPooling="true"
RuntimeLibrary="2" RuntimeLibrary="2"
EnableFunctionLevelLinking="true" EnableFunctionLevelLinking="true"
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="true" SuppressStartupBanner="true"
/> />
<Tool <Tool
Name="VCManagedResourceCompilerTool" Name="VCManagedResourceCompilerTool"
/> />
<Tool <Tool
Name="VCResourceCompilerTool" Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG" PreprocessorDefinitions="NDEBUG"
Culture="0" Culture="0"
AdditionalIncludeDirectories="..\..\PC;..\..\PC\bdist_wininst;..\..\Include" AdditionalIncludeDirectories="..\..\PC;..\..\PC\bdist_wininst;..\..\Include"
/> />
<Tool <Tool
Name="VCPreLinkEventTool" Name="VCPreLinkEventTool"
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
AdditionalDependencies="comctl32.lib imagehlp.lib" AdditionalDependencies="comctl32.lib imagehlp.lib"
OutputFile="..\..\lib\distutils\command\wininst-8.0-amd64.exe" OutputFile="..\..\lib\distutils\command\wininst-8.0-amd64.exe"
LinkIncremental="1" LinkIncremental="1"
SuppressStartupBanner="true" SuppressStartupBanner="true"
IgnoreDefaultLibraryNames="LIBC" IgnoreDefaultLibraryNames="LIBC"
ProgramDatabaseFile="..\..\lib\distutils\command\wininst-8.0-amd64.pdb" ProgramDatabaseFile="..\..\lib\distutils\command\wininst-8.0-amd64.pdb"
SubSystem="2" SubSystem="2"
RandomizedBaseAddress="1" RandomizedBaseAddress="1"
DataExecutionPrevention="0" DataExecutionPrevention="0"
TargetMachine="17" TargetMachine="17"
/> />
<Tool <Tool
Name="VCALinkTool" Name="VCALinkTool"
/> />
<Tool <Tool
Name="VCManifestTool" Name="VCManifestTool"
/> />
<Tool <Tool
Name="VCXDCMakeTool" Name="VCXDCMakeTool"
/> />
<Tool <Tool
Name="VCBscMakeTool" Name="VCBscMakeTool"
/> />
<Tool <Tool
Name="VCFxCopTool" Name="VCFxCopTool"
/> />
<Tool <Tool
Name="VCAppVerifierTool" Name="VCAppVerifierTool"
/> />
<Tool <Tool
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
/> />
</Configuration> </Configuration>
</Configurations> </Configurations>
<References> <References>
</References> </References>
<Files> <Files>
<Filter <Filter
Name="Source Files" Name="Source Files"
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
> >
<File <File
RelativePath="..\..\PC\bdist_wininst\extract.c" RelativePath="..\..\PC\bdist_wininst\extract.c"
> >
</File> </File>
<File <File
RelativePath="..\..\PC\bdist_wininst\install.c" RelativePath="..\..\PC\bdist_wininst\install.c"
> >
</File> </File>
<Filter <Filter
Name="zlib" Name="zlib"
> >
<File <File
RelativePath="..\..\Modules\zlib\adler32.c" RelativePath="..\..\Modules\zlib\adler32.c"
> >
</File> </File>
<File <File
RelativePath="..\..\Modules\zlib\crc32.c" RelativePath="..\..\Modules\zlib\crc32.c"
> >
</File> </File>
<File <File
RelativePath="..\..\Modules\zlib\inffast.c" RelativePath="..\..\Modules\zlib\inffast.c"
> >
</File> </File>
<File <File
RelativePath="..\..\Modules\zlib\inflate.c" RelativePath="..\..\Modules\zlib\inflate.c"
> >
</File> </File>
<File <File
RelativePath="..\..\Modules\zlib\inftrees.c" RelativePath="..\..\Modules\zlib\inftrees.c"
> >
</File> </File>
<File <File
RelativePath="..\..\Modules\zlib\zutil.c" RelativePath="..\..\Modules\zlib\zutil.c"
> >
</File> </File>
</Filter> </Filter>
</Filter> </Filter>
<Filter <Filter
Name="Header Files" Name="Header Files"
Filter="h;hpp;hxx;hm;inl" Filter="h;hpp;hxx;hm;inl"
> >
<File <File
RelativePath="..\..\PC\bdist_wininst\archive.h" RelativePath="..\..\PC\bdist_wininst\archive.h"
> >
</File> </File>
</Filter> </Filter>
<Filter <Filter
Name="Resource Files" Name="Resource Files"
Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
> >
<File <File
RelativePath="..\..\PC\bdist_wininst\install.rc" RelativePath="..\..\PC\bdist_wininst\install.rc"
> >
</File> </File>
<File <File
RelativePath="..\..\PC\bdist_wininst\PythonPowered.bmp" RelativePath="..\..\PC\bdist_wininst\PythonPowered.bmp"
> >
</File> </File>
</Filter> </Filter>
</Files> </Files>
<Globals> <Globals>
</Globals> </Globals>
</VisualStudioProject> </VisualStudioProject>

File diff suppressed because it is too large Load diff

View file

@ -1,178 +1,178 @@
/* /*
* Helper program for killing lingering python[_d].exe processes before * Helper program for killing lingering python[_d].exe processes before
* building, thus attempting to avoid build failures due to files being * building, thus attempting to avoid build failures due to files being
* locked. * locked.
*/ */
#include <windows.h> #include <windows.h>
#include <wchar.h> #include <wchar.h>
#include <tlhelp32.h> #include <tlhelp32.h>
#include <stdio.h> #include <stdio.h>
#pragma comment(lib, "psapi") #pragma comment(lib, "psapi")
#ifdef _DEBUG #ifdef _DEBUG
#define PYTHON_EXE (L"python_d.exe") #define PYTHON_EXE (L"python_d.exe")
#define PYTHON_EXE_LEN (12) #define PYTHON_EXE_LEN (12)
#define KILL_PYTHON_EXE (L"kill_python_d.exe") #define KILL_PYTHON_EXE (L"kill_python_d.exe")
#define KILL_PYTHON_EXE_LEN (17) #define KILL_PYTHON_EXE_LEN (17)
#else #else
#define PYTHON_EXE (L"python.exe") #define PYTHON_EXE (L"python.exe")
#define PYTHON_EXE_LEN (10) #define PYTHON_EXE_LEN (10)
#define KILL_PYTHON_EXE (L"kill_python.exe") #define KILL_PYTHON_EXE (L"kill_python.exe")
#define KILL_PYTHON_EXE_LEN (15) #define KILL_PYTHON_EXE_LEN (15)
#endif #endif
int int
main(int argc, char **argv) main(int argc, char **argv)
{ {
HANDLE hp, hsp, hsm; /* process, snapshot processes, snapshot modules */ HANDLE hp, hsp, hsm; /* process, snapshot processes, snapshot modules */
DWORD dac, our_pid; DWORD dac, our_pid;
size_t len; size_t len;
wchar_t path[MAX_PATH+1]; wchar_t path[MAX_PATH+1];
MODULEENTRY32W me; MODULEENTRY32W me;
PROCESSENTRY32W pe; PROCESSENTRY32W pe;
me.dwSize = sizeof(MODULEENTRY32W); me.dwSize = sizeof(MODULEENTRY32W);
pe.dwSize = sizeof(PROCESSENTRY32W); pe.dwSize = sizeof(PROCESSENTRY32W);
memset(path, 0, MAX_PATH+1); memset(path, 0, MAX_PATH+1);
our_pid = GetCurrentProcessId(); our_pid = GetCurrentProcessId();
hsm = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, our_pid); hsm = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, our_pid);
if (hsm == INVALID_HANDLE_VALUE) { if (hsm == INVALID_HANDLE_VALUE) {
printf("CreateToolhelp32Snapshot[1] failed: %d\n", GetLastError()); printf("CreateToolhelp32Snapshot[1] failed: %d\n", GetLastError());
return 1; return 1;
} }
if (!Module32FirstW(hsm, &me)) { if (!Module32FirstW(hsm, &me)) {
printf("Module32FirstW[1] failed: %d\n", GetLastError()); printf("Module32FirstW[1] failed: %d\n", GetLastError());
CloseHandle(hsm); CloseHandle(hsm);
return 1; return 1;
} }
/* /*
* Enumerate over the modules for the current process in order to find * Enumerate over the modules for the current process in order to find
* kill_process[_d].exe, then take a note of the directory it lives in. * kill_process[_d].exe, then take a note of the directory it lives in.
*/ */
do { do {
if (_wcsnicmp(me.szModule, KILL_PYTHON_EXE, KILL_PYTHON_EXE_LEN)) if (_wcsnicmp(me.szModule, KILL_PYTHON_EXE, KILL_PYTHON_EXE_LEN))
continue; continue;
len = wcsnlen_s(me.szExePath, MAX_PATH) - KILL_PYTHON_EXE_LEN; len = wcsnlen_s(me.szExePath, MAX_PATH) - KILL_PYTHON_EXE_LEN;
wcsncpy_s(path, MAX_PATH+1, me.szExePath, len); wcsncpy_s(path, MAX_PATH+1, me.szExePath, len);
break; break;
} while (Module32NextW(hsm, &me)); } while (Module32NextW(hsm, &me));
CloseHandle(hsm); CloseHandle(hsm);
if (path == NULL) { if (path == NULL) {
printf("failed to discern directory of running process\n"); printf("failed to discern directory of running process\n");
return 1; return 1;
} }
/* /*
* Take a snapshot of system processes. Enumerate over the snapshot, * Take a snapshot of system processes. Enumerate over the snapshot,
* looking for python processes. When we find one, verify it lives * looking for python processes. When we find one, verify it lives
* in the same directory we live in. If it does, kill it. If we're * in the same directory we live in. If it does, kill it. If we're
* unable to kill it, treat this as a fatal error and return 1. * unable to kill it, treat this as a fatal error and return 1.
* *
* The rationale behind this is that we're called at the start of the * The rationale behind this is that we're called at the start of the
* build process on the basis that we'll take care of killing any * build process on the basis that we'll take care of killing any
* running instances, such that the build won't encounter permission * running instances, such that the build won't encounter permission
* denied errors during linking. If we can't kill one of the processes, * denied errors during linking. If we can't kill one of the processes,
* we can't provide this assurance, and the build shouldn't start. * we can't provide this assurance, and the build shouldn't start.
*/ */
hsp = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); hsp = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hsp == INVALID_HANDLE_VALUE) { if (hsp == INVALID_HANDLE_VALUE) {
printf("CreateToolhelp32Snapshot[2] failed: %d\n", GetLastError()); printf("CreateToolhelp32Snapshot[2] failed: %d\n", GetLastError());
return 1; return 1;
} }
if (!Process32FirstW(hsp, &pe)) { if (!Process32FirstW(hsp, &pe)) {
printf("Process32FirstW failed: %d\n", GetLastError()); printf("Process32FirstW failed: %d\n", GetLastError());
CloseHandle(hsp); CloseHandle(hsp);
return 1; return 1;
} }
dac = PROCESS_QUERY_INFORMATION | PROCESS_VM_READ | PROCESS_TERMINATE; dac = PROCESS_QUERY_INFORMATION | PROCESS_VM_READ | PROCESS_TERMINATE;
do { do {
/* /*
* XXX TODO: if we really wanted to be fancy, we could check the * XXX TODO: if we really wanted to be fancy, we could check the
* modules for all processes (not just the python[_d].exe ones) * modules for all processes (not just the python[_d].exe ones)
* and see if any of our DLLs are loaded (i.e. python30[_d].dll), * and see if any of our DLLs are loaded (i.e. python30[_d].dll),
* as that would also inhibit our ability to rebuild the solution. * as that would also inhibit our ability to rebuild the solution.
* Not worth loosing sleep over though; for now, a simple check * Not worth loosing sleep over though; for now, a simple check
* for just the python executable should be sufficient. * for just the python executable should be sufficient.
*/ */
if (_wcsnicmp(pe.szExeFile, PYTHON_EXE, PYTHON_EXE_LEN)) if (_wcsnicmp(pe.szExeFile, PYTHON_EXE, PYTHON_EXE_LEN))
/* This isn't a python process. */ /* This isn't a python process. */
continue; continue;
/* It's a python process, so figure out which directory it's in... */ /* It's a python process, so figure out which directory it's in... */
hsm = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pe.th32ProcessID); hsm = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pe.th32ProcessID);
if (hsm == INVALID_HANDLE_VALUE) if (hsm == INVALID_HANDLE_VALUE)
/* /*
* If our module snapshot fails (which will happen if we don't own * If our module snapshot fails (which will happen if we don't own
* the process), just ignore it and continue. (It seems different * the process), just ignore it and continue. (It seems different
* versions of Windows return different values for GetLastError() * versions of Windows return different values for GetLastError()
* in this situation; it's easier to just ignore it and move on vs. * in this situation; it's easier to just ignore it and move on vs.
* stopping the build for what could be a false positive.) * stopping the build for what could be a false positive.)
*/ */
continue; continue;
if (!Module32FirstW(hsm, &me)) { if (!Module32FirstW(hsm, &me)) {
printf("Module32FirstW[2] failed: %d\n", GetLastError()); printf("Module32FirstW[2] failed: %d\n", GetLastError());
CloseHandle(hsp); CloseHandle(hsp);
CloseHandle(hsm); CloseHandle(hsm);
return 1; return 1;
} }
do { do {
if (_wcsnicmp(me.szModule, PYTHON_EXE, PYTHON_EXE_LEN)) if (_wcsnicmp(me.szModule, PYTHON_EXE, PYTHON_EXE_LEN))
/* Wrong module, we're looking for python[_d].exe... */ /* Wrong module, we're looking for python[_d].exe... */
continue; continue;
if (_wcsnicmp(path, me.szExePath, len)) if (_wcsnicmp(path, me.szExePath, len))
/* Process doesn't live in our directory. */ /* Process doesn't live in our directory. */
break; break;
/* Python process residing in the right directory, kill it! */ /* Python process residing in the right directory, kill it! */
hp = OpenProcess(dac, FALSE, pe.th32ProcessID); hp = OpenProcess(dac, FALSE, pe.th32ProcessID);
if (!hp) { if (!hp) {
printf("OpenProcess failed: %d\n", GetLastError()); printf("OpenProcess failed: %d\n", GetLastError());
CloseHandle(hsp); CloseHandle(hsp);
CloseHandle(hsm); CloseHandle(hsm);
return 1; return 1;
} }
if (!TerminateProcess(hp, 1)) { if (!TerminateProcess(hp, 1)) {
printf("TerminateProcess failed: %d\n", GetLastError()); printf("TerminateProcess failed: %d\n", GetLastError());
CloseHandle(hsp); CloseHandle(hsp);
CloseHandle(hsm); CloseHandle(hsm);
CloseHandle(hp); CloseHandle(hp);
return 1; return 1;
} }
CloseHandle(hp); CloseHandle(hp);
break; break;
} while (Module32NextW(hsm, &me)); } while (Module32NextW(hsm, &me));
CloseHandle(hsm); CloseHandle(hsm);
} while (Process32NextW(hsp, &pe)); } while (Process32NextW(hsp, &pe));
CloseHandle(hsp); CloseHandle(hsp);
return 0; return 0;
} }
/* vi: set ts=8 sw=4 sts=4 expandtab */ /* vi: set ts=8 sw=4 sts=4 expandtab */

View file

@ -1,279 +1,279 @@
<?xml version="1.0" encoding="Windows-1252"?> <?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject <VisualStudioProject
ProjectType="Visual C++" ProjectType="Visual C++"
Version="8.00" Version="8.00"
Name="kill_python" Name="kill_python"
ProjectGUID="{6DE10744-E396-40A5-B4E2-1B69AA7C8D31}" ProjectGUID="{6DE10744-E396-40A5-B4E2-1B69AA7C8D31}"
RootNamespace="kill_python" RootNamespace="kill_python"
Keyword="Win32Proj" Keyword="Win32Proj"
TargetFrameworkVersion="196613" TargetFrameworkVersion="196613"
> >
<Platforms> <Platforms>
<Platform <Platform
Name="Win32" Name="Win32"
/> />
<Platform <Platform
Name="x64" Name="x64"
/> />
</Platforms> </Platforms>
<ToolFiles> <ToolFiles>
</ToolFiles> </ToolFiles>
<Configurations> <Configurations>
<Configuration <Configuration
Name="Debug|Win32" Name="Debug|Win32"
ConfigurationType="1" ConfigurationType="1"
InheritedPropertySheets=".\pyproject.vsprops;.\debug.vsprops" InheritedPropertySheets=".\pyproject.vsprops;.\debug.vsprops"
CharacterSet="0" CharacterSet="0"
> >
<Tool <Tool
Name="VCPreBuildEventTool" Name="VCPreBuildEventTool"
/> />
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
/> />
<Tool <Tool
Name="VCXMLDataGeneratorTool" Name="VCXMLDataGeneratorTool"
/> />
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool" Name="VCWebServiceProxyGeneratorTool"
/> />
<Tool <Tool
Name="VCMIDLTool" Name="VCMIDLTool"
/> />
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
/> />
<Tool <Tool
Name="VCManagedResourceCompilerTool" Name="VCManagedResourceCompilerTool"
/> />
<Tool <Tool
Name="VCResourceCompilerTool" Name="VCResourceCompilerTool"
/> />
<Tool <Tool
Name="VCPreLinkEventTool" Name="VCPreLinkEventTool"
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
OutputFile="$(OutDir)\$(ProjectName)_d.exe" OutputFile="$(OutDir)\$(ProjectName)_d.exe"
SubSystem="1" SubSystem="1"
/> />
<Tool <Tool
Name="VCALinkTool" Name="VCALinkTool"
/> />
<Tool <Tool
Name="VCManifestTool" Name="VCManifestTool"
/> />
<Tool <Tool
Name="VCXDCMakeTool" Name="VCXDCMakeTool"
/> />
<Tool <Tool
Name="VCBscMakeTool" Name="VCBscMakeTool"
/> />
<Tool <Tool
Name="VCFxCopTool" Name="VCFxCopTool"
/> />
<Tool <Tool
Name="VCAppVerifierTool" Name="VCAppVerifierTool"
/> />
<Tool <Tool
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
/> />
</Configuration> </Configuration>
<Configuration <Configuration
Name="Debug|x64" Name="Debug|x64"
ConfigurationType="1" ConfigurationType="1"
InheritedPropertySheets=".\pyproject.vsprops;.\debug.vsprops;.\x64.vsprops" InheritedPropertySheets=".\pyproject.vsprops;.\debug.vsprops;.\x64.vsprops"
CharacterSet="0" CharacterSet="0"
> >
<Tool <Tool
Name="VCPreBuildEventTool" Name="VCPreBuildEventTool"
/> />
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
/> />
<Tool <Tool
Name="VCXMLDataGeneratorTool" Name="VCXMLDataGeneratorTool"
/> />
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool" Name="VCWebServiceProxyGeneratorTool"
/> />
<Tool <Tool
Name="VCMIDLTool" Name="VCMIDLTool"
TargetEnvironment="3" TargetEnvironment="3"
/> />
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
/> />
<Tool <Tool
Name="VCManagedResourceCompilerTool" Name="VCManagedResourceCompilerTool"
/> />
<Tool <Tool
Name="VCResourceCompilerTool" Name="VCResourceCompilerTool"
/> />
<Tool <Tool
Name="VCPreLinkEventTool" Name="VCPreLinkEventTool"
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
OutputFile="$(OutDir)\$(ProjectName)_d.exe" OutputFile="$(OutDir)\$(ProjectName)_d.exe"
SubSystem="1" SubSystem="1"
/> />
<Tool <Tool
Name="VCALinkTool" Name="VCALinkTool"
/> />
<Tool <Tool
Name="VCManifestTool" Name="VCManifestTool"
/> />
<Tool <Tool
Name="VCXDCMakeTool" Name="VCXDCMakeTool"
/> />
<Tool <Tool
Name="VCBscMakeTool" Name="VCBscMakeTool"
/> />
<Tool <Tool
Name="VCFxCopTool" Name="VCFxCopTool"
/> />
<Tool <Tool
Name="VCAppVerifierTool" Name="VCAppVerifierTool"
/> />
<Tool <Tool
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
/> />
</Configuration> </Configuration>
<Configuration <Configuration
Name="Release|Win32" Name="Release|Win32"
ConfigurationType="1" ConfigurationType="1"
InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops" InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops"
CharacterSet="0" CharacterSet="0"
WholeProgramOptimization="1" WholeProgramOptimization="1"
> >
<Tool <Tool
Name="VCPreBuildEventTool" Name="VCPreBuildEventTool"
/> />
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
/> />
<Tool <Tool
Name="VCXMLDataGeneratorTool" Name="VCXMLDataGeneratorTool"
/> />
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool" Name="VCWebServiceProxyGeneratorTool"
/> />
<Tool <Tool
Name="VCMIDLTool" Name="VCMIDLTool"
/> />
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
/> />
<Tool <Tool
Name="VCManagedResourceCompilerTool" Name="VCManagedResourceCompilerTool"
/> />
<Tool <Tool
Name="VCResourceCompilerTool" Name="VCResourceCompilerTool"
/> />
<Tool <Tool
Name="VCPreLinkEventTool" Name="VCPreLinkEventTool"
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
SubSystem="1" SubSystem="1"
/> />
<Tool <Tool
Name="VCALinkTool" Name="VCALinkTool"
/> />
<Tool <Tool
Name="VCManifestTool" Name="VCManifestTool"
/> />
<Tool <Tool
Name="VCXDCMakeTool" Name="VCXDCMakeTool"
/> />
<Tool <Tool
Name="VCBscMakeTool" Name="VCBscMakeTool"
/> />
<Tool <Tool
Name="VCFxCopTool" Name="VCFxCopTool"
/> />
<Tool <Tool
Name="VCAppVerifierTool" Name="VCAppVerifierTool"
/> />
<Tool <Tool
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
/> />
</Configuration> </Configuration>
<Configuration <Configuration
Name="Release|x64" Name="Release|x64"
ConfigurationType="1" ConfigurationType="1"
InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops;.\x64.vsprops" InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops;.\x64.vsprops"
CharacterSet="0" CharacterSet="0"
WholeProgramOptimization="1" WholeProgramOptimization="1"
> >
<Tool <Tool
Name="VCPreBuildEventTool" Name="VCPreBuildEventTool"
/> />
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
/> />
<Tool <Tool
Name="VCXMLDataGeneratorTool" Name="VCXMLDataGeneratorTool"
/> />
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool" Name="VCWebServiceProxyGeneratorTool"
/> />
<Tool <Tool
Name="VCMIDLTool" Name="VCMIDLTool"
TargetEnvironment="3" TargetEnvironment="3"
/> />
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
/> />
<Tool <Tool
Name="VCManagedResourceCompilerTool" Name="VCManagedResourceCompilerTool"
/> />
<Tool <Tool
Name="VCResourceCompilerTool" Name="VCResourceCompilerTool"
/> />
<Tool <Tool
Name="VCPreLinkEventTool" Name="VCPreLinkEventTool"
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
SubSystem="1" SubSystem="1"
/> />
<Tool <Tool
Name="VCALinkTool" Name="VCALinkTool"
/> />
<Tool <Tool
Name="VCManifestTool" Name="VCManifestTool"
/> />
<Tool <Tool
Name="VCXDCMakeTool" Name="VCXDCMakeTool"
/> />
<Tool <Tool
Name="VCBscMakeTool" Name="VCBscMakeTool"
/> />
<Tool <Tool
Name="VCFxCopTool" Name="VCFxCopTool"
/> />
<Tool <Tool
Name="VCAppVerifierTool" Name="VCAppVerifierTool"
/> />
<Tool <Tool
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
/> />
</Configuration> </Configuration>
</Configurations> </Configurations>
<References> <References>
</References> </References>
<Files> <Files>
<Filter <Filter
Name="Source Files" Name="Source Files"
> >
<File <File
RelativePath=".\kill_python.c" RelativePath=".\kill_python.c"
> >
</File> </File>
</Filter> </Filter>
</Files> </Files>
<Globals> <Globals>
</Globals> </Globals>
</VisualStudioProject> </VisualStudioProject>

View file

@ -1,162 +1,162 @@
<?xml version="1.0" encoding="windows-1250"?> <?xml version="1.0" encoding="windows-1250"?>
<VisualStudioProject <VisualStudioProject
ProjectType="Visual C++" ProjectType="Visual C++"
Version="8.00" Version="8.00"
Name="make_buildinfo" Name="make_buildinfo"
ProjectGUID="{C73F0EC1-358B-4177-940F-0846AC8B04CD}" ProjectGUID="{C73F0EC1-358B-4177-940F-0846AC8B04CD}"
RootNamespace="make_buildinfo" RootNamespace="make_buildinfo"
Keyword="Win32Proj" Keyword="Win32Proj"
TargetFrameworkVersion="131072" TargetFrameworkVersion="131072"
> >
<Platforms> <Platforms>
<Platform <Platform
Name="Win32" Name="Win32"
/> />
<Platform <Platform
Name="x64" Name="x64"
/> />
</Platforms> </Platforms>
<ToolFiles> <ToolFiles>
</ToolFiles> </ToolFiles>
<Configurations> <Configurations>
<Configuration <Configuration
Name="Release|Win32" Name="Release|Win32"
ConfigurationType="1" ConfigurationType="1"
InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops" InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops"
CharacterSet="0" CharacterSet="0"
> >
<Tool <Tool
Name="VCPreBuildEventTool" Name="VCPreBuildEventTool"
/> />
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
/> />
<Tool <Tool
Name="VCXMLDataGeneratorTool" Name="VCXMLDataGeneratorTool"
/> />
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool" Name="VCWebServiceProxyGeneratorTool"
/> />
<Tool <Tool
Name="VCMIDLTool" Name="VCMIDLTool"
/> />
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
PreprocessorDefinitions="_CONSOLE" PreprocessorDefinitions="_CONSOLE"
RuntimeLibrary="0" RuntimeLibrary="0"
/> />
<Tool <Tool
Name="VCManagedResourceCompilerTool" Name="VCManagedResourceCompilerTool"
/> />
<Tool <Tool
Name="VCResourceCompilerTool" Name="VCResourceCompilerTool"
/> />
<Tool <Tool
Name="VCPreLinkEventTool" Name="VCPreLinkEventTool"
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
OutputFile="$(OutDir)/make_buildinfo.exe" OutputFile="$(OutDir)/make_buildinfo.exe"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb" ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
SubSystem="1" SubSystem="1"
/> />
<Tool <Tool
Name="VCALinkTool" Name="VCALinkTool"
/> />
<Tool <Tool
Name="VCManifestTool" Name="VCManifestTool"
/> />
<Tool <Tool
Name="VCXDCMakeTool" Name="VCXDCMakeTool"
/> />
<Tool <Tool
Name="VCBscMakeTool" Name="VCBscMakeTool"
/> />
<Tool <Tool
Name="VCFxCopTool" Name="VCFxCopTool"
/> />
<Tool <Tool
Name="VCAppVerifierTool" Name="VCAppVerifierTool"
/> />
<Tool <Tool
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
/> />
</Configuration> </Configuration>
<Configuration <Configuration
Name="Release|x64" Name="Release|x64"
ConfigurationType="1" ConfigurationType="1"
InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\release.vsprops" InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\release.vsprops"
> >
<Tool <Tool
Name="VCPreBuildEventTool" Name="VCPreBuildEventTool"
/> />
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
/> />
<Tool <Tool
Name="VCXMLDataGeneratorTool" Name="VCXMLDataGeneratorTool"
/> />
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool" Name="VCWebServiceProxyGeneratorTool"
/> />
<Tool <Tool
Name="VCMIDLTool" Name="VCMIDLTool"
/> />
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
PreprocessorDefinitions="_CONSOLE" PreprocessorDefinitions="_CONSOLE"
/> />
<Tool <Tool
Name="VCManagedResourceCompilerTool" Name="VCManagedResourceCompilerTool"
/> />
<Tool <Tool
Name="VCResourceCompilerTool" Name="VCResourceCompilerTool"
/> />
<Tool <Tool
Name="VCPreLinkEventTool" Name="VCPreLinkEventTool"
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
/> />
<Tool <Tool
Name="VCALinkTool" Name="VCALinkTool"
/> />
<Tool <Tool
Name="VCManifestTool" Name="VCManifestTool"
/> />
<Tool <Tool
Name="VCXDCMakeTool" Name="VCXDCMakeTool"
/> />
<Tool <Tool
Name="VCBscMakeTool" Name="VCBscMakeTool"
/> />
<Tool <Tool
Name="VCFxCopTool" Name="VCFxCopTool"
/> />
<Tool <Tool
Name="VCAppVerifierTool" Name="VCAppVerifierTool"
/> />
<Tool <Tool
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
/> />
</Configuration> </Configuration>
</Configurations> </Configurations>
<References> <References>
</References> </References>
<Files> <Files>
<Filter <Filter
Name="Source Files" Name="Source Files"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx" Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
> >
<File <File
RelativePath=".\make_buildinfo.c" RelativePath=".\make_buildinfo.c"
> >
</File> </File>
</Filter> </Filter>
</Files> </Files>
<Globals> <Globals>
</Globals> </Globals>
</VisualStudioProject> </VisualStudioProject>

View file

@ -1,324 +1,324 @@
<?xml version="1.0" encoding="Windows-1252"?> <?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject <VisualStudioProject
ProjectType="Visual C++" ProjectType="Visual C++"
Version="8.00" Version="8.00"
Name="make_versioninfo" Name="make_versioninfo"
ProjectGUID="{F0E0541E-F17D-430B-97C4-93ADF0DD284E}" ProjectGUID="{F0E0541E-F17D-430B-97C4-93ADF0DD284E}"
RootNamespace="make_versioninfo" RootNamespace="make_versioninfo"
TargetFrameworkVersion="131072" TargetFrameworkVersion="131072"
> >
<Platforms> <Platforms>
<Platform <Platform
Name="Win32" Name="Win32"
/> />
<Platform <Platform
Name="x64" Name="x64"
/> />
</Platforms> </Platforms>
<ToolFiles> <ToolFiles>
</ToolFiles> </ToolFiles>
<Configurations> <Configurations>
<Configuration <Configuration
Name="Release|Win32" Name="Release|Win32"
ConfigurationType="1" ConfigurationType="1"
InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops" InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops"
UseOfMFC="0" UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false" ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2" CharacterSet="2"
> >
<Tool <Tool
Name="VCPreBuildEventTool" Name="VCPreBuildEventTool"
/> />
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
Description="Build PC/pythonnt_rc(_d).h" Description="Build PC/pythonnt_rc(_d).h"
CommandLine="cd $(SolutionDir)&#x0D;&#x0A;make_versioninfo.exe &gt; ..\..\PC\pythonnt_rc.h&#x0D;&#x0A;" CommandLine="cd $(SolutionDir)&#x0D;&#x0A;make_versioninfo.exe &gt; ..\..\PC\pythonnt_rc.h&#x0D;&#x0A;"
Outputs="$(SolutionDir)..\..\PC\pythonnt_rc.h" Outputs="$(SolutionDir)..\..\PC\pythonnt_rc.h"
/> />
<Tool <Tool
Name="VCXMLDataGeneratorTool" Name="VCXMLDataGeneratorTool"
/> />
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool" Name="VCWebServiceProxyGeneratorTool"
/> />
<Tool <Tool
Name="VCMIDLTool" Name="VCMIDLTool"
/> />
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="2" Optimization="2"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
EnableIntrinsicFunctions="true" EnableIntrinsicFunctions="true"
AdditionalIncludeDirectories="" AdditionalIncludeDirectories=""
PreprocessorDefinitions="_CONSOLE" PreprocessorDefinitions="_CONSOLE"
StringPooling="true" StringPooling="true"
RuntimeLibrary="2" RuntimeLibrary="2"
EnableFunctionLevelLinking="true" EnableFunctionLevelLinking="true"
CompileAs="0" CompileAs="0"
/> />
<Tool <Tool
Name="VCManagedResourceCompilerTool" Name="VCManagedResourceCompilerTool"
/> />
<Tool <Tool
Name="VCResourceCompilerTool" Name="VCResourceCompilerTool"
/> />
<Tool <Tool
Name="VCPreLinkEventTool" Name="VCPreLinkEventTool"
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
OutputFile="$(SolutionDir)make_versioninfo.exe" OutputFile="$(SolutionDir)make_versioninfo.exe"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb" ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
SubSystem="1" SubSystem="1"
BaseAddress="0x1d000000" BaseAddress="0x1d000000"
/> />
<Tool <Tool
Name="VCALinkTool" Name="VCALinkTool"
/> />
<Tool <Tool
Name="VCManifestTool" Name="VCManifestTool"
/> />
<Tool <Tool
Name="VCXDCMakeTool" Name="VCXDCMakeTool"
/> />
<Tool <Tool
Name="VCBscMakeTool" Name="VCBscMakeTool"
/> />
<Tool <Tool
Name="VCFxCopTool" Name="VCFxCopTool"
/> />
<Tool <Tool
Name="VCAppVerifierTool" Name="VCAppVerifierTool"
/> />
<Tool <Tool
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
CommandLine="cd $(SolutionDir)&#x0D;&#x0A;make_versioninfo.exe &gt; ..\..\PC\python_nt.h&#x0D;&#x0A;" CommandLine="cd $(SolutionDir)&#x0D;&#x0A;make_versioninfo.exe &gt; ..\..\PC\python_nt.h&#x0D;&#x0A;"
/> />
</Configuration> </Configuration>
<Configuration <Configuration
Name="Release|x64" Name="Release|x64"
ConfigurationType="1" ConfigurationType="1"
InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\release.vsprops" InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\release.vsprops"
> >
<Tool <Tool
Name="VCPreBuildEventTool" Name="VCPreBuildEventTool"
/> />
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
Description="Build PC/pythonnt_rc(_d).h" Description="Build PC/pythonnt_rc(_d).h"
CommandLine="cd $(SolutionDir)&#x0D;&#x0A;make_versioninfo.exe &gt; ..\..\PC\pythonnt_rc.h&#x0D;&#x0A;" CommandLine="cd $(SolutionDir)&#x0D;&#x0A;make_versioninfo.exe &gt; ..\..\PC\pythonnt_rc.h&#x0D;&#x0A;"
Outputs="$(SolutionDir)..\..\PC\pythonnt_rc.h" Outputs="$(SolutionDir)..\..\PC\pythonnt_rc.h"
/> />
<Tool <Tool
Name="VCXMLDataGeneratorTool" Name="VCXMLDataGeneratorTool"
/> />
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool" Name="VCWebServiceProxyGeneratorTool"
/> />
<Tool <Tool
Name="VCMIDLTool" Name="VCMIDLTool"
/> />
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="2" Optimization="2"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
EnableIntrinsicFunctions="true" EnableIntrinsicFunctions="true"
PreprocessorDefinitions="_CONSOLE" PreprocessorDefinitions="_CONSOLE"
/> />
<Tool <Tool
Name="VCManagedResourceCompilerTool" Name="VCManagedResourceCompilerTool"
/> />
<Tool <Tool
Name="VCResourceCompilerTool" Name="VCResourceCompilerTool"
/> />
<Tool <Tool
Name="VCPreLinkEventTool" Name="VCPreLinkEventTool"
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
OutputFile="$(SolutionDir)make_versioninfo.exe" OutputFile="$(SolutionDir)make_versioninfo.exe"
/> />
<Tool <Tool
Name="VCALinkTool" Name="VCALinkTool"
/> />
<Tool <Tool
Name="VCManifestTool" Name="VCManifestTool"
/> />
<Tool <Tool
Name="VCXDCMakeTool" Name="VCXDCMakeTool"
/> />
<Tool <Tool
Name="VCBscMakeTool" Name="VCBscMakeTool"
/> />
<Tool <Tool
Name="VCFxCopTool" Name="VCFxCopTool"
/> />
<Tool <Tool
Name="VCAppVerifierTool" Name="VCAppVerifierTool"
/> />
<Tool <Tool
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
CommandLine="cd $(SolutionDir)&#x0D;&#x0A;make_versioninfo.exe &gt; ..\..\PC\python_nt.h&#x0D;&#x0A;" CommandLine="cd $(SolutionDir)&#x0D;&#x0A;make_versioninfo.exe &gt; ..\..\PC\python_nt.h&#x0D;&#x0A;"
/> />
</Configuration> </Configuration>
<Configuration <Configuration
Name="Debug|Win32" Name="Debug|Win32"
ConfigurationType="1" ConfigurationType="1"
InheritedPropertySheets=".\pyproject.vsprops;.\debug.vsprops" InheritedPropertySheets=".\pyproject.vsprops;.\debug.vsprops"
UseOfMFC="0" UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false" ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="0" CharacterSet="0"
> >
<Tool <Tool
Name="VCPreBuildEventTool" Name="VCPreBuildEventTool"
/> />
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
Description="Build PC/pythonnt_rc(_d).h" Description="Build PC/pythonnt_rc(_d).h"
CommandLine="cd $(SolutionDir)&#x0D;&#x0A;make_versioninfo_d.exe &gt; ..\..\PC\pythonnt_rc_d.h&#x0D;&#x0A;" CommandLine="cd $(SolutionDir)&#x0D;&#x0A;make_versioninfo_d.exe &gt; ..\..\PC\pythonnt_rc_d.h&#x0D;&#x0A;"
Outputs="$(SolutionDir)..\..\PC\pythonnt_rc_d.h" Outputs="$(SolutionDir)..\..\PC\pythonnt_rc_d.h"
/> />
<Tool <Tool
Name="VCXMLDataGeneratorTool" Name="VCXMLDataGeneratorTool"
/> />
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool" Name="VCWebServiceProxyGeneratorTool"
/> />
<Tool <Tool
Name="VCMIDLTool" Name="VCMIDLTool"
/> />
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
EnableIntrinsicFunctions="false" EnableIntrinsicFunctions="false"
AdditionalIncludeDirectories="" AdditionalIncludeDirectories=""
PreprocessorDefinitions="_CONSOLE" PreprocessorDefinitions="_CONSOLE"
StringPooling="true" StringPooling="true"
RuntimeLibrary="2" RuntimeLibrary="2"
EnableFunctionLevelLinking="true" EnableFunctionLevelLinking="true"
CompileAs="0" CompileAs="0"
/> />
<Tool <Tool
Name="VCManagedResourceCompilerTool" Name="VCManagedResourceCompilerTool"
/> />
<Tool <Tool
Name="VCResourceCompilerTool" Name="VCResourceCompilerTool"
/> />
<Tool <Tool
Name="VCPreLinkEventTool" Name="VCPreLinkEventTool"
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
OutputFile="$(SolutionDir)make_versioninfo_d.exe" OutputFile="$(SolutionDir)make_versioninfo_d.exe"
ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb" ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
SubSystem="1" SubSystem="1"
BaseAddress="0x1d000000" BaseAddress="0x1d000000"
/> />
<Tool <Tool
Name="VCALinkTool" Name="VCALinkTool"
/> />
<Tool <Tool
Name="VCManifestTool" Name="VCManifestTool"
/> />
<Tool <Tool
Name="VCXDCMakeTool" Name="VCXDCMakeTool"
/> />
<Tool <Tool
Name="VCBscMakeTool" Name="VCBscMakeTool"
/> />
<Tool <Tool
Name="VCFxCopTool" Name="VCFxCopTool"
/> />
<Tool <Tool
Name="VCAppVerifierTool" Name="VCAppVerifierTool"
/> />
<Tool <Tool
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
CommandLine="cd $(SolutionDir)&#x0D;&#x0A;make_versioninfo_d.exe &gt; ..\..\PC\python_nt_d.h&#x0D;&#x0A;" CommandLine="cd $(SolutionDir)&#x0D;&#x0A;make_versioninfo_d.exe &gt; ..\..\PC\python_nt_d.h&#x0D;&#x0A;"
/> />
</Configuration> </Configuration>
<Configuration <Configuration
Name="Debug|x64" Name="Debug|x64"
ConfigurationType="1" ConfigurationType="1"
InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\debug.vsprops" InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\debug.vsprops"
> >
<Tool <Tool
Name="VCPreBuildEventTool" Name="VCPreBuildEventTool"
/> />
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
Description="Build PC/pythonnt_rc(_d).h" Description="Build PC/pythonnt_rc(_d).h"
CommandLine="cd $(SolutionDir)&#x0D;&#x0A;make_versioninfo_d.exe &gt; ..\..\PC\pythonnt_rc_d.h&#x0D;&#x0A;" CommandLine="cd $(SolutionDir)&#x0D;&#x0A;make_versioninfo_d.exe &gt; ..\..\PC\pythonnt_rc_d.h&#x0D;&#x0A;"
Outputs="$(SolutionDir)..\..\PC\pythonnt_rc_d.h" Outputs="$(SolutionDir)..\..\PC\pythonnt_rc_d.h"
/> />
<Tool <Tool
Name="VCXMLDataGeneratorTool" Name="VCXMLDataGeneratorTool"
/> />
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool" Name="VCWebServiceProxyGeneratorTool"
/> />
<Tool <Tool
Name="VCMIDLTool" Name="VCMIDLTool"
TargetEnvironment="3" TargetEnvironment="3"
/> />
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
EnableIntrinsicFunctions="false" EnableIntrinsicFunctions="false"
PreprocessorDefinitions="_CONSOLE" PreprocessorDefinitions="_CONSOLE"
/> />
<Tool <Tool
Name="VCManagedResourceCompilerTool" Name="VCManagedResourceCompilerTool"
/> />
<Tool <Tool
Name="VCResourceCompilerTool" Name="VCResourceCompilerTool"
/> />
<Tool <Tool
Name="VCPreLinkEventTool" Name="VCPreLinkEventTool"
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
OutputFile="$(SolutionDir)make_versioninfo_d.exe" OutputFile="$(SolutionDir)make_versioninfo_d.exe"
TargetMachine="17" TargetMachine="17"
/> />
<Tool <Tool
Name="VCALinkTool" Name="VCALinkTool"
/> />
<Tool <Tool
Name="VCManifestTool" Name="VCManifestTool"
/> />
<Tool <Tool
Name="VCXDCMakeTool" Name="VCXDCMakeTool"
/> />
<Tool <Tool
Name="VCBscMakeTool" Name="VCBscMakeTool"
/> />
<Tool <Tool
Name="VCFxCopTool" Name="VCFxCopTool"
/> />
<Tool <Tool
Name="VCAppVerifierTool" Name="VCAppVerifierTool"
/> />
<Tool <Tool
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
CommandLine="cd $(SolutionDir)&#x0D;&#x0A;make_versioninfo_d.exe &gt; ..\..\PC\python_nt_d.h&#x0D;&#x0A;" CommandLine="cd $(SolutionDir)&#x0D;&#x0A;make_versioninfo_d.exe &gt; ..\..\PC\python_nt_d.h&#x0D;&#x0A;"
/> />
</Configuration> </Configuration>
</Configurations> </Configurations>
<References> <References>
</References> </References>
<Files> <Files>
<Filter <Filter
Name="Source Files" Name="Source Files"
> >
<File <File
RelativePath="..\..\PC\make_versioninfo.c" RelativePath="..\..\PC\make_versioninfo.c"
> >
</File> </File>
</Filter> </Filter>
</Files> </Files>
<Globals> <Globals>
</Globals> </Globals>
</VisualStudioProject> </VisualStudioProject>

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,270 +1,270 @@
<?xml version="1.0" encoding="Windows-1252"?> <?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject <VisualStudioProject
ProjectType="Visual C++" ProjectType="Visual C++"
Version="9.00" Version="9.00"
Name="bdist_wininst" Name="bdist_wininst"
ProjectGUID="{EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}" ProjectGUID="{EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}"
RootNamespace="wininst" RootNamespace="wininst"
TargetFrameworkVersion="131072" TargetFrameworkVersion="131072"
> >
<Platforms> <Platforms>
<Platform <Platform
Name="Win32" Name="Win32"
/> />
<Platform <Platform
Name="x64" Name="x64"
/> />
</Platforms> </Platforms>
<ToolFiles> <ToolFiles>
</ToolFiles> </ToolFiles>
<Configurations> <Configurations>
<Configuration <Configuration
Name="Release|Win32" Name="Release|Win32"
OutputDirectory="..\lib\distutils\command" OutputDirectory="..\lib\distutils\command"
ConfigurationType="1" ConfigurationType="1"
InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops" InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops"
UseOfMFC="0" UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false" ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="0" CharacterSet="0"
> >
<Tool <Tool
Name="VCPreBuildEventTool" Name="VCPreBuildEventTool"
/> />
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
/> />
<Tool <Tool
Name="VCXMLDataGeneratorTool" Name="VCXMLDataGeneratorTool"
/> />
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool" Name="VCWebServiceProxyGeneratorTool"
/> />
<Tool <Tool
Name="VCMIDLTool" Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG" PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="true" MkTypLibCompatible="true"
SuppressStartupBanner="true" SuppressStartupBanner="true"
TargetEnvironment="1" TargetEnvironment="1"
TypeLibraryName=".\..\lib\distutils\command\wininst.tlb" TypeLibraryName=".\..\lib\distutils\command\wininst.tlb"
HeaderFileName="" HeaderFileName=""
/> />
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="1" Optimization="1"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\PC\bdist_wininst;..\Include;..\Modules\zlib" AdditionalIncludeDirectories="..\PC\bdist_wininst;..\Include;..\Modules\zlib"
PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE"
StringPooling="true" StringPooling="true"
RuntimeLibrary="2" RuntimeLibrary="2"
EnableFunctionLevelLinking="true" EnableFunctionLevelLinking="true"
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="true" SuppressStartupBanner="true"
/> />
<Tool <Tool
Name="VCManagedResourceCompilerTool" Name="VCManagedResourceCompilerTool"
/> />
<Tool <Tool
Name="VCResourceCompilerTool" Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG" PreprocessorDefinitions="NDEBUG"
Culture="0" Culture="0"
AdditionalIncludeDirectories="..\PC;..\PC\bdist_wininst;..\Include" AdditionalIncludeDirectories="..\PC;..\PC\bdist_wininst;..\Include"
/> />
<Tool <Tool
Name="VCPreLinkEventTool" Name="VCPreLinkEventTool"
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
AdditionalDependencies="comctl32.lib imagehlp.lib" AdditionalDependencies="comctl32.lib imagehlp.lib"
OutputFile="..\lib\distutils\command\wininst-9.0.exe" OutputFile="..\lib\distutils\command\wininst-9.0.exe"
LinkIncremental="1" LinkIncremental="1"
SuppressStartupBanner="true" SuppressStartupBanner="true"
IgnoreDefaultLibraryNames="LIBC" IgnoreDefaultLibraryNames="LIBC"
ProgramDatabaseFile="..\lib\distutils\command\wininst-9.0.pdb" ProgramDatabaseFile="..\lib\distutils\command\wininst-9.0.pdb"
SubSystem="2" SubSystem="2"
RandomizedBaseAddress="1" RandomizedBaseAddress="1"
DataExecutionPrevention="0" DataExecutionPrevention="0"
TargetMachine="1" TargetMachine="1"
/> />
<Tool <Tool
Name="VCALinkTool" Name="VCALinkTool"
/> />
<Tool <Tool
Name="VCManifestTool" Name="VCManifestTool"
/> />
<Tool <Tool
Name="VCXDCMakeTool" Name="VCXDCMakeTool"
/> />
<Tool <Tool
Name="VCBscMakeTool" Name="VCBscMakeTool"
/> />
<Tool <Tool
Name="VCFxCopTool" Name="VCFxCopTool"
/> />
<Tool <Tool
Name="VCAppVerifierTool" Name="VCAppVerifierTool"
/> />
<Tool <Tool
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
/> />
</Configuration> </Configuration>
<Configuration <Configuration
Name="Release|x64" Name="Release|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)" OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1" ConfigurationType="1"
InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops" InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops"
UseOfMFC="0" UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false" ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="0" CharacterSet="0"
> >
<Tool <Tool
Name="VCPreBuildEventTool" Name="VCPreBuildEventTool"
/> />
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
/> />
<Tool <Tool
Name="VCXMLDataGeneratorTool" Name="VCXMLDataGeneratorTool"
/> />
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool" Name="VCWebServiceProxyGeneratorTool"
/> />
<Tool <Tool
Name="VCMIDLTool" Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG" PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="true" MkTypLibCompatible="true"
SuppressStartupBanner="true" SuppressStartupBanner="true"
TargetEnvironment="3" TargetEnvironment="3"
TypeLibraryName=".\..\lib\distutils\command\wininst.tlb" TypeLibraryName=".\..\lib\distutils\command\wininst.tlb"
HeaderFileName="" HeaderFileName=""
/> />
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="1" Optimization="1"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\PC\bdist_wininst;..\Include;..\Modules\zlib" AdditionalIncludeDirectories="..\PC\bdist_wininst;..\Include;..\Modules\zlib"
PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE"
StringPooling="true" StringPooling="true"
RuntimeLibrary="2" RuntimeLibrary="2"
EnableFunctionLevelLinking="true" EnableFunctionLevelLinking="true"
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="true" SuppressStartupBanner="true"
/> />
<Tool <Tool
Name="VCManagedResourceCompilerTool" Name="VCManagedResourceCompilerTool"
/> />
<Tool <Tool
Name="VCResourceCompilerTool" Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG" PreprocessorDefinitions="NDEBUG"
Culture="0" Culture="0"
AdditionalIncludeDirectories="..\PC;..\PC\bdist_wininst;..\Include" AdditionalIncludeDirectories="..\PC;..\PC\bdist_wininst;..\Include"
/> />
<Tool <Tool
Name="VCPreLinkEventTool" Name="VCPreLinkEventTool"
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
AdditionalDependencies="comctl32.lib imagehlp.lib" AdditionalDependencies="comctl32.lib imagehlp.lib"
OutputFile="..\lib\distutils\command\wininst-9.0-amd64.exe" OutputFile="..\lib\distutils\command\wininst-9.0-amd64.exe"
LinkIncremental="1" LinkIncremental="1"
SuppressStartupBanner="true" SuppressStartupBanner="true"
IgnoreDefaultLibraryNames="LIBC" IgnoreDefaultLibraryNames="LIBC"
ProgramDatabaseFile="..\lib\distutils\command\wininst-9.0-amd64.pdb" ProgramDatabaseFile="..\lib\distutils\command\wininst-9.0-amd64.pdb"
SubSystem="2" SubSystem="2"
RandomizedBaseAddress="1" RandomizedBaseAddress="1"
DataExecutionPrevention="0" DataExecutionPrevention="0"
TargetMachine="17" TargetMachine="17"
/> />
<Tool <Tool
Name="VCALinkTool" Name="VCALinkTool"
/> />
<Tool <Tool
Name="VCManifestTool" Name="VCManifestTool"
/> />
<Tool <Tool
Name="VCXDCMakeTool" Name="VCXDCMakeTool"
/> />
<Tool <Tool
Name="VCBscMakeTool" Name="VCBscMakeTool"
/> />
<Tool <Tool
Name="VCFxCopTool" Name="VCFxCopTool"
/> />
<Tool <Tool
Name="VCAppVerifierTool" Name="VCAppVerifierTool"
/> />
<Tool <Tool
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
/> />
</Configuration> </Configuration>
</Configurations> </Configurations>
<References> <References>
</References> </References>
<Files> <Files>
<Filter <Filter
Name="Source Files" Name="Source Files"
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
> >
<File <File
RelativePath="..\PC\bdist_wininst\extract.c" RelativePath="..\PC\bdist_wininst\extract.c"
> >
</File> </File>
<File <File
RelativePath="..\PC\bdist_wininst\install.c" RelativePath="..\PC\bdist_wininst\install.c"
> >
</File> </File>
<Filter <Filter
Name="zlib" Name="zlib"
> >
<File <File
RelativePath="..\Modules\zlib\adler32.c" RelativePath="..\Modules\zlib\adler32.c"
> >
</File> </File>
<File <File
RelativePath="..\Modules\zlib\crc32.c" RelativePath="..\Modules\zlib\crc32.c"
> >
</File> </File>
<File <File
RelativePath="..\Modules\zlib\inffast.c" RelativePath="..\Modules\zlib\inffast.c"
> >
</File> </File>
<File <File
RelativePath="..\Modules\zlib\inflate.c" RelativePath="..\Modules\zlib\inflate.c"
> >
</File> </File>
<File <File
RelativePath="..\Modules\zlib\inftrees.c" RelativePath="..\Modules\zlib\inftrees.c"
> >
</File> </File>
<File <File
RelativePath="..\Modules\zlib\zutil.c" RelativePath="..\Modules\zlib\zutil.c"
> >
</File> </File>
</Filter> </Filter>
</Filter> </Filter>
<Filter <Filter
Name="Header Files" Name="Header Files"
Filter="h;hpp;hxx;hm;inl" Filter="h;hpp;hxx;hm;inl"
> >
<File <File
RelativePath="..\PC\bdist_wininst\archive.h" RelativePath="..\PC\bdist_wininst\archive.h"
> >
</File> </File>
</Filter> </Filter>
<Filter <Filter
Name="Resource Files" Name="Resource Files"
Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
> >
<File <File
RelativePath="..\PC\bdist_wininst\install.rc" RelativePath="..\PC\bdist_wininst\install.rc"
> >
</File> </File>
<File <File
RelativePath="..\PC\bdist_wininst\PythonPowered.bmp" RelativePath="..\PC\bdist_wininst\PythonPowered.bmp"
> >
</File> </File>
</Filter> </Filter>
</Files> </Files>
<Globals> <Globals>
</Globals> </Globals>
</VisualStudioProject> </VisualStudioProject>

View file

@ -1,178 +1,178 @@
/* /*
* Helper program for killing lingering python[_d].exe processes before * Helper program for killing lingering python[_d].exe processes before
* building, thus attempting to avoid build failures due to files being * building, thus attempting to avoid build failures due to files being
* locked. * locked.
*/ */
#include <windows.h> #include <windows.h>
#include <wchar.h> #include <wchar.h>
#include <tlhelp32.h> #include <tlhelp32.h>
#include <stdio.h> #include <stdio.h>
#pragma comment(lib, "psapi") #pragma comment(lib, "psapi")
#ifdef _DEBUG #ifdef _DEBUG
#define PYTHON_EXE (L"python_d.exe") #define PYTHON_EXE (L"python_d.exe")
#define PYTHON_EXE_LEN (12) #define PYTHON_EXE_LEN (12)
#define KILL_PYTHON_EXE (L"kill_python_d.exe") #define KILL_PYTHON_EXE (L"kill_python_d.exe")
#define KILL_PYTHON_EXE_LEN (17) #define KILL_PYTHON_EXE_LEN (17)
#else #else
#define PYTHON_EXE (L"python.exe") #define PYTHON_EXE (L"python.exe")
#define PYTHON_EXE_LEN (10) #define PYTHON_EXE_LEN (10)
#define KILL_PYTHON_EXE (L"kill_python.exe") #define KILL_PYTHON_EXE (L"kill_python.exe")
#define KILL_PYTHON_EXE_LEN (15) #define KILL_PYTHON_EXE_LEN (15)
#endif #endif
int int
main(int argc, char **argv) main(int argc, char **argv)
{ {
HANDLE hp, hsp, hsm; /* process, snapshot processes, snapshot modules */ HANDLE hp, hsp, hsm; /* process, snapshot processes, snapshot modules */
DWORD dac, our_pid; DWORD dac, our_pid;
size_t len; size_t len;
wchar_t path[MAX_PATH+1]; wchar_t path[MAX_PATH+1];
MODULEENTRY32W me; MODULEENTRY32W me;
PROCESSENTRY32W pe; PROCESSENTRY32W pe;
me.dwSize = sizeof(MODULEENTRY32W); me.dwSize = sizeof(MODULEENTRY32W);
pe.dwSize = sizeof(PROCESSENTRY32W); pe.dwSize = sizeof(PROCESSENTRY32W);
memset(path, 0, MAX_PATH+1); memset(path, 0, MAX_PATH+1);
our_pid = GetCurrentProcessId(); our_pid = GetCurrentProcessId();
hsm = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, our_pid); hsm = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, our_pid);
if (hsm == INVALID_HANDLE_VALUE) { if (hsm == INVALID_HANDLE_VALUE) {
printf("CreateToolhelp32Snapshot[1] failed: %d\n", GetLastError()); printf("CreateToolhelp32Snapshot[1] failed: %d\n", GetLastError());
return 1; return 1;
} }
if (!Module32FirstW(hsm, &me)) { if (!Module32FirstW(hsm, &me)) {
printf("Module32FirstW[1] failed: %d\n", GetLastError()); printf("Module32FirstW[1] failed: %d\n", GetLastError());
CloseHandle(hsm); CloseHandle(hsm);
return 1; return 1;
} }
/* /*
* Enumerate over the modules for the current process in order to find * Enumerate over the modules for the current process in order to find
* kill_process[_d].exe, then take a note of the directory it lives in. * kill_process[_d].exe, then take a note of the directory it lives in.
*/ */
do { do {
if (_wcsnicmp(me.szModule, KILL_PYTHON_EXE, KILL_PYTHON_EXE_LEN)) if (_wcsnicmp(me.szModule, KILL_PYTHON_EXE, KILL_PYTHON_EXE_LEN))
continue; continue;
len = wcsnlen_s(me.szExePath, MAX_PATH) - KILL_PYTHON_EXE_LEN; len = wcsnlen_s(me.szExePath, MAX_PATH) - KILL_PYTHON_EXE_LEN;
wcsncpy_s(path, MAX_PATH+1, me.szExePath, len); wcsncpy_s(path, MAX_PATH+1, me.szExePath, len);
break; break;
} while (Module32NextW(hsm, &me)); } while (Module32NextW(hsm, &me));
CloseHandle(hsm); CloseHandle(hsm);
if (path == NULL) { if (path == NULL) {
printf("failed to discern directory of running process\n"); printf("failed to discern directory of running process\n");
return 1; return 1;
} }
/* /*
* Take a snapshot of system processes. Enumerate over the snapshot, * Take a snapshot of system processes. Enumerate over the snapshot,
* looking for python processes. When we find one, verify it lives * looking for python processes. When we find one, verify it lives
* in the same directory we live in. If it does, kill it. If we're * in the same directory we live in. If it does, kill it. If we're
* unable to kill it, treat this as a fatal error and return 1. * unable to kill it, treat this as a fatal error and return 1.
* *
* The rationale behind this is that we're called at the start of the * The rationale behind this is that we're called at the start of the
* build process on the basis that we'll take care of killing any * build process on the basis that we'll take care of killing any
* running instances, such that the build won't encounter permission * running instances, such that the build won't encounter permission
* denied errors during linking. If we can't kill one of the processes, * denied errors during linking. If we can't kill one of the processes,
* we can't provide this assurance, and the build shouldn't start. * we can't provide this assurance, and the build shouldn't start.
*/ */
hsp = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); hsp = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hsp == INVALID_HANDLE_VALUE) { if (hsp == INVALID_HANDLE_VALUE) {
printf("CreateToolhelp32Snapshot[2] failed: %d\n", GetLastError()); printf("CreateToolhelp32Snapshot[2] failed: %d\n", GetLastError());
return 1; return 1;
} }
if (!Process32FirstW(hsp, &pe)) { if (!Process32FirstW(hsp, &pe)) {
printf("Process32FirstW failed: %d\n", GetLastError()); printf("Process32FirstW failed: %d\n", GetLastError());
CloseHandle(hsp); CloseHandle(hsp);
return 1; return 1;
} }
dac = PROCESS_QUERY_INFORMATION | PROCESS_VM_READ | PROCESS_TERMINATE; dac = PROCESS_QUERY_INFORMATION | PROCESS_VM_READ | PROCESS_TERMINATE;
do { do {
/* /*
* XXX TODO: if we really wanted to be fancy, we could check the * XXX TODO: if we really wanted to be fancy, we could check the
* modules for all processes (not just the python[_d].exe ones) * modules for all processes (not just the python[_d].exe ones)
* and see if any of our DLLs are loaded (i.e. python30[_d].dll), * and see if any of our DLLs are loaded (i.e. python30[_d].dll),
* as that would also inhibit our ability to rebuild the solution. * as that would also inhibit our ability to rebuild the solution.
* Not worth loosing sleep over though; for now, a simple check * Not worth loosing sleep over though; for now, a simple check
* for just the python executable should be sufficient. * for just the python executable should be sufficient.
*/ */
if (_wcsnicmp(pe.szExeFile, PYTHON_EXE, PYTHON_EXE_LEN)) if (_wcsnicmp(pe.szExeFile, PYTHON_EXE, PYTHON_EXE_LEN))
/* This isn't a python process. */ /* This isn't a python process. */
continue; continue;
/* It's a python process, so figure out which directory it's in... */ /* It's a python process, so figure out which directory it's in... */
hsm = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pe.th32ProcessID); hsm = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pe.th32ProcessID);
if (hsm == INVALID_HANDLE_VALUE) if (hsm == INVALID_HANDLE_VALUE)
/* /*
* If our module snapshot fails (which will happen if we don't own * If our module snapshot fails (which will happen if we don't own
* the process), just ignore it and continue. (It seems different * the process), just ignore it and continue. (It seems different
* versions of Windows return different values for GetLastError() * versions of Windows return different values for GetLastError()
* in this situation; it's easier to just ignore it and move on vs. * in this situation; it's easier to just ignore it and move on vs.
* stopping the build for what could be a false positive.) * stopping the build for what could be a false positive.)
*/ */
continue; continue;
if (!Module32FirstW(hsm, &me)) { if (!Module32FirstW(hsm, &me)) {
printf("Module32FirstW[2] failed: %d\n", GetLastError()); printf("Module32FirstW[2] failed: %d\n", GetLastError());
CloseHandle(hsp); CloseHandle(hsp);
CloseHandle(hsm); CloseHandle(hsm);
return 1; return 1;
} }
do { do {
if (_wcsnicmp(me.szModule, PYTHON_EXE, PYTHON_EXE_LEN)) if (_wcsnicmp(me.szModule, PYTHON_EXE, PYTHON_EXE_LEN))
/* Wrong module, we're looking for python[_d].exe... */ /* Wrong module, we're looking for python[_d].exe... */
continue; continue;
if (_wcsnicmp(path, me.szExePath, len)) if (_wcsnicmp(path, me.szExePath, len))
/* Process doesn't live in our directory. */ /* Process doesn't live in our directory. */
break; break;
/* Python process residing in the right directory, kill it! */ /* Python process residing in the right directory, kill it! */
hp = OpenProcess(dac, FALSE, pe.th32ProcessID); hp = OpenProcess(dac, FALSE, pe.th32ProcessID);
if (!hp) { if (!hp) {
printf("OpenProcess failed: %d\n", GetLastError()); printf("OpenProcess failed: %d\n", GetLastError());
CloseHandle(hsp); CloseHandle(hsp);
CloseHandle(hsm); CloseHandle(hsm);
return 1; return 1;
} }
if (!TerminateProcess(hp, 1)) { if (!TerminateProcess(hp, 1)) {
printf("TerminateProcess failed: %d\n", GetLastError()); printf("TerminateProcess failed: %d\n", GetLastError());
CloseHandle(hsp); CloseHandle(hsp);
CloseHandle(hsm); CloseHandle(hsm);
CloseHandle(hp); CloseHandle(hp);
return 1; return 1;
} }
CloseHandle(hp); CloseHandle(hp);
break; break;
} while (Module32NextW(hsm, &me)); } while (Module32NextW(hsm, &me));
CloseHandle(hsm); CloseHandle(hsm);
} while (Process32NextW(hsp, &pe)); } while (Process32NextW(hsp, &pe));
CloseHandle(hsp); CloseHandle(hsp);
return 0; return 0;
} }
/* vi: set ts=8 sw=4 sts=4 expandtab */ /* vi: set ts=8 sw=4 sts=4 expandtab */

View file

@ -1,279 +1,279 @@
<?xml version="1.0" encoding="Windows-1252"?> <?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject <VisualStudioProject
ProjectType="Visual C++" ProjectType="Visual C++"
Version="9.00" Version="9.00"
Name="kill_python" Name="kill_python"
ProjectGUID="{6DE10744-E396-40A5-B4E2-1B69AA7C8D31}" ProjectGUID="{6DE10744-E396-40A5-B4E2-1B69AA7C8D31}"
RootNamespace="kill_python" RootNamespace="kill_python"
Keyword="Win32Proj" Keyword="Win32Proj"
TargetFrameworkVersion="196613" TargetFrameworkVersion="196613"
> >
<Platforms> <Platforms>
<Platform <Platform
Name="Win32" Name="Win32"
/> />
<Platform <Platform
Name="x64" Name="x64"
/> />
</Platforms> </Platforms>
<ToolFiles> <ToolFiles>
</ToolFiles> </ToolFiles>
<Configurations> <Configurations>
<Configuration <Configuration
Name="Debug|Win32" Name="Debug|Win32"
ConfigurationType="1" ConfigurationType="1"
InheritedPropertySheets=".\pyproject.vsprops;.\debug.vsprops" InheritedPropertySheets=".\pyproject.vsprops;.\debug.vsprops"
CharacterSet="0" CharacterSet="0"
> >
<Tool <Tool
Name="VCPreBuildEventTool" Name="VCPreBuildEventTool"
/> />
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
/> />
<Tool <Tool
Name="VCXMLDataGeneratorTool" Name="VCXMLDataGeneratorTool"
/> />
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool" Name="VCWebServiceProxyGeneratorTool"
/> />
<Tool <Tool
Name="VCMIDLTool" Name="VCMIDLTool"
/> />
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
/> />
<Tool <Tool
Name="VCManagedResourceCompilerTool" Name="VCManagedResourceCompilerTool"
/> />
<Tool <Tool
Name="VCResourceCompilerTool" Name="VCResourceCompilerTool"
/> />
<Tool <Tool
Name="VCPreLinkEventTool" Name="VCPreLinkEventTool"
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
OutputFile="$(OutDir)\$(ProjectName)_d.exe" OutputFile="$(OutDir)\$(ProjectName)_d.exe"
SubSystem="1" SubSystem="1"
/> />
<Tool <Tool
Name="VCALinkTool" Name="VCALinkTool"
/> />
<Tool <Tool
Name="VCManifestTool" Name="VCManifestTool"
/> />
<Tool <Tool
Name="VCXDCMakeTool" Name="VCXDCMakeTool"
/> />
<Tool <Tool
Name="VCBscMakeTool" Name="VCBscMakeTool"
/> />
<Tool <Tool
Name="VCFxCopTool" Name="VCFxCopTool"
/> />
<Tool <Tool
Name="VCAppVerifierTool" Name="VCAppVerifierTool"
/> />
<Tool <Tool
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
/> />
</Configuration> </Configuration>
<Configuration <Configuration
Name="Debug|x64" Name="Debug|x64"
ConfigurationType="1" ConfigurationType="1"
InheritedPropertySheets=".\pyproject.vsprops;.\debug.vsprops;.\x64.vsprops" InheritedPropertySheets=".\pyproject.vsprops;.\debug.vsprops;.\x64.vsprops"
CharacterSet="0" CharacterSet="0"
> >
<Tool <Tool
Name="VCPreBuildEventTool" Name="VCPreBuildEventTool"
/> />
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
/> />
<Tool <Tool
Name="VCXMLDataGeneratorTool" Name="VCXMLDataGeneratorTool"
/> />
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool" Name="VCWebServiceProxyGeneratorTool"
/> />
<Tool <Tool
Name="VCMIDLTool" Name="VCMIDLTool"
TargetEnvironment="3" TargetEnvironment="3"
/> />
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
/> />
<Tool <Tool
Name="VCManagedResourceCompilerTool" Name="VCManagedResourceCompilerTool"
/> />
<Tool <Tool
Name="VCResourceCompilerTool" Name="VCResourceCompilerTool"
/> />
<Tool <Tool
Name="VCPreLinkEventTool" Name="VCPreLinkEventTool"
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
OutputFile="$(OutDir)\$(ProjectName)_d.exe" OutputFile="$(OutDir)\$(ProjectName)_d.exe"
SubSystem="1" SubSystem="1"
/> />
<Tool <Tool
Name="VCALinkTool" Name="VCALinkTool"
/> />
<Tool <Tool
Name="VCManifestTool" Name="VCManifestTool"
/> />
<Tool <Tool
Name="VCXDCMakeTool" Name="VCXDCMakeTool"
/> />
<Tool <Tool
Name="VCBscMakeTool" Name="VCBscMakeTool"
/> />
<Tool <Tool
Name="VCFxCopTool" Name="VCFxCopTool"
/> />
<Tool <Tool
Name="VCAppVerifierTool" Name="VCAppVerifierTool"
/> />
<Tool <Tool
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
/> />
</Configuration> </Configuration>
<Configuration <Configuration
Name="Release|Win32" Name="Release|Win32"
ConfigurationType="1" ConfigurationType="1"
InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops" InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops"
CharacterSet="0" CharacterSet="0"
WholeProgramOptimization="1" WholeProgramOptimization="1"
> >
<Tool <Tool
Name="VCPreBuildEventTool" Name="VCPreBuildEventTool"
/> />
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
/> />
<Tool <Tool
Name="VCXMLDataGeneratorTool" Name="VCXMLDataGeneratorTool"
/> />
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool" Name="VCWebServiceProxyGeneratorTool"
/> />
<Tool <Tool
Name="VCMIDLTool" Name="VCMIDLTool"
/> />
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
/> />
<Tool <Tool
Name="VCManagedResourceCompilerTool" Name="VCManagedResourceCompilerTool"
/> />
<Tool <Tool
Name="VCResourceCompilerTool" Name="VCResourceCompilerTool"
/> />
<Tool <Tool
Name="VCPreLinkEventTool" Name="VCPreLinkEventTool"
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
SubSystem="1" SubSystem="1"
/> />
<Tool <Tool
Name="VCALinkTool" Name="VCALinkTool"
/> />
<Tool <Tool
Name="VCManifestTool" Name="VCManifestTool"
/> />
<Tool <Tool
Name="VCXDCMakeTool" Name="VCXDCMakeTool"
/> />
<Tool <Tool
Name="VCBscMakeTool" Name="VCBscMakeTool"
/> />
<Tool <Tool
Name="VCFxCopTool" Name="VCFxCopTool"
/> />
<Tool <Tool
Name="VCAppVerifierTool" Name="VCAppVerifierTool"
/> />
<Tool <Tool
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
/> />
</Configuration> </Configuration>
<Configuration <Configuration
Name="Release|x64" Name="Release|x64"
ConfigurationType="1" ConfigurationType="1"
InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops;.\x64.vsprops" InheritedPropertySheets=".\pyproject.vsprops;.\release.vsprops;.\x64.vsprops"
CharacterSet="0" CharacterSet="0"
WholeProgramOptimization="1" WholeProgramOptimization="1"
> >
<Tool <Tool
Name="VCPreBuildEventTool" Name="VCPreBuildEventTool"
/> />
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
/> />
<Tool <Tool
Name="VCXMLDataGeneratorTool" Name="VCXMLDataGeneratorTool"
/> />
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool" Name="VCWebServiceProxyGeneratorTool"
/> />
<Tool <Tool
Name="VCMIDLTool" Name="VCMIDLTool"
TargetEnvironment="3" TargetEnvironment="3"
/> />
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
/> />
<Tool <Tool
Name="VCManagedResourceCompilerTool" Name="VCManagedResourceCompilerTool"
/> />
<Tool <Tool
Name="VCResourceCompilerTool" Name="VCResourceCompilerTool"
/> />
<Tool <Tool
Name="VCPreLinkEventTool" Name="VCPreLinkEventTool"
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
SubSystem="1" SubSystem="1"
/> />
<Tool <Tool
Name="VCALinkTool" Name="VCALinkTool"
/> />
<Tool <Tool
Name="VCManifestTool" Name="VCManifestTool"
/> />
<Tool <Tool
Name="VCXDCMakeTool" Name="VCXDCMakeTool"
/> />
<Tool <Tool
Name="VCBscMakeTool" Name="VCBscMakeTool"
/> />
<Tool <Tool
Name="VCFxCopTool" Name="VCFxCopTool"
/> />
<Tool <Tool
Name="VCAppVerifierTool" Name="VCAppVerifierTool"
/> />
<Tool <Tool
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
/> />
</Configuration> </Configuration>
</Configurations> </Configurations>
<References> <References>
</References> </References>
<Files> <Files>
<Filter <Filter
Name="Source Files" Name="Source Files"
> >
<File <File
RelativePath=".\kill_python.c" RelativePath=".\kill_python.c"
> >
</File> </File>
</Filter> </Filter>
</Files> </Files>
<Globals> <Globals>
</Globals> </Globals>
</VisualStudioProject> </VisualStudioProject>

File diff suppressed because it is too large Load diff