summaryrefslogtreecommitdiffstats
path: root/PC
diff options
context:
space:
mode:
Diffstat (limited to 'PC')
-rw-r--r--PC/VC6/_ctypes.dsp8
-rw-r--r--PC/VC6/_msi.dsp8
-rw-r--r--PC/VC6/build_ssl.py11
-rw-r--r--PC/VC6/bz2.dsp2
-rw-r--r--PC/VC6/pythoncore.dsp30
-rw-r--r--PC/VC6/readme.txt7
-rw-r--r--PC/VC6/tcl852.patch11
-rw-r--r--PC/VS7.1/pythoncore.vcproj64
-rwxr-xr-xPC/VS7.1/rt.bat2
-rw-r--r--PC/VS8.0/_hashlib.vcproj8
-rw-r--r--PC/VS8.0/_sqlite3.vcproj16
-rw-r--r--PC/VS8.0/_ssl.vcproj8
-rw-r--r--PC/VS8.0/build_ssl.bat4
-rw-r--r--PC/VS8.0/build_ssl.py39
-rw-r--r--PC/VS8.0/bz2.vcproj16
-rw-r--r--PC/VS8.0/kill_python.c2
-rw-r--r--PC/VS8.0/make_buildinfo.c42
-rw-r--r--PC/VS8.0/make_buildinfo.vcproj61
-rw-r--r--PC/VS8.0/pcbuild.sln23
-rw-r--r--PC/VS8.0/pyproject.vsprops6
-rw-r--r--PC/VS8.0/pythoncore.vcproj154
-rw-r--r--PC/VS8.0/rt.bat2
-rw-r--r--PC/VS8.0/sqlite3.vcproj8
-rw-r--r--PC/VS8.0/sqlite3.vsprops2
-rw-r--r--PC/VS8.0/ssl.vcproj189
-rw-r--r--PC/_msi.c2
-rw-r--r--PC/_subprocess.c9
-rw-r--r--PC/config.c6
-rw-r--r--PC/getpathp.c59
-rwxr-xr-xPC/msvcrtmodule.c19
-rw-r--r--PC/os2emx/Makefile1
-rw-r--r--PC/os2emx/python27.def6
-rw-r--r--PC/os2vacpp/python.def1
-rw-r--r--PC/pyconfig.h19
-rw-r--r--PC/python3.def689
-rw-r--r--PC/python3.mak10
-rw-r--r--PC/python32gen.py25
-rw-r--r--PC/python32stub.def689
-rw-r--r--PC/python3dll.c9
-rw-r--r--PC/python_nt.rc2
-rw-r--r--PC/winreg.c169
-rw-r--r--PC/winsound.c28
42 files changed, 2159 insertions, 307 deletions
diff --git a/PC/VC6/_ctypes.dsp b/PC/VC6/_ctypes.dsp
index 70368bf..1c98eac 100644
--- a/PC/VC6/_ctypes.dsp
+++ b/PC/VC6/_ctypes.dsp
@@ -43,10 +43,10 @@ RSC=rc.exe
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
F90=df.exe
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /I "..\..\Modules\_ctypes\libffi_msvc" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c
-# ADD BASE MTL /nologo /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /mktyplib203 /o "NUL" /win32
-# ADD MTL /nologo /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /I "..\..\Modules\_ctypes\libffi_msvc" /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
diff --git a/PC/VC6/_msi.dsp b/PC/VC6/_msi.dsp
index 16e96e3..76a61bc 100644
--- a/PC/VC6/_msi.dsp
+++ b/PC/VC6/_msi.dsp
@@ -43,10 +43,10 @@ RSC=rc.exe
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
F90=df.exe
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c
-# ADD BASE MTL /nologo /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /mktyplib203 /o "NUL" /win32
-# ADD MTL /nologo /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
diff --git a/PC/VC6/build_ssl.py b/PC/VC6/build_ssl.py
index c512688..95af084 100644
--- a/PC/VC6/build_ssl.py
+++ b/PC/VC6/build_ssl.py
@@ -95,13 +95,9 @@ def fix_makefile(makefile):
"""
if not os.path.isfile(makefile):
return
- # 2.4 compatibility
- fin = open(makefile)
- if 1: # with open(makefile) as fin:
+ with open(makefile) as fin:
lines = fin.readlines()
- fin.close()
- fout = open(makefile, 'w')
- if 1: # with open(makefile, 'w') as fout:
+ with open(makefile, 'w') as fout:
for line in lines:
if line.startswith("PERL="):
continue
@@ -117,7 +113,6 @@ def fix_makefile(makefile):
line = line + noalgo
line = line + '\n'
fout.write(line)
- fout.close()
def run_configure(configure, do_script):
print("perl Configure "+configure)
@@ -199,7 +194,7 @@ def main():
copy(r"crypto\opensslconf.h", r"crypto\opensslconf_%s.h" % arch)
# If the assembler files don't exist in tmpXX, copy them there
- if perl is None:
+ if perl is None and os.path.exists("asm"+dirsuffix):
if not os.path.exists("tmp"+dirsuffix):
os.mkdir("tmp"+dirsuffix)
for f in os.listdir("asm"+dirsuffix):
diff --git a/PC/VC6/bz2.dsp b/PC/VC6/bz2.dsp
index 1e96904..3c164fa 100644
--- a/PC/VC6/bz2.dsp
+++ b/PC/VC6/bz2.dsp
@@ -43,7 +43,7 @@ RSC=rc.exe
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
F90=df.exe
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "Py_BUILD_CORE_MODULE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Include" /I ".." /I "..\..\..\bzip2-1.0.5" /D "Py_BUILD_CORE_MODULE" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
diff --git a/PC/VC6/pythoncore.dsp b/PC/VC6/pythoncore.dsp
index ea4f52d..f8a2c81 100644
--- a/PC/VC6/pythoncore.dsp
+++ b/PC/VC6/pythoncore.dsp
@@ -54,7 +54,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
-# ADD LINK32 largeint.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x1e000000" /subsystem:windows /dll /debug /machine:I386 /nodefaultlib:"libc" /out:"./python31.dll"
+# ADD LINK32 largeint.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x1e000000" /subsystem:windows /dll /debug /machine:I386 /nodefaultlib:"libc" /out:"./python32.dll"
# SUBTRACT LINK32 /pdb:none
!ELSEIF "$(CFG)" == "pythoncore - Win32 Debug"
@@ -82,7 +82,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 largeint.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x1e000000" /subsystem:windows /dll /debug /machine:I386 /nodefaultlib:"libc" /out:"./python31_d.dll" /pdbtype:sept
+# ADD LINK32 largeint.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x1e000000" /subsystem:windows /dll /debug /machine:I386 /nodefaultlib:"libc" /out:"./python32_d.dll" /pdbtype:sept
# SUBTRACT LINK32 /pdb:none
!ENDIF
@@ -133,6 +133,10 @@ SOURCE=..\..\Modules\_csv.c
# End Source File
# Begin Source File
+SOURCE=..\..\Modules\_datetimemodule.c
+# End Source File
+# Begin Source File
+
SOURCE=..\..\Modules\_functoolsmodule.c
# End Source File
# Begin Source File
@@ -157,6 +161,10 @@ SOURCE=..\..\Modules\_lsprof.c
# End Source File
# Begin Source File
+SOURCE=..\..\Modules\_math.c
+# End Source File
+# Begin Source File
+
SOURCE=..\..\Modules\_pickle.c
# End Source File
# Begin Source File
@@ -181,6 +189,10 @@ SOURCE=..\..\Modules\_threadmodule.c
# End Source File
# Begin Source File
+SOURCE=..\..\Modules\_time.c
+# End Source File
+# Begin Source File
+
SOURCE=..\..\Python\_warnings.c
# End Source File
# Begin Source File
@@ -277,10 +289,6 @@ SOURCE=..\..\Modules\cmathmodule.c
# End Source File
# Begin Source File
-SOURCE=..\..\Objects\cobject.c
-# End Source File
-# Begin Source File
-
SOURCE=..\..\Python\codecs.c
# End Source File
# Begin Source File
@@ -309,7 +317,7 @@ SOURCE=..\..\Modules\zlib\crc32.c
# End Source File
# Begin Source File
-SOURCE=..\..\Modules\datetimemodule.c
+SOURCE=..\..\Python\dynamic_annotations.c
# End Source File
# Begin Source File
@@ -361,6 +369,10 @@ SOURCE=..\..\Objects\fileobject.c
# End Source File
# Begin Source File
+SOURCE=..\..\Python\fileutils.c
+# End Source File
+# Begin Source File
+
SOURCE=..\..\Parser\firstsets.c
# End Source File
# Begin Source File
@@ -635,6 +647,10 @@ SOURCE=..\..\Python\pythonrun.c
# End Source File
# Begin Source File
+SOURCE=..\..\Python\pytime.c
+# End Source File
+# Begin Source File
+
SOURCE=..\..\Objects\rangeobject.c
# End Source File
# Begin Source File
diff --git a/PC/VC6/readme.txt b/PC/VC6/readme.txt
index 59e65d0..4e8d237 100644
--- a/PC/VC6/readme.txt
+++ b/PC/VC6/readme.txt
@@ -2,8 +2,7 @@ Building Python using VC++ 6.0 or 5.0
-------------------------------------
This directory is used to build Python for Win32 platforms, e.g. Windows
2000 and XP. It requires Microsoft Visual C++ 6.x or 5.x and Platform
-SDK February 2003 Edition (Core SDK). You can download this SDK from
-http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm.
+SDK February 2003 Edition (Core SDK).
(For other Windows platforms and compilers, see ../readme.txt.)
All you need to do is open the workspace "pcbuild.dsw" in MSVC++, select
@@ -13,7 +12,7 @@ and build the projects.
The proper order to build subprojects:
1) pythoncore (this builds the main Python DLL and library files,
- python31.{dll, lib} in Release mode)
+ python32.{dll, lib} in Release mode)
2) python (this builds the main Python executable,
python.exe in Release mode)
@@ -24,7 +23,7 @@ The proper order to build subprojects:
to the subsystems they implement; see SUBPROJECTS below)
When using the Debug setting, the output files have a _d added to
-their name: python31_d.dll, python_d.exe, pyexpat_d.pyd, and so on.
+their name: python32_d.dll, python_d.exe, pyexpat_d.pyd, and so on.
SUBPROJECTS
-----------
diff --git a/PC/VC6/tcl852.patch b/PC/VC6/tcl852.patch
index 0b6c466..ed6780a 100644
--- a/PC/VC6/tcl852.patch
+++ b/PC/VC6/tcl852.patch
@@ -9,14 +9,3 @@
typedef struct _stati64 Tcl_StatBuf;
# else
typedef struct _stat64 Tcl_StatBuf;
---- tcl8.5.2\generic\tcl.h Fri Jun 13 03:35:39 2008
-+++ tcl8.5.2\generic\tcl.h Sun Jan 4 16:52:30 2009
-@@ -367,7 +367,7 @@
- typedef struct stati64 Tcl_StatBuf;
- # define TCL_LL_MODIFIER "L"
- # else /* __BORLANDC__ */
--# if _MSC_VER < 1400 && !defined(_M_IX86)
-+# if _MSC_VER < 1400 /*&& !defined(_M_IX86)*/
- typedef struct _stati64 Tcl_StatBuf;
- # else
- typedef struct _stat64 Tcl_StatBuf;
diff --git a/PC/VS7.1/pythoncore.vcproj b/PC/VS7.1/pythoncore.vcproj
index c05addd..a6f897a 100644
--- a/PC/VS7.1/pythoncore.vcproj
+++ b/PC/VS7.1/pythoncore.vcproj
@@ -39,15 +39,15 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="getbuildinfo.o"
- OutputFile="./python31.dll"
+ OutputFile="./python32.dll"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
IgnoreDefaultLibraryNames="libc"
GenerateDebugInformation="TRUE"
- ProgramDatabaseFile=".\./python31.pdb"
+ ProgramDatabaseFile=".\./python32.pdb"
SubSystem="2"
BaseAddress="0x1e000000"
- ImportLibrary=".\./python31.lib"
+ ImportLibrary=".\./python32.lib"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"/>
@@ -99,15 +99,15 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="getbuildinfo.o"
- OutputFile="./python31_d.dll"
+ OutputFile="./python32_d.dll"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
IgnoreDefaultLibraryNames="libc"
GenerateDebugInformation="TRUE"
- ProgramDatabaseFile=".\./python31_d.pdb"
+ ProgramDatabaseFile=".\./python32_d.pdb"
SubSystem="2"
BaseAddress="0x1e000000"
- ImportLibrary=".\./python31_d.lib"
+ ImportLibrary=".\./python32_d.lib"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"/>
@@ -166,15 +166,15 @@
Name="VCLinkerTool"
AdditionalOptions=" /MACHINE:IA64 /USELINK:MS_SDK"
AdditionalDependencies="getbuildinfo.o"
- OutputFile="./python31.dll"
+ OutputFile="./python32.dll"
LinkIncremental="1"
SuppressStartupBanner="FALSE"
IgnoreDefaultLibraryNames="libc"
GenerateDebugInformation="TRUE"
- ProgramDatabaseFile=".\./python31.pdb"
+ ProgramDatabaseFile=".\./python32.pdb"
SubSystem="2"
BaseAddress="0x1e000000"
- ImportLibrary=".\./python31.lib"
+ ImportLibrary=".\./python32.lib"
TargetMachine="0"/>
<Tool
Name="VCMIDLTool"/>
@@ -233,15 +233,15 @@
Name="VCLinkerTool"
AdditionalOptions=" /MACHINE:AMD64 /USELINK:MS_SDK"
AdditionalDependencies="getbuildinfo.o"
- OutputFile="./python31.dll"
+ OutputFile="./python32.dll"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
IgnoreDefaultLibraryNames="libc"
GenerateDebugInformation="TRUE"
- ProgramDatabaseFile=".\./python31.pdb"
+ ProgramDatabaseFile=".\./python32.pdb"
SubSystem="2"
BaseAddress="0x1e000000"
- ImportLibrary=".\./python31.lib"
+ ImportLibrary=".\./python32.lib"
TargetMachine="0"/>
<Tool
Name="VCMIDLTool"/>
@@ -391,9 +391,15 @@
RelativePath="..\..\Modules\_codecsmodule.c">
</File>
<File
+ RelativePath="..\..\Modules\_collectionsmodule.c">
+ </File>
+ <File
RelativePath="..\..\Modules\_csv.c">
</File>
<File
+ RelativePath="..\..\Modules\_datetimemodule.c">
+ </File>
+ <File
RelativePath="..\..\Modules\_functoolsmodule.c">
</File>
<File
@@ -409,6 +415,9 @@
RelativePath="..\..\Modules\_lsprof.c">
</File>
<File
+ RelativePath="..\..\Modules\_math.c">
+ </File>
+ <File
RelativePath="..\..\Modules\_pickle.c">
</File>
<File
@@ -424,10 +433,13 @@
RelativePath="..\..\Pc\_subprocess.c">
</File>
<File
- RelativePath="..\..\Modules\_weakref.c">
+ RelativePath="..\..\Modules\_time.c">
</File>
<File
- RelativePath="..\..\Pc\winreg.c">
+ RelativePath="..\..\Python\_warnings.c">
+ </File>
+ <File
+ RelativePath="..\..\Modules\_weakref.c">
</File>
<File
RelativePath="..\..\Objects\abstract.c">
@@ -439,9 +451,6 @@
RelativePath="..\..\Modules\arraymodule.c">
</File>
<File
- RelativePath="..\..\Python\_warnings.c">
- </File>
- <File
RelativePath="..\..\Python\asdl.c">
</File>
<File
@@ -466,10 +475,10 @@
RelativePath="..\..\Objects\boolobject.c">
</File>
<File
- RelativePath="..\..\Objects\bytearrayobject.c">
+ RelativePath="..\..\Objects\bytes_methods.c">
</File>
<File
- RelativePath="..\..\Objects\bytes_methods.c">
+ RelativePath="..\..\Objects\bytearrayobject.c">
</File>
<File
RelativePath="..\..\Objects\bytesobject.c">
@@ -490,18 +499,12 @@
RelativePath="..\..\Modules\cmathmodule.c">
</File>
<File
- RelativePath="..\..\Objects\cobject.c">
- </File>
- <File
RelativePath="..\..\Python\codecs.c">
</File>
<File
RelativePath="..\..\Objects\codeobject.c">
</File>
<File
- RelativePath="..\..\Modules\_collectionsmodule.c">
- </File>
- <File
RelativePath="..\..\Python\compile.c">
</File>
<File
@@ -511,7 +514,7 @@
RelativePath="..\..\PC\config.c">
</File>
<File
- RelativePath="..\..\Modules\datetimemodule.c">
+ RelativePath="..\..\Python\dynamic_annotations.c">
</File>
<File
RelativePath="..\..\Objects\descrobject.c">
@@ -544,6 +547,9 @@
RelativePath="..\..\Objects\fileobject.c">
</File>
<File
+ RelativePath="..\..\Python\fileutils.c">
+ </File>
+ <File
RelativePath="..\..\Parser\firstsets.c">
</File>
<File
@@ -746,6 +752,9 @@
RelativePath="..\..\Python\pystrtod.c">
</File>
<File
+ RelativePath="..\..\Python\pytime.c">
+ </File>
+ <File
RelativePath="..\..\Python\Python-ast.c">
</File>
<File
@@ -821,6 +830,9 @@
RelativePath="..\..\Objects\unicodeobject.c">
</File>
<File
+ RelativePath="..\..\Pc\winreg.c">
+ </File>
+ <File
RelativePath="..\..\Objects\weakrefobject.c">
</File>
<File
diff --git a/PC/VS7.1/rt.bat b/PC/VS7.1/rt.bat
index ba1d090..a910a79 100755
--- a/PC/VS7.1/rt.bat
+++ b/PC/VS7.1/rt.bat
@@ -27,7 +27,7 @@ setlocal
set exe=python
set qmode=
set dashO=
-PATH %PATH%;..\..\..\tcltk\bin
+PATH %PATH%;%~dp0..\..\..\tcltk\bin
:CheckOpts
if "%1"=="-O" (set dashO=-O) & shift & goto CheckOpts
diff --git a/PC/VS8.0/_hashlib.vcproj b/PC/VS8.0/_hashlib.vcproj
index faa8388..f031e2e 100644
--- a/PC/VS8.0/_hashlib.vcproj
+++ b/PC/VS8.0/_hashlib.vcproj
@@ -27,7 +27,6 @@
>
<Tool
Name="VCPreBuildEventTool"
- CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
/>
<Tool
Name="VCCustomBuildTool"
@@ -89,7 +88,6 @@
>
<Tool
Name="VCPreBuildEventTool"
- CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
/>
<Tool
Name="VCCustomBuildTool"
@@ -153,7 +151,6 @@
>
<Tool
Name="VCPreBuildEventTool"
- CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
/>
<Tool
Name="VCCustomBuildTool"
@@ -216,7 +213,6 @@
>
<Tool
Name="VCPreBuildEventTool"
- CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
/>
<Tool
Name="VCCustomBuildTool"
@@ -280,7 +276,6 @@
>
<Tool
Name="VCPreBuildEventTool"
- CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
/>
<Tool
Name="VCCustomBuildTool"
@@ -343,7 +338,6 @@
>
<Tool
Name="VCPreBuildEventTool"
- CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
/>
<Tool
Name="VCCustomBuildTool"
@@ -408,7 +402,6 @@
>
<Tool
Name="VCPreBuildEventTool"
- CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
/>
<Tool
Name="VCCustomBuildTool"
@@ -471,7 +464,6 @@
>
<Tool
Name="VCPreBuildEventTool"
- CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
/>
<Tool
Name="VCCustomBuildTool"
diff --git a/PC/VS8.0/_sqlite3.vcproj b/PC/VS8.0/_sqlite3.vcproj
index b785f95..64f19f1 100644
--- a/PC/VS8.0/_sqlite3.vcproj
+++ b/PC/VS8.0/_sqlite3.vcproj
@@ -42,7 +42,7 @@
/>
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="..\..\..\sqlite-3.5.9"
+ AdditionalIncludeDirectories="..\..\..\sqlite-3.6.21"
PreprocessorDefinitions="MODULE_NAME=\&quot;sqlite3\&quot;"
/>
<Tool
@@ -104,7 +104,7 @@
/>
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="..\..\..\sqlite-3.5.9"
+ AdditionalIncludeDirectories="..\..\..\sqlite-3.6.21"
PreprocessorDefinitions="MODULE_NAME=\&quot;sqlite3\&quot;"
/>
<Tool
@@ -166,7 +166,7 @@
/>
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="..\..\..\sqlite-3.5.9"
+ AdditionalIncludeDirectories="..\..\..\sqlite-3.6.21"
PreprocessorDefinitions="MODULE_NAME=\&quot;sqlite3\&quot;"
/>
<Tool
@@ -229,7 +229,7 @@
/>
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="..\..\..\sqlite-3.5.9"
+ AdditionalIncludeDirectories="..\..\..\sqlite-3.6.21"
PreprocessorDefinitions="MODULE_NAME=\&quot;sqlite3\&quot;"
/>
<Tool
@@ -291,7 +291,7 @@
/>
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="..\..\..\sqlite-3.5.9"
+ AdditionalIncludeDirectories="..\..\..\sqlite-3.6.21"
PreprocessorDefinitions="MODULE_NAME=\&quot;sqlite3\&quot;"
/>
<Tool
@@ -354,7 +354,7 @@
/>
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="..\..\..\sqlite-3.5.9"
+ AdditionalIncludeDirectories="..\..\..\sqlite-3.6.21"
PreprocessorDefinitions="MODULE_NAME=\&quot;sqlite3\&quot;"
/>
<Tool
@@ -417,7 +417,7 @@
/>
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="..\..\..\sqlite-3.5.9"
+ AdditionalIncludeDirectories="..\..\..\sqlite-3.6.21"
PreprocessorDefinitions="MODULE_NAME=\&quot;sqlite3\&quot;"
/>
<Tool
@@ -480,7 +480,7 @@
/>
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="..\..\..\sqlite-3.5.9"
+ AdditionalIncludeDirectories="..\..\..\sqlite-3.6.21"
PreprocessorDefinitions="MODULE_NAME=\&quot;sqlite3\&quot;"
/>
<Tool
diff --git a/PC/VS8.0/_ssl.vcproj b/PC/VS8.0/_ssl.vcproj
index 69f7726..d9267a4 100644
--- a/PC/VS8.0/_ssl.vcproj
+++ b/PC/VS8.0/_ssl.vcproj
@@ -27,7 +27,6 @@
>
<Tool
Name="VCPreBuildEventTool"
- CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
/>
<Tool
Name="VCCustomBuildTool"
@@ -89,7 +88,6 @@
>
<Tool
Name="VCPreBuildEventTool"
- CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
/>
<Tool
Name="VCCustomBuildTool"
@@ -153,7 +151,6 @@
>
<Tool
Name="VCPreBuildEventTool"
- CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
/>
<Tool
Name="VCCustomBuildTool"
@@ -216,7 +213,6 @@
>
<Tool
Name="VCPreBuildEventTool"
- CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
/>
<Tool
Name="VCCustomBuildTool"
@@ -280,7 +276,6 @@
>
<Tool
Name="VCPreBuildEventTool"
- CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
/>
<Tool
Name="VCCustomBuildTool"
@@ -343,7 +338,6 @@
>
<Tool
Name="VCPreBuildEventTool"
- CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
/>
<Tool
Name="VCCustomBuildTool"
@@ -408,7 +402,6 @@
>
<Tool
Name="VCPreBuildEventTool"
- CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
/>
<Tool
Name="VCCustomBuildTool"
@@ -471,7 +464,6 @@
>
<Tool
Name="VCPreBuildEventTool"
- CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
/>
<Tool
Name="VCCustomBuildTool"
diff --git a/PC/VS8.0/build_ssl.bat b/PC/VS8.0/build_ssl.bat
index cee64a8..39c1ff0 100644
--- a/PC/VS8.0/build_ssl.bat
+++ b/PC/VS8.0/build_ssl.bat
@@ -2,10 +2,10 @@
if not defined HOST_PYTHON (
if %1 EQU Debug (
set HOST_PYTHON=python_d.exe
- if not exist python31_d.dll exit 1
+ if not exist python32_d.dll exit 1
) ELSE (
set HOST_PYTHON=python.exe
- if not exist python31.dll exit 1
+ if not exist python32.dll exit 1
)
)
%HOST_PYTHON% build_ssl.py %1 %2 %3
diff --git a/PC/VS8.0/build_ssl.py b/PC/VS8.0/build_ssl.py
index a08cc5e..dc13ef5 100644
--- a/PC/VS8.0/build_ssl.py
+++ b/PC/VS8.0/build_ssl.py
@@ -141,11 +141,27 @@ def fix_makefile(makefile):
fout.write(line)
def run_configure(configure, do_script):
- print("perl Configure "+configure)
- os.system("perl Configure "+configure)
+ print("perl Configure "+configure+" no-idea no-mdc2")
+ os.system("perl Configure "+configure+" no-idea no-mdc2")
print(do_script)
os.system(do_script)
+def cmp(f1, f2):
+ bufsize = 1024 * 8
+ with open(f1, 'rb') as fp1, open(f2, 'rb') as fp2:
+ while True:
+ b1 = fp1.read(bufsize)
+ b2 = fp2.read(bufsize)
+ if b1 != b2:
+ return False
+ if not b1:
+ return True
+
+def copy(src, dst):
+ if os.path.isfile(dst) and cmp(src, dst):
+ return
+ shutil.copy(src, dst)
+
def main():
build_all = "-a" in sys.argv
if sys.argv[1] == "Release":
@@ -161,12 +177,14 @@ def main():
do_script = "ms\\do_nasm"
makefile="ms\\nt.mak"
m32 = makefile
+ dirsuffix = "32"
elif sys.argv[2] == "x64":
arch="amd64"
configure = "VC-WIN64A"
do_script = "ms\\do_win64a"
makefile = "ms\\nt64.mak"
m32 = makefile.replace('64', '')
+ dirsuffix = "64"
#os.environ["VSEXTCOMP_USECL"] = "MS_OPTERON"
else:
raise ValueError(str(sys.argv))
@@ -220,8 +238,17 @@ def main():
if arch == "amd64":
create_makefile64(makefile, m32)
fix_makefile(makefile)
- shutil.copy(r"crypto\buildinf.h", r"crypto\buildinf_%s.h" % arch)
- shutil.copy(r"crypto\opensslconf.h", r"crypto\opensslconf_%s.h" % arch)
+ copy(r"crypto\buildinf.h", r"crypto\buildinf_%s.h" % arch)
+ copy(r"crypto\opensslconf.h", r"crypto\opensslconf_%s.h" % arch)
+
+ # If the assembler files don't exist in tmpXX, copy them there
+ if perl is None and os.path.exists("asm"+dirsuffix):
+ if not os.path.exists("tmp"+dirsuffix):
+ os.mkdir("tmp"+dirsuffix)
+ for f in os.listdir("asm"+dirsuffix):
+ if not f.endswith(".asm"): continue
+ if os.path.isfile(r"tmp%s\%s" % (dirsuffix, f)): continue
+ shutil.copy(r"asm%s\%s" % (dirsuffix, f), "tmp"+dirsuffix)
# Now run make.
if arch == "amd64":
@@ -230,8 +257,8 @@ def main():
print("ml64 assembler has failed.")
sys.exit(rc)
- shutil.copy(r"crypto\buildinf_%s.h" % arch, r"crypto\buildinf.h")
- shutil.copy(r"crypto\opensslconf_%s.h" % arch, r"crypto\opensslconf.h")
+ copy(r"crypto\buildinf_%s.h" % arch, r"crypto\buildinf.h")
+ copy(r"crypto\opensslconf_%s.h" % arch, r"crypto\opensslconf.h")
#makeCommand = "nmake /nologo PERL=\"%s\" -f \"%s\"" %(perl, makefile)
makeCommand = "nmake /nologo -f \"%s\"" % makefile
diff --git a/PC/VS8.0/bz2.vcproj b/PC/VS8.0/bz2.vcproj
index e6ffdf2..a97d1d5 100644
--- a/PC/VS8.0/bz2.vcproj
+++ b/PC/VS8.0/bz2.vcproj
@@ -43,7 +43,7 @@
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="$(bz2Dir)"
- PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64"
+ PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -105,7 +105,7 @@
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="$(bz2Dir)"
- PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64"
+ PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -167,7 +167,7 @@
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="$(bz2Dir)"
- PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64"
+ PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -230,7 +230,7 @@
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="$(bz2Dir)"
- PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64"
+ PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -292,7 +292,7 @@
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="$(bz2Dir)"
- PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64"
+ PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -355,7 +355,7 @@
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="$(bz2Dir)"
- PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64"
+ PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -418,7 +418,7 @@
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="$(bz2Dir)"
- PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64"
+ PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -481,7 +481,7 @@
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="$(bz2Dir)"
- PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64"
+ PreprocessorDefinitions="WIN32;_FILE_OFFSET_BITS=64;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE"
/>
<Tool
Name="VCManagedResourceCompilerTool"
diff --git a/PC/VS8.0/kill_python.c b/PC/VS8.0/kill_python.c
index 17a5f32..6b91678 100644
--- a/PC/VS8.0/kill_python.c
+++ b/PC/VS8.0/kill_python.c
@@ -106,7 +106,7 @@ main(int argc, char **argv)
/*
* XXX TODO: if we really wanted to be fancy, we could check the
* modules for all processes (not just the python[_d].exe ones)
- * and see if any of our DLLs are loaded (i.e. python31[_d].dll),
+ * and see if any of our DLLs are loaded (i.e. python32[_d].dll),
* as that would also inhibit our ability to rebuild the solution.
* Not worth loosing sleep over though; for now, a simple check
* for just the python executable should be sufficient.
diff --git a/PC/VS8.0/make_buildinfo.c b/PC/VS8.0/make_buildinfo.c
index 8cc3da2..8efa07a 100644
--- a/PC/VS8.0/make_buildinfo.c
+++ b/PC/VS8.0/make_buildinfo.c
@@ -19,9 +19,15 @@
invoked as a pre-link step for pythoncore, so that overwrites
any previous getbuildinfo.o.
+ However, if a second argument is provided, this will be used
+ as a temporary directory where any getbuildinfo2.c and
+ getbuildinfo.o files are put. This is useful if multiple
+ configurations are being built in parallel, to avoid them
+ trampling each other's files.
+
*/
-int make_buildinfo2()
+int make_buildinfo2(const char *tmppath)
{
struct _stat st;
HKEY hTortoise;
@@ -46,7 +52,9 @@ int make_buildinfo2()
if (_stat(command+1, &st) < 0)
/* subwcrev.exe not part of the release */
return 0;
- strcat_s(command, CMD_SIZE, "\" ..\\.. ..\\..\\Modules\\getbuildinfo.c getbuildinfo2.c");
+ strcat_s(command, CMD_SIZE, "\" ..\\.. ..\\..\\Modules\\getbuildinfo.c ");
+ strcat_s(command, CMD_SIZE, tmppath);
+ strcat_s(command, CMD_SIZE, "getbuildinfo2.c");
puts(command); fflush(stdout);
if (system(command) < 0)
return 0;
@@ -55,10 +63,12 @@ int make_buildinfo2()
int main(int argc, char*argv[])
{
- char command[500] = "cl.exe -c -D_WIN32 -DUSE_DL_EXPORT -D_WINDOWS -DWIN32 -D_WINDLL ";
+ char command[CMD_SIZE] = "cl.exe -c -D_WIN32 -DUSE_DL_EXPORT -D_WINDOWS -DWIN32 -D_WINDLL ";
+ char tmppath[CMD_SIZE] = "";
int do_unlink, result;
- if (argc != 2) {
- fprintf(stderr, "make_buildinfo $(ConfigurationName)\n");
+ char *tmpdir = NULL;
+ if (argc <= 2 || argc > 3) {
+ fprintf(stderr, "make_buildinfo $(ConfigurationName) [tmpdir]\n");
return EXIT_FAILURE;
}
if (strcmp(argv[1], "Release") == 0) {
@@ -78,16 +88,28 @@ int main(int argc, char*argv[])
fprintf(stderr, "unsupported configuration %s\n", argv[1]);
return EXIT_FAILURE;
}
+ if (argc > 2) {
+ tmpdir = argv[2];
+ strcat_s(tmppath, _countof(tmppath), tmpdir);
+ strcat_s(tmppath, _countof(tmppath), "\\");
+ }
- if ((do_unlink = make_buildinfo2()))
+ if ((do_unlink = make_buildinfo2(tmppath))) {
+ strcat_s(command, CMD_SIZE, tmppath);
strcat_s(command, CMD_SIZE, "getbuildinfo2.c -DSUBWCREV ");
- else
+ } else
strcat_s(command, CMD_SIZE, "..\\..\\Modules\\getbuildinfo.c");
- strcat_s(command, CMD_SIZE, " -Fogetbuildinfo.o -I..\\..\\Include -I..\\..\\PC");
+ strcat_s(command, CMD_SIZE, " -Fo");
+ strcat_s(command, CMD_SIZE, tmppath);
+ strcat_s(command, CMD_SIZE, "getbuildinfo.o -I..\\..\\Include -I..\\..\\PC");
puts(command); fflush(stdout);
result = system(command);
- if (do_unlink)
- _unlink("getbuildinfo2.c");
+ if (do_unlink) {
+ command[0] = '\0';
+ strcat_s(command, CMD_SIZE, tmppath);
+ strcat_s(command, CMD_SIZE, "getbuildinfo2.c");
+ _unlink(command);
+ }
if (result < 0)
return EXIT_FAILURE;
return 0;
diff --git a/PC/VS8.0/make_buildinfo.vcproj b/PC/VS8.0/make_buildinfo.vcproj
index 3cc71e6..fb5cccd 100644
--- a/PC/VS8.0/make_buildinfo.vcproj
+++ b/PC/VS8.0/make_buildinfo.vcproj
@@ -12,9 +12,6 @@
<Platform
Name="Win32"
/>
- <Platform
- Name="x64"
- />
</Platforms>
<ToolFiles>
</ToolFiles>
@@ -84,64 +81,6 @@
Name="VCPostBuildEventTool"
/>
</Configuration>
- <Configuration
- Name="Release|x64"
- ConfigurationType="1"
- InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\release.vsprops"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="_CONSOLE"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
</Configurations>
<References>
</References>
diff --git a/PC/VS8.0/pcbuild.sln b/PC/VS8.0/pcbuild.sln
index b4fe99f..9aca4aa 100644
--- a/PC/VS8.0/pcbuild.sln
+++ b/PC/VS8.0/pcbuild.sln
@@ -74,6 +74,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_ssl", "_ssl.vcproj", "{C6E
{B11D750F-CD1F-4A96-85CE-E69A5C5259F9} = {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}
{86937F53-C189-40EF-8CE8-8759D8E7D480} = {86937F53-C189-40EF-8CE8-8759D8E7D480}
{CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0} = {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testcapi", "_testcapi.vcproj", "{6901D91C-6E48-4BB7-9FEC-700C8131DF1D}"
@@ -112,6 +113,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_hashlib", "_hashlib.vcproj
ProjectSection(ProjectDependencies) = postProject
{B11D750F-CD1F-4A96-85CE-E69A5C5259F9} = {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}
{CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0} = {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sqlite3", "sqlite3.vcproj", "{A1A295E5-463C-437F-81CA-1F32367685DA}"
@@ -124,6 +126,11 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_multiprocessing", "_multip
{CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
EndProjectSection
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ssl", "ssl.vcproj", "{E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}"
+ ProjectSection(ProjectDependencies) = postProject
+ {B11D750F-CD1F-4A96-85CE-E69A5C5259F9} = {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}
+ EndProjectSection
+EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "kill_python", "kill_python.vcproj", "{6DE10744-E396-40A5-B4E2-1B69AA7C8D31}"
EndProject
Global
@@ -514,6 +521,22 @@ Global
{9E48B300-37D1-11DD-8C41-005056C00008}.Release|Win32.Build.0 = Release|Win32
{9E48B300-37D1-11DD-8C41-005056C00008}.Release|x64.ActiveCfg = Release|x64
{9E48B300-37D1-11DD-8C41-005056C00008}.Release|x64.Build.0 = Release|x64
+ {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Debug|Win32.ActiveCfg = Debug|Win32
+ {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Debug|Win32.Build.0 = Debug|Win32
+ {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Debug|x64.ActiveCfg = Debug|x64
+ {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Debug|x64.Build.0 = Debug|x64
+ {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Release|Win32.ActiveCfg = Release|Win32
+ {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Release|Win32.Build.0 = Release|Win32
+ {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Release|x64.ActiveCfg = Release|x64
+ {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Release|x64.Build.0 = Release|x64
{6DE10744-E396-40A5-B4E2-1B69AA7C8D31}.Debug|Win32.ActiveCfg = Debug|Win32
{6DE10744-E396-40A5-B4E2-1B69AA7C8D31}.Debug|Win32.Build.0 = Debug|Win32
{6DE10744-E396-40A5-B4E2-1B69AA7C8D31}.Debug|x64.ActiveCfg = Debug|x64
diff --git a/PC/VS8.0/pyproject.vsprops b/PC/VS8.0/pyproject.vsprops
index 70025bd..6494216 100644
--- a/PC/VS8.0/pyproject.vsprops
+++ b/PC/VS8.0/pyproject.vsprops
@@ -38,7 +38,7 @@
/>
<UserMacro
Name="PyDllName"
- Value="python31"
+ Value="python32"
/>
<UserMacro
Name="PythonExe"
@@ -50,7 +50,7 @@
/>
<UserMacro
Name="sqlite3Dir"
- Value="$(externalsDir)\sqlite-3.5.9"
+ Value="$(externalsDir)\sqlite-3.6.21"
/>
<UserMacro
Name="bz2Dir"
@@ -58,7 +58,7 @@
/>
<UserMacro
Name="opensslDir"
- Value="$(externalsDir)\openssl-0.9.8l"
+ Value="$(externalsDir)\openssl-1.0.0a"
/>
<UserMacro
Name="tcltkDir"
diff --git a/PC/VS8.0/pythoncore.vcproj b/PC/VS8.0/pythoncore.vcproj
index 5c806d8..7252bcd 100644
--- a/PC/VS8.0/pythoncore.vcproj
+++ b/PC/VS8.0/pythoncore.vcproj
@@ -59,11 +59,11 @@
<Tool
Name="VCPreLinkEventTool"
Description="Generate build information..."
- CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release"
+ CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release $(IntDir)"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="getbuildinfo.o"
+ AdditionalDependencies="$(IntDir)\getbuildinfo.o"
OutputFile="$(OutDir)\$(PyDllName).dll"
IgnoreDefaultLibraryNames="libc"
ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb"
@@ -134,11 +134,11 @@
<Tool
Name="VCPreLinkEventTool"
Description="Generate build information..."
- CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release"
+ CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release $(IntDir)"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="getbuildinfo.o"
+ AdditionalDependencies="$(IntDir)\getbuildinfo.o"
OutputFile="$(OutDir)\$(PyDllName).dll"
IgnoreDefaultLibraryNames="libc"
ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb"
@@ -212,11 +212,11 @@
<Tool
Name="VCPreLinkEventTool"
Description="Generate build information..."
- CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Debug"
+ CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Debug $(IntDir)"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="getbuildinfo.o"
+ AdditionalDependencies="$(IntDir)\getbuildinfo.o"
OutputFile="$(OutDir)\$(PyDllName)_d.dll"
IgnoreDefaultLibraryNames="libc"
ProgramDatabaseFile="$(OutDir)$(PyDllName)_d.pdb"
@@ -290,11 +290,11 @@
<Tool
Name="VCPreLinkEventTool"
Description="Generate build information..."
- CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Debug"
+ CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Debug $(IntDir)"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="getbuildinfo.o"
+ AdditionalDependencies="$(IntDir)\getbuildinfo.o"
OutputFile="$(OutDir)\$(PyDllName)_d.dll"
IgnoreDefaultLibraryNames="libc"
ProgramDatabaseFile="$(OutDir)$(PyDllName)_d.pdb"
@@ -364,11 +364,11 @@
<Tool
Name="VCPreLinkEventTool"
Description="Generate build information..."
- CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release"
+ CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release $(IntDir)"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="getbuildinfo.o"
+ AdditionalDependencies="$(IntDir)\getbuildinfo.o"
OutputFile="$(OutDir)\$(PyDllName).dll"
IgnoreDefaultLibraryNames="libc"
ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb"
@@ -439,11 +439,11 @@
<Tool
Name="VCPreLinkEventTool"
Description="Generate build information..."
- CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release"
+ CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release $(IntDir)"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="getbuildinfo.o"
+ AdditionalDependencies="$(IntDir)\getbuildinfo.o"
OutputFile="$(OutDir)\$(PyDllName).dll"
IgnoreDefaultLibraryNames="libc"
ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb"
@@ -514,11 +514,11 @@
<Tool
Name="VCPreLinkEventTool"
Description="Generate build information..."
- CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release"
+ CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release ($IntDir)"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="getbuildinfo.o"
+ AdditionalDependencies="$(IntDir)\getbuildinfo.o"
OutputFile="$(OutDir)\$(PyDllName).dll"
IgnoreDefaultLibraryNames="libc"
ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb"
@@ -589,11 +589,11 @@
<Tool
Name="VCPreLinkEventTool"
Description="Generate build information..."
- CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release"
+ CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release $(IntDir)"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="getbuildinfo.o"
+ AdditionalDependencies="$(IntDir)\getbuildinfo.o"
OutputFile="$(OutDir)\$(PyDllName).dll"
IgnoreDefaultLibraryNames="libc"
ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb"
@@ -675,10 +675,6 @@
>
</File>
<File
- RelativePath="..\..\Include\cobject.h"
- >
- </File>
- <File
RelativePath="..\..\Include\code.h"
>
</File>
@@ -707,6 +703,10 @@
>
</File>
<File
+ RelativePath="..\..\Include\dynamic_annotations.h"
+ >
+ </File>
+ <File
RelativePath="..\..\Include\enumobject.h"
>
</File>
@@ -723,6 +723,10 @@
>
</File>
<File
+ RelativePath="..\..\Include\fileutils.h"
+ >
+ </File>
+ <File
RelativePath="..\..\Include\floatobject.h"
>
</File>
@@ -755,10 +759,6 @@
>
</File>
<File
- RelativePath="..\..\Include\intobject.h"
- >
- </File>
- <File
RelativePath="..\..\Include\intrcheck.h"
>
</File>
@@ -883,6 +883,10 @@
>
</File>
<File
+ RelativePath="..\..\Include\pytime.h"
+ >
+ </File>
+ <File
RelativePath="..\..\Include\pymem.h"
>
</File>
@@ -1019,6 +1023,14 @@
>
</File>
<File
+ RelativePath="..\..\Modules\_math.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_math.h"
+ >
+ </File>
+ <File
RelativePath="..\..\Modules\_pickle.c"
>
</File>
@@ -1035,6 +1047,14 @@
>
</File>
<File
+ RelativePath="..\..\Modules\_time.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Modules\_time.h"
+ >
+ </File>
+ <File
RelativePath="..\..\Modules\_weakref.c"
>
</File>
@@ -1059,7 +1079,7 @@
>
</File>
<File
- RelativePath="..\..\Modules\datetimemodule.c"
+ RelativePath="..\..\Modules\_datetimemodule.c"
>
</File>
<File
@@ -1216,6 +1236,70 @@
<File
RelativePath="..\..\Modules\zlib\gzio.c"
>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win64"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win64"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="PGInstrument|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="PGInstrument|Win64"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="PGUpdate|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="PGUpdate|Win64"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
+ />
+ </FileConfiguration>
</File>
<File
RelativePath="..\..\Modules\zlib\infback.c"
@@ -1391,10 +1475,6 @@
>
</File>
<File
- RelativePath="..\..\Objects\cobject.c"
- >
- </File>
- <File
RelativePath="..\..\Objects\codeobject.c"
>
</File>
@@ -1499,6 +1579,10 @@
>
</File>
<File
+ RelativePath="..\..\Objects\stringlib\split.h"
+ >
+ </File>
+ <File
RelativePath="..\..\Objects\structseq.c"
>
</File>
@@ -1659,6 +1743,10 @@
>
</File>
<File
+ RelativePath="..\..\Python\dynamic_annotations.c"
+ >
+ </File>
+ <File
RelativePath="..\..\Python\dynload_win.c"
>
</File>
@@ -1667,6 +1755,10 @@
>
</File>
<File
+ RelativePath="..\..\Python\fileutils.c"
+ >
+ </File>
+ <File
RelativePath="..\..\Python\formatter_unicode.c"
>
</File>
@@ -1755,6 +1847,10 @@
>
</File>
<File
+ RelativePath="..\..\Python\pytime.c"
+ >
+ </File>
+ <File
RelativePath="..\..\Python\pystate.c"
>
</File>
diff --git a/PC/VS8.0/rt.bat b/PC/VS8.0/rt.bat
index c35ec0c..0429e19 100644
--- a/PC/VS8.0/rt.bat
+++ b/PC/VS8.0/rt.bat
@@ -27,7 +27,7 @@ setlocal
set exe=python
set qmode=
set dashO=
-PATH %PATH%;..\..\..\tcltk\bin
+PATH %PATH%;%~dp0..\..\..\tcltk\bin
:CheckOpts
if "%1"=="-O" (set dashO=-O) & shift & goto CheckOpts
diff --git a/PC/VS8.0/sqlite3.vcproj b/PC/VS8.0/sqlite3.vcproj
index 9fe8a9b..9afbe5d 100644
--- a/PC/VS8.0/sqlite3.vcproj
+++ b/PC/VS8.0/sqlite3.vcproj
@@ -287,7 +287,7 @@
/>
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="&quot;..\..\..\sqlite-3.5.9&quot;"
+ AdditionalIncludeDirectories="&quot;..\..\..\sqlite-3.6.21&quot;"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -515,11 +515,11 @@
Name="Header Files"
>
<File
- RelativePath="..\..\..\sqlite-3.5.9\sqlite3.h"
+ RelativePath="..\..\..\sqlite-3.6.21\sqlite3.h"
>
</File>
<File
- RelativePath="..\..\..\sqlite-3.5.9\sqlite3ext.h"
+ RelativePath="..\..\..\sqlite-3.6.21\sqlite3ext.h"
>
</File>
</Filter>
@@ -527,7 +527,7 @@
Name="Source Files"
>
<File
- RelativePath="..\..\..\sqlite-3.5.9\sqlite3.c"
+ RelativePath="..\..\..\sqlite-3.6.21\sqlite3.c"
>
</File>
</Filter>
diff --git a/PC/VS8.0/sqlite3.vsprops b/PC/VS8.0/sqlite3.vsprops
index 8c028dc..8300328 100644
--- a/PC/VS8.0/sqlite3.vsprops
+++ b/PC/VS8.0/sqlite3.vsprops
@@ -7,7 +7,7 @@
>
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="..\..\..\sqlite-3.5.9"
+ AdditionalIncludeDirectories="..\..\..\sqlite-3.6.21"
PreprocessorDefinitions="SQLITE_API=__declspec(dllexport)"
WarningLevel="1"
/>
diff --git a/PC/VS8.0/ssl.vcproj b/PC/VS8.0/ssl.vcproj
new file mode 100644
index 0000000..f0d635e
--- /dev/null
+++ b/PC/VS8.0/ssl.vcproj
@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="ssl"
+ ProjectGUID="{E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}"
+ RootNamespace="ssl"
+ Keyword="MakeFileProj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="0"
+ InheritedPropertySheets=".\pyd_d.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCNMakeTool"
+ BuildCommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
+ ReBuildCommandLine=""
+ CleanCommandLine=""
+ Output=""
+ PreprocessorDefinitions=""
+ IncludeSearchPath=""
+ ForcedIncludes=""
+ AssemblySearchPath=""
+ ForcedUsingAssemblies=""
+ CompileAsManaged=""
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="0"
+ InheritedPropertySheets=".\pyd_d.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCNMakeTool"
+ BuildCommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
+ ReBuildCommandLine=""
+ CleanCommandLine=""
+ Output=""
+ PreprocessorDefinitions=""
+ IncludeSearchPath=""
+ ForcedIncludes=""
+ AssemblySearchPath=""
+ ForcedUsingAssemblies=""
+ CompileAsManaged=""
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="0"
+ InheritedPropertySheets=".\pyd.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCNMakeTool"
+ BuildCommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
+ ReBuildCommandLine=""
+ CleanCommandLine=""
+ Output=""
+ PreprocessorDefinitions=""
+ IncludeSearchPath=""
+ ForcedIncludes=""
+ AssemblySearchPath=""
+ ForcedUsingAssemblies=""
+ CompileAsManaged=""
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="0"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCNMakeTool"
+ BuildCommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
+ ReBuildCommandLine=""
+ CleanCommandLine=""
+ Output=""
+ PreprocessorDefinitions=""
+ IncludeSearchPath=""
+ ForcedIncludes=""
+ AssemblySearchPath=""
+ ForcedUsingAssemblies=""
+ CompileAsManaged=""
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|Win32"
+ ConfigurationType="0"
+ InheritedPropertySheets=".\pyd.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCNMakeTool"
+ BuildCommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
+ ReBuildCommandLine=""
+ CleanCommandLine=""
+ Output=""
+ PreprocessorDefinitions=""
+ IncludeSearchPath=""
+ ForcedIncludes=""
+ AssemblySearchPath=""
+ ForcedUsingAssemblies=""
+ CompileAsManaged=""
+ />
+ </Configuration>
+ <Configuration
+ Name="PGInstrument|x64"
+ ConfigurationType="0"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pginstrument.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCNMakeTool"
+ BuildCommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
+ ReBuildCommandLine=""
+ CleanCommandLine=""
+ Output=""
+ PreprocessorDefinitions=""
+ IncludeSearchPath=""
+ ForcedIncludes=""
+ AssemblySearchPath=""
+ ForcedUsingAssemblies=""
+ CompileAsManaged=""
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|Win32"
+ ConfigurationType="0"
+ InheritedPropertySheets=".\pyd.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCNMakeTool"
+ BuildCommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
+ ReBuildCommandLine=""
+ CleanCommandLine=""
+ Output=""
+ PreprocessorDefinitions=""
+ IncludeSearchPath=""
+ ForcedIncludes=""
+ AssemblySearchPath=""
+ ForcedUsingAssemblies=""
+ CompileAsManaged=""
+ />
+ </Configuration>
+ <Configuration
+ Name="PGUpdate|x64"
+ ConfigurationType="0"
+ InheritedPropertySheets=".\pyd.vsprops;.\x64.vsprops;.\pgupdate.vsprops"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCNMakeTool"
+ BuildCommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;"
+ ReBuildCommandLine=""
+ CleanCommandLine=""
+ Output=""
+ PreprocessorDefinitions=""
+ IncludeSearchPath=""
+ ForcedIncludes=""
+ AssemblySearchPath=""
+ ForcedUsingAssemblies=""
+ CompileAsManaged=""
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/_msi.c b/PC/_msi.c
index 26f3f33..d4d8483 100644
--- a/PC/_msi.c
+++ b/PC/_msi.c
@@ -1,5 +1,5 @@
/* Helper library for MSI creation with Python.
- * Copyright (C) 2005 Martin v. Löwis
+ * Copyright (C) 2005 Martin v. Löwis
* Licensed to PSF under a contributor agreement.
*/
diff --git a/PC/_subprocess.c b/PC/_subprocess.c
index 27d3dc6..2338f30 100644
--- a/PC/_subprocess.c
+++ b/PC/_subprocess.c
@@ -329,7 +329,8 @@ gethandle(PyObject* obj, char* name)
static PyObject*
getenvironment(PyObject* environment)
{
- int i, envsize;
+ int i;
+ Py_ssize_t envsize;
PyObject* out = NULL;
PyObject* keys;
PyObject* values;
@@ -356,7 +357,7 @@ getenvironment(PyObject* environment)
p = PyUnicode_AS_UNICODE(out);
for (i = 0; i < envsize; i++) {
- int ksize, vsize, totalsize;
+ Py_ssize_t ksize, vsize, totalsize;
PyObject* key = PyList_GET_ITEM(keys, i);
PyObject* value = PyList_GET_ITEM(values, i);
@@ -370,7 +371,7 @@ getenvironment(PyObject* environment)
totalsize = (p - PyUnicode_AS_UNICODE(out)) + ksize + 1 +
vsize + 1 + 1;
if (totalsize > PyUnicode_GET_SIZE(out)) {
- int offset = p - PyUnicode_AS_UNICODE(out);
+ Py_ssize_t offset = p - PyUnicode_AS_UNICODE(out);
PyUnicode_Resize(&out, totalsize + 1024);
p = PyUnicode_AS_UNICODE(out) + offset;
}
@@ -682,5 +683,7 @@ PyInit__subprocess()
defint(d, "INFINITE", INFINITE);
defint(d, "WAIT_OBJECT_0", WAIT_OBJECT_0);
defint(d, "CREATE_NEW_CONSOLE", CREATE_NEW_CONSOLE);
+ defint(d, "CREATE_NEW_PROCESS_GROUP", CREATE_NEW_PROCESS_GROUP);
+
return m;
}
diff --git a/PC/config.c b/PC/config.c
index 28d02b1..1fc2b40 100644
--- a/PC/config.c
+++ b/PC/config.c
@@ -43,7 +43,7 @@ extern PyObject* PyInit__sre(void);
extern PyObject* PyInit_parser(void);
extern PyObject* PyInit_winreg(void);
extern PyObject* PyInit__struct(void);
-extern PyObject* PyInit_datetime(void);
+extern PyObject* PyInit__datetime(void);
extern PyObject* PyInit__functools(void);
extern PyObject* PyInit__json(void);
extern PyObject* PyInit_zlib(void);
@@ -62,6 +62,7 @@ extern PyObject* PyInit__io(void);
extern PyObject* PyInit__pickle(void);
extern PyObject* PyInit_atexit(void);
extern PyObject* _PyWarnings_Init(void);
+extern PyObject* PyInit__string(void);
/* tools/freeze/makeconfig.py marker for additional "extern" */
/* -- ADDMODULE MARKER 1 -- */
@@ -116,7 +117,7 @@ struct _inittab _PyImport_Inittab[] = {
{"parser", PyInit_parser},
{"winreg", PyInit_winreg},
{"_struct", PyInit__struct},
- {"datetime", PyInit_datetime},
+ {"_datetime", PyInit__datetime},
{"_functools", PyInit__functools},
{"_json", PyInit__json},
@@ -147,6 +148,7 @@ struct _inittab _PyImport_Inittab[] = {
{"builtins", NULL},
{"sys", NULL},
{"_warnings", _PyWarnings_Init},
+ {"_string", PyInit__string},
{"_io", PyInit__io},
{"_pickle", PyInit__pickle},
diff --git a/PC/getpathp.c b/PC/getpathp.c
index 0fe04c7..cd3a4b2 100644
--- a/PC/getpathp.c
+++ b/PC/getpathp.c
@@ -51,6 +51,9 @@
exe, some very strange installation setup) you get a path with
some default, but relative, paths.
+ * An embedding application can use Py_SetPath() to override all of
+ these authomatic path computations.
+
---------------------------------------------------------------- */
@@ -79,6 +82,9 @@
* The approach is an adaptation for Windows of the strategy used in
* ../Modules/getpath.c; it uses the Windows Registry as one of its
* information sources.
+ *
+ * Py_SetPath() can be used to override this mechanism. Call Py_SetPath
+ * with a semicolon separated path prior to calling Py_Initialize.
*/
#ifndef LANDMARK
@@ -654,6 +660,24 @@ calculate_path(void)
/* External interface */
+void
+Py_SetPath(const wchar_t *path)
+{
+ if (module_search_path != NULL) {
+ free(module_search_path);
+ module_search_path = NULL;
+ }
+ if (path != NULL) {
+ extern wchar_t *Py_GetProgramName(void);
+ wchar_t *prog = Py_GetProgramName();
+ wcsncpy(progpath, prog, MAXPATHLEN);
+ prefix[0] = L'\0';
+ module_search_path = malloc((wcslen(path) + 1) * sizeof(wchar_t));
+ if (module_search_path != NULL)
+ wcscpy(module_search_path, path);
+ }
+}
+
wchar_t *
Py_GetPath(void)
{
@@ -683,3 +707,38 @@ Py_GetProgramFullPath(void)
calculate_path();
return progpath;
}
+
+/* Load python3.dll before loading any extension module that might refer
+ to it. That way, we can be sure that always the python3.dll corresponding
+ to this python DLL is loaded, not a python3.dll that might be on the path
+ by chance.
+ Return whether the DLL was found.
+*/
+static int python3_checked = 0;
+static HANDLE hPython3;
+int
+_Py_CheckPython3()
+{
+ wchar_t py3path[MAXPATHLEN+1];
+ wchar_t *s;
+ if (python3_checked)
+ return hPython3 != NULL;
+ python3_checked = 1;
+
+ /* If there is a python3.dll next to the python3y.dll,
+ assume this is a build tree; use that DLL */
+ wcscpy(py3path, dllpath);
+ s = wcsrchr(py3path, L'\\');
+ if (!s)
+ s = py3path;
+ wcscpy(s, L"\\python3.dll");
+ hPython3 = LoadLibraryExW(py3path, NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
+ if (hPython3 != NULL)
+ return 1;
+
+ /* Check sys.prefix\DLLs\python3.dll */
+ wcscpy(py3path, Py_GetPrefix());
+ wcscat(py3path, L"\\DLLs\\python3.dll");
+ hPython3 = LoadLibraryExW(py3path, NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
+ return hPython3 != NULL;
+}
diff --git a/PC/msvcrtmodule.c b/PC/msvcrtmodule.c
index 37631a7..166df03 100755
--- a/PC/msvcrtmodule.c
+++ b/PC/msvcrtmodule.c
@@ -200,12 +200,12 @@ msvcrt_getch(PyObject *self, PyObject *args)
PyDoc_STRVAR(getch_doc,
"getch() -> key character\n\
\n\
-Read a keypress and return the resulting character. Nothing is echoed to\n\
-the console. This call will block if a keypress is not already\n\
-available, but will not wait for Enter to be pressed. If the pressed key\n\
-was a special function key, this will return '\\000' or '\\xe0'; the next\n\
-call will return the keycode. The Control-C keypress cannot be read with\n\
-this function.");
+Read a keypress and return the resulting character as a byte string.\n\
+Nothing is echoed to the console. This call will block if a keypress is\n\
+not already available, but will not wait for Enter to be pressed. If the\n\
+pressed key was a special function key, this will return '\\000' or\n\
+'\\xe0'; the next call will return the keycode. The Control-C keypress\n\
+cannot be read with this function.");
#ifdef _WCONIO_DEFINED
static PyObject *
@@ -291,7 +291,7 @@ msvcrt_putch(PyObject *self, PyObject *args)
PyDoc_STRVAR(putch_doc,
"putch(char) -> None\n\
\n\
-Print the character char to the console without buffering.");
+Print the byte string char to the console without buffering.");
#ifdef _WCONIO_DEFINED
static PyObject *
@@ -330,8 +330,9 @@ msvcrt_ungetch(PyObject *self, PyObject *args)
PyDoc_STRVAR(ungetch_doc,
"ungetch(char) -> None\n\
\n\
-Cause the character char to be \"pushed back\" into the console buffer;\n\
-it will be the next character read by getch() or getche().");
+Cause the byte string char to be \"pushed back\" into the\n\
+console buffer; it will be the next character read by\n\
+getch() or getche().");
#ifdef _WCONIO_DEFINED
static PyObject *
diff --git a/PC/os2emx/Makefile b/PC/os2emx/Makefile
index 0db46a5..d9cded7 100644
--- a/PC/os2emx/Makefile
+++ b/PC/os2emx/Makefile
@@ -332,6 +332,7 @@ SRC.PYTHON= $(addprefix $(TOP), \
Python/ceval.c \
Python/compile.c \
Python/codecs.c \
+ Python/dynamic_annotations.c \
Python/errors.c \
Python/frozen.c \
Python/frozenmain.c \
diff --git a/PC/os2emx/python27.def b/PC/os2emx/python27.def
index 0776ced..d87dd76 100644
--- a/PC/os2emx/python27.def
+++ b/PC/os2emx/python27.def
@@ -1048,11 +1048,6 @@ EXPORTS
"_PyThreadState_Current"
"_PyThreadState_GetFrame"
-; From python26_s.lib(pystrtod)
- "PyOS_ascii_strtod"
- "PyOS_ascii_formatd"
- "PyOS_ascii_atof"
-
; From python26_s.lib(pythonrun)
"Py_IgnoreEnvironmentFlag"
"Py_DebugFlag"
@@ -1173,7 +1168,6 @@ EXPORTS
"PyThread_delete_key"
"PyThread_set_key_value"
"PyThread_get_key_value"
- "PyThread__exit_thread"
; From python26_s.lib(gcmodule)
; "initgc"
diff --git a/PC/os2vacpp/python.def b/PC/os2vacpp/python.def
index 7d26546..a525c2a 100644
--- a/PC/os2vacpp/python.def
+++ b/PC/os2vacpp/python.def
@@ -376,7 +376,6 @@ EXPORTS
PyThreadState_GetDict
PyThreadState_New
PyThreadState_Swap
- PyThread__exit_thread
PyThread_acquire_lock
PyThread_allocate_lock
PyThread_allocate_sema
diff --git a/PC/pyconfig.h b/PC/pyconfig.h
index 2444c8a..cbddbd8 100644
--- a/PC/pyconfig.h
+++ b/PC/pyconfig.h
@@ -80,7 +80,7 @@ WIN32 is still required for the locale module.
#define MS_WIN32 /* only support win32 and greater. */
#define MS_WINDOWS
#ifndef PYTHONPATH
-# define PYTHONPATH L".\\DLLs;.\\lib;.\\lib\\plat-win"
+# define PYTHONPATH L".\\DLLs;.\\lib"
#endif
#define NT_THREADS
#define WITH_THREAD
@@ -95,12 +95,6 @@ WIN32 is still required for the locale module.
#endif
#ifdef MS_WINCE
-/* Python uses GetVersion() to distinguish between
- * Windows NT and 9x/ME where OS Unicode support is concerned.
- * Windows CE supports Unicode in the same way as NT so we
- * define the missing GetVersion() accordingly.
- */
-#define GetVersion() (4)
/* Windows CE does not support environment variables */
#define getenv(v) (NULL)
#define environ (NULL)
@@ -324,10 +318,12 @@ Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */
/* So MSVC users need not specify the .lib file in
their Makefile (other compilers are generally
taken care of by distutils.) */
-# ifdef _DEBUG
-# pragma comment(lib,"python31_d.lib")
+# if defined(_DEBUG)
+# pragma comment(lib,"python32_d.lib")
+# elif defined(Py_LIMITED_API)
+# pragma comment(lib,"python3.lib")
# else
-# pragma comment(lib,"python31.lib")
+# pragma comment(lib,"python32.lib")
# endif /* _DEBUG */
# endif /* _MSC_VER */
# endif /* Py_BUILD_CORE */
@@ -727,6 +723,9 @@ Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */
/* Define if the compiler provides a wchar.h header file. */
#define HAVE_WCHAR_H 1
+/* The size of `wchar_t', as computed by sizeof. */
+#define SIZEOF_WCHAR_T 2
+
/* Define if you have the dl library (-ldl). */
/* #undef HAVE_LIBDL */
diff --git a/PC/python3.def b/PC/python3.def
new file mode 100644
index 0000000..a845335
--- /dev/null
+++ b/PC/python3.def
@@ -0,0 +1,689 @@
+LIBRARY "python3"
+EXPORTS
+ PyArg_Parse=python32.PyArg_Parse
+ PyArg_ParseTuple=python32.PyArg_ParseTuple
+ PyArg_ParseTupleAndKeywords=python32.PyArg_ParseTupleAndKeywords
+ PyArg_UnpackTuple=python32.PyArg_UnpackTuple
+ PyArg_VaParse=python32.PyArg_VaParse
+ PyArg_VaParseTupleAndKeywords=python32.PyArg_VaParseTupleAndKeywords
+ PyArg_ValidateKeywordArguments=python32.PyArg_ValidateKeywordArguments
+ PyBaseObject_Type=python32.PyBaseObject_Type DATA
+ PyBool_FromLong=python32.PyBool_FromLong
+ PyBool_Type=python32.PyBool_Type DATA
+ PyByteArrayIter_Type=python32.PyByteArrayIter_Type DATA
+ PyByteArray_AsString=python32.PyByteArray_AsString
+ PyByteArray_Concat=python32.PyByteArray_Concat
+ PyByteArray_FromObject=python32.PyByteArray_FromObject
+ PyByteArray_FromStringAndSize=python32.PyByteArray_FromStringAndSize
+ PyByteArray_Resize=python32.PyByteArray_Resize
+ PyByteArray_Size=python32.PyByteArray_Size
+ PyByteArray_Type=python32.PyByteArray_Type DATA
+ PyBytesIter_Type=python32.PyBytesIter_Type DATA
+ PyBytes_AsString=python32.PyBytes_AsString
+ PyBytes_AsStringAndSize=python32.PyBytes_AsStringAndSize
+ PyBytes_Concat=python32.PyBytes_Concat
+ PyBytes_ConcatAndDel=python32.PyBytes_ConcatAndDel
+ PyBytes_DecodeEscape=python32.PyBytes_DecodeEscape
+ PyBytes_FromFormat=python32.PyBytes_FromFormat
+ PyBytes_FromFormatV=python32.PyBytes_FromFormatV
+ PyBytes_FromObject=python32.PyBytes_FromObject
+ PyBytes_FromString=python32.PyBytes_FromString
+ PyBytes_FromStringAndSize=python32.PyBytes_FromStringAndSize
+ PyBytes_Repr=python32.PyBytes_Repr
+ PyBytes_Size=python32.PyBytes_Size
+ PyBytes_Type=python32.PyBytes_Type DATA
+ PyCFunction_Call=python32.PyCFunction_Call
+ PyCFunction_ClearFreeList=python32.PyCFunction_ClearFreeList
+ PyCFunction_GetFlags=python32.PyCFunction_GetFlags
+ PyCFunction_GetFunction=python32.PyCFunction_GetFunction
+ PyCFunction_GetSelf=python32.PyCFunction_GetSelf
+ PyCFunction_NewEx=python32.PyCFunction_NewEx
+ PyCFunction_Type=python32.PyCFunction_Type DATA
+ PyCallIter_New=python32.PyCallIter_New
+ PyCallIter_Type=python32.PyCallIter_Type DATA
+ PyCallable_Check=python32.PyCallable_Check
+ PyCapsule_GetContext=python32.PyCapsule_GetContext
+ PyCapsule_GetDestructor=python32.PyCapsule_GetDestructor
+ PyCapsule_GetName=python32.PyCapsule_GetName
+ PyCapsule_GetPointer=python32.PyCapsule_GetPointer
+ PyCapsule_Import=python32.PyCapsule_Import
+ PyCapsule_IsValid=python32.PyCapsule_IsValid
+ PyCapsule_New=python32.PyCapsule_New
+ PyCapsule_SetContext=python32.PyCapsule_SetContext
+ PyCapsule_SetDestructor=python32.PyCapsule_SetDestructor
+ PyCapsule_SetName=python32.PyCapsule_SetName
+ PyCapsule_SetPointer=python32.PyCapsule_SetPointer
+ PyCapsule_Type=python32.PyCapsule_Type DATA
+ PyClassMethodDescr_Type=python32.PyClassMethodDescr_Type DATA
+ PyCodec_BackslashReplaceErrors=python32.PyCodec_BackslashReplaceErrors
+ PyCodec_Decode=python32.PyCodec_Decode
+ PyCodec_Decoder=python32.PyCodec_Decoder
+ PyCodec_Encode=python32.PyCodec_Encode
+ PyCodec_Encoder=python32.PyCodec_Encoder
+ PyCodec_IgnoreErrors=python32.PyCodec_IgnoreErrors
+ PyCodec_IncrementalDecoder=python32.PyCodec_IncrementalDecoder
+ PyCodec_IncrementalEncoder=python32.PyCodec_IncrementalEncoder
+ PyCodec_KnownEncoding=python32.PyCodec_KnownEncoding
+ PyCodec_LookupError=python32.PyCodec_LookupError
+ PyCodec_Register=python32.PyCodec_Register
+ PyCodec_RegisterError=python32.PyCodec_RegisterError
+ PyCodec_ReplaceErrors=python32.PyCodec_ReplaceErrors
+ PyCodec_StreamReader=python32.PyCodec_StreamReader
+ PyCodec_StreamWriter=python32.PyCodec_StreamWriter
+ PyCodec_StrictErrors=python32.PyCodec_StrictErrors
+ PyCodec_XMLCharRefReplaceErrors=python32.PyCodec_XMLCharRefReplaceErrors
+ PyComplex_FromDoubles=python32.PyComplex_FromDoubles
+ PyComplex_ImagAsDouble=python32.PyComplex_ImagAsDouble
+ PyComplex_RealAsDouble=python32.PyComplex_RealAsDouble
+ PyComplex_Type=python32.PyComplex_Type DATA
+ PyDescr_NewClassMethod=python32.PyDescr_NewClassMethod
+ PyDescr_NewGetSet=python32.PyDescr_NewGetSet
+ PyDescr_NewMember=python32.PyDescr_NewMember
+ PyDescr_NewMethod=python32.PyDescr_NewMethod
+ PyDictItems_Type=python32.PyDictItems_Type DATA
+ PyDictIterItem_Type=python32.PyDictIterItem_Type DATA
+ PyDictIterKey_Type=python32.PyDictIterKey_Type DATA
+ PyDictIterValue_Type=python32.PyDictIterValue_Type DATA
+ PyDictKeys_Type=python32.PyDictKeys_Type DATA
+ PyDictProxy_New=python32.PyDictProxy_New
+ PyDictProxy_Type=python32.PyDictProxy_Type DATA
+ PyDictValues_Type=python32.PyDictValues_Type DATA
+ PyDict_Clear=python32.PyDict_Clear
+ PyDict_Contains=python32.PyDict_Contains
+ PyDict_Copy=python32.PyDict_Copy
+ PyDict_DelItem=python32.PyDict_DelItem
+ PyDict_DelItemString=python32.PyDict_DelItemString
+ PyDict_GetItem=python32.PyDict_GetItem
+ PyDict_GetItemString=python32.PyDict_GetItemString
+ PyDict_GetItemWithError=python32.PyDict_GetItemWithError
+ PyDict_Items=python32.PyDict_Items
+ PyDict_Keys=python32.PyDict_Keys
+ PyDict_Merge=python32.PyDict_Merge
+ PyDict_MergeFromSeq2=python32.PyDict_MergeFromSeq2
+ PyDict_New=python32.PyDict_New
+ PyDict_Next=python32.PyDict_Next
+ PyDict_SetItem=python32.PyDict_SetItem
+ PyDict_SetItemString=python32.PyDict_SetItemString
+ PyDict_Size=python32.PyDict_Size
+ PyDict_Type=python32.PyDict_Type DATA
+ PyDict_Update=python32.PyDict_Update
+ PyDict_Values=python32.PyDict_Values
+ PyEllipsis_Type=python32.PyEllipsis_Type DATA
+ PyEnum_Type=python32.PyEnum_Type DATA
+ PyErr_BadArgument=python32.PyErr_BadArgument
+ PyErr_BadInternalCall=python32.PyErr_BadInternalCall
+ PyErr_CheckSignals=python32.PyErr_CheckSignals
+ PyErr_Clear=python32.PyErr_Clear
+ PyErr_Display=python32.PyErr_Display
+ PyErr_ExceptionMatches=python32.PyErr_ExceptionMatches
+ PyErr_Fetch=python32.PyErr_Fetch
+ PyErr_Format=python32.PyErr_Format
+ PyErr_GivenExceptionMatches=python32.PyErr_GivenExceptionMatches
+ PyErr_NewException=python32.PyErr_NewException
+ PyErr_NewExceptionWithDoc=python32.PyErr_NewExceptionWithDoc
+ PyErr_NoMemory=python32.PyErr_NoMemory
+ PyErr_NormalizeException=python32.PyErr_NormalizeException
+ PyErr_Occurred=python32.PyErr_Occurred
+ PyErr_Print=python32.PyErr_Print
+ PyErr_PrintEx=python32.PyErr_PrintEx
+ PyErr_ProgramText=python32.PyErr_ProgramText
+ PyErr_Restore=python32.PyErr_Restore
+ PyErr_SetFromErrno=python32.PyErr_SetFromErrno
+ PyErr_SetFromErrnoWithFilename=python32.PyErr_SetFromErrnoWithFilename
+ PyErr_SetFromErrnoWithFilenameObject=python32.PyErr_SetFromErrnoWithFilenameObject
+ PyErr_SetInterrupt=python32.PyErr_SetInterrupt
+ PyErr_SetNone=python32.PyErr_SetNone
+ PyErr_SetObject=python32.PyErr_SetObject
+ PyErr_SetString=python32.PyErr_SetString
+ PyErr_SyntaxLocation=python32.PyErr_SyntaxLocation
+ PyErr_WarnEx=python32.PyErr_WarnEx
+ PyErr_WarnExplicit=python32.PyErr_WarnExplicit
+ PyErr_WarnFormat=python32.PyErr_WarnFormat
+ PyErr_WriteUnraisable=python32.PyErr_WriteUnraisable
+ PyEval_AcquireLock=python32.PyEval_AcquireLock
+ PyEval_AcquireThread=python32.PyEval_AcquireThread
+ PyEval_CallFunction=python32.PyEval_CallFunction
+ PyEval_CallMethod=python32.PyEval_CallMethod
+ PyEval_CallObjectWithKeywords=python32.PyEval_CallObjectWithKeywords
+ PyEval_EvalCode=python32.PyEval_EvalCode
+ PyEval_EvalCodeEx=python32.PyEval_EvalCodeEx
+ PyEval_EvalFrame=python32.PyEval_EvalFrame
+ PyEval_EvalFrameEx=python32.PyEval_EvalFrameEx
+ PyEval_GetBuiltins=python32.PyEval_GetBuiltins
+ PyEval_GetCallStats=python32.PyEval_GetCallStats
+ PyEval_GetFrame=python32.PyEval_GetFrame
+ PyEval_GetFuncDesc=python32.PyEval_GetFuncDesc
+ PyEval_GetFuncName=python32.PyEval_GetFuncName
+ PyEval_GetGlobals=python32.PyEval_GetGlobals
+ PyEval_GetLocals=python32.PyEval_GetLocals
+ PyEval_InitThreads=python32.PyEval_InitThreads
+ PyEval_ReInitThreads=python32.PyEval_ReInitThreads
+ PyEval_ReleaseLock=python32.PyEval_ReleaseLock
+ PyEval_ReleaseThread=python32.PyEval_ReleaseThread
+ PyEval_RestoreThread=python32.PyEval_RestoreThread
+ PyEval_SaveThread=python32.PyEval_SaveThread
+ PyEval_ThreadsInitialized=python32.PyEval_ThreadsInitialized
+ PyExc_ArithmeticError=python32.PyExc_ArithmeticError DATA
+ PyExc_AssertionError=python32.PyExc_AssertionError DATA
+ PyExc_AttributeError=python32.PyExc_AttributeError DATA
+ PyExc_BaseException=python32.PyExc_BaseException DATA
+ PyExc_BufferError=python32.PyExc_BufferError DATA
+ PyExc_BytesWarning=python32.PyExc_BytesWarning DATA
+ PyExc_DeprecationWarning=python32.PyExc_DeprecationWarning DATA
+ PyExc_EOFError=python32.PyExc_EOFError DATA
+ PyExc_EnvironmentError=python32.PyExc_EnvironmentError DATA
+ PyExc_Exception=python32.PyExc_Exception DATA
+ PyExc_FloatingPointError=python32.PyExc_FloatingPointError DATA
+ PyExc_FutureWarning=python32.PyExc_FutureWarning DATA
+ PyExc_GeneratorExit=python32.PyExc_GeneratorExit DATA
+ PyExc_IOError=python32.PyExc_IOError DATA
+ PyExc_ImportError=python32.PyExc_ImportError DATA
+ PyExc_ImportWarning=python32.PyExc_ImportWarning DATA
+ PyExc_IndentationError=python32.PyExc_IndentationError DATA
+ PyExc_IndexError=python32.PyExc_IndexError DATA
+ PyExc_KeyError=python32.PyExc_KeyError DATA
+ PyExc_KeyboardInterrupt=python32.PyExc_KeyboardInterrupt DATA
+ PyExc_LookupError=python32.PyExc_LookupError DATA
+ PyExc_MemoryError=python32.PyExc_MemoryError DATA
+ PyExc_MemoryErrorInst=python32.PyExc_MemoryErrorInst DATA
+ PyExc_NameError=python32.PyExc_NameError DATA
+ PyExc_NotImplementedError=python32.PyExc_NotImplementedError DATA
+ PyExc_OSError=python32.PyExc_OSError DATA
+ PyExc_OverflowError=python32.PyExc_OverflowError DATA
+ PyExc_PendingDeprecationWarning=python32.PyExc_PendingDeprecationWarning DATA
+ PyExc_RecursionErrorInst=python32.PyExc_RecursionErrorInst DATA
+ PyExc_ReferenceError=python32.PyExc_ReferenceError DATA
+ PyExc_RuntimeError=python32.PyExc_RuntimeError DATA
+ PyExc_RuntimeWarning=python32.PyExc_RuntimeWarning DATA
+ PyExc_StopIteration=python32.PyExc_StopIteration DATA
+ PyExc_SyntaxError=python32.PyExc_SyntaxError DATA
+ PyExc_SyntaxWarning=python32.PyExc_SyntaxWarning DATA
+ PyExc_SystemError=python32.PyExc_SystemError DATA
+ PyExc_SystemExit=python32.PyExc_SystemExit DATA
+ PyExc_TabError=python32.PyExc_TabError DATA
+ PyExc_TypeError=python32.PyExc_TypeError DATA
+ PyExc_UnboundLocalError=python32.PyExc_UnboundLocalError DATA
+ PyExc_UnicodeDecodeError=python32.PyExc_UnicodeDecodeError DATA
+ PyExc_UnicodeEncodeError=python32.PyExc_UnicodeEncodeError DATA
+ PyExc_UnicodeError=python32.PyExc_UnicodeError DATA
+ PyExc_UnicodeTranslateError=python32.PyExc_UnicodeTranslateError DATA
+ PyExc_UnicodeWarning=python32.PyExc_UnicodeWarning DATA
+ PyExc_UserWarning=python32.PyExc_UserWarning DATA
+ PyExc_ValueError=python32.PyExc_ValueError DATA
+ PyExc_Warning=python32.PyExc_Warning DATA
+ PyExc_ZeroDivisionError=python32.PyExc_ZeroDivisionError DATA
+ PyException_GetCause=python32.PyException_GetCause
+ PyException_GetContext=python32.PyException_GetContext
+ PyException_GetTraceback=python32.PyException_GetTraceback
+ PyException_SetCause=python32.PyException_SetCause
+ PyException_SetContext=python32.PyException_SetContext
+ PyException_SetTraceback=python32.PyException_SetTraceback
+ PyFile_FromFd=python32.PyFile_FromFd
+ PyFile_GetLine=python32.PyFile_GetLine
+ PyFile_WriteObject=python32.PyFile_WriteObject
+ PyFile_WriteString=python32.PyFile_WriteString
+ PyFilter_Type=python32.PyFilter_Type DATA
+ PyFloat_AsDouble=python32.PyFloat_AsDouble
+ PyFloat_FromDouble=python32.PyFloat_FromDouble
+ PyFloat_FromString=python32.PyFloat_FromString
+ PyFloat_GetInfo=python32.PyFloat_GetInfo
+ PyFloat_GetMax=python32.PyFloat_GetMax
+ PyFloat_GetMin=python32.PyFloat_GetMin
+ PyFloat_Type=python32.PyFloat_Type DATA
+ PyFrozenSet_New=python32.PyFrozenSet_New
+ PyFrozenSet_Type=python32.PyFrozenSet_Type DATA
+ PyGC_Collect=python32.PyGC_Collect
+ PyGILState_Ensure=python32.PyGILState_Ensure
+ PyGILState_GetThisThreadState=python32.PyGILState_GetThisThreadState
+ PyGILState_Release=python32.PyGILState_Release
+ PyGetSetDescr_Type=python32.PyGetSetDescr_Type DATA
+ PyImport_AddModule=python32.PyImport_AddModule
+ PyImport_AppendInittab=python32.PyImport_AppendInittab
+ PyImport_Cleanup=python32.PyImport_Cleanup
+ PyImport_ExecCodeModule=python32.PyImport_ExecCodeModule
+ PyImport_ExecCodeModuleEx=python32.PyImport_ExecCodeModuleEx
+ PyImport_ExecCodeModuleWithPathnames=python32.PyImport_ExecCodeModuleWithPathnames
+ PyImport_GetImporter=python32.PyImport_GetImporter
+ PyImport_GetMagicNumber=python32.PyImport_GetMagicNumber
+ PyImport_GetMagicTag=python32.PyImport_GetMagicTag
+ PyImport_GetModuleDict=python32.PyImport_GetModuleDict
+ PyImport_Import=python32.PyImport_Import
+ PyImport_ImportFrozenModule=python32.PyImport_ImportFrozenModule
+ PyImport_ImportModule=python32.PyImport_ImportModule
+ PyImport_ImportModuleLevel=python32.PyImport_ImportModuleLevel
+ PyImport_ImportModuleNoBlock=python32.PyImport_ImportModuleNoBlock
+ PyImport_ReloadModule=python32.PyImport_ReloadModule
+ PyInterpreterState_Clear=python32.PyInterpreterState_Clear
+ PyInterpreterState_Delete=python32.PyInterpreterState_Delete
+ PyInterpreterState_New=python32.PyInterpreterState_New
+ PyIter_Next=python32.PyIter_Next
+ PyListIter_Type=python32.PyListIter_Type DATA
+ PyListRevIter_Type=python32.PyListRevIter_Type DATA
+ PyList_Append=python32.PyList_Append
+ PyList_AsTuple=python32.PyList_AsTuple
+ PyList_GetItem=python32.PyList_GetItem
+ PyList_GetSlice=python32.PyList_GetSlice
+ PyList_Insert=python32.PyList_Insert
+ PyList_New=python32.PyList_New
+ PyList_Reverse=python32.PyList_Reverse
+ PyList_SetItem=python32.PyList_SetItem
+ PyList_SetSlice=python32.PyList_SetSlice
+ PyList_Size=python32.PyList_Size
+ PyList_Sort=python32.PyList_Sort
+ PyList_Type=python32.PyList_Type DATA
+ PyLongRangeIter_Type=python32.PyLongRangeIter_Type DATA
+ PyLong_AsDouble=python32.PyLong_AsDouble
+ PyLong_AsLong=python32.PyLong_AsLong
+ PyLong_AsLongAndOverflow=python32.PyLong_AsLongAndOverflow
+ PyLong_AsLongLong=python32.PyLong_AsLongLong
+ PyLong_AsLongLongAndOverflow=python32.PyLong_AsLongLongAndOverflow
+ PyLong_AsSize_t=python32.PyLong_AsSize_t
+ PyLong_AsSsize_t=python32.PyLong_AsSsize_t
+ PyLong_AsUnsignedLong=python32.PyLong_AsUnsignedLong
+ PyLong_AsUnsignedLongLong=python32.PyLong_AsUnsignedLongLong
+ PyLong_AsUnsignedLongLongMask=python32.PyLong_AsUnsignedLongLongMask
+ PyLong_AsUnsignedLongMask=python32.PyLong_AsUnsignedLongMask
+ PyLong_AsVoidPtr=python32.PyLong_AsVoidPtr
+ PyLong_FromDouble=python32.PyLong_FromDouble
+ PyLong_FromLong=python32.PyLong_FromLong
+ PyLong_FromLongLong=python32.PyLong_FromLongLong
+ PyLong_FromSize_t=python32.PyLong_FromSize_t
+ PyLong_FromSsize_t=python32.PyLong_FromSsize_t
+ PyLong_FromString=python32.PyLong_FromString
+ PyLong_FromUnsignedLong=python32.PyLong_FromUnsignedLong
+ PyLong_FromUnsignedLongLong=python32.PyLong_FromUnsignedLongLong
+ PyLong_FromVoidPtr=python32.PyLong_FromVoidPtr
+ PyLong_GetInfo=python32.PyLong_GetInfo
+ PyLong_Type=python32.PyLong_Type DATA
+ PyMap_Type=python32.PyMap_Type DATA
+ PyMapping_Check=python32.PyMapping_Check
+ PyMapping_GetItemString=python32.PyMapping_GetItemString
+ PyMapping_HasKey=python32.PyMapping_HasKey
+ PyMapping_HasKeyString=python32.PyMapping_HasKeyString
+ PyMapping_Items=python32.PyMapping_Items
+ PyMapping_Keys=python32.PyMapping_Keys
+ PyMapping_Length=python32.PyMapping_Length
+ PyMapping_SetItemString=python32.PyMapping_SetItemString
+ PyMapping_Size=python32.PyMapping_Size
+ PyMapping_Values=python32.PyMapping_Values
+ PyMem_Free=python32.PyMem_Free
+ PyMem_Malloc=python32.PyMem_Malloc
+ PyMem_Realloc=python32.PyMem_Realloc
+ PyMemberDescr_Type=python32.PyMemberDescr_Type DATA
+ PyMemoryView_FromObject=python32.PyMemoryView_FromObject
+ PyMemoryView_GetContiguous=python32.PyMemoryView_GetContiguous
+ PyMemoryView_Type=python32.PyMemoryView_Type DATA
+ PyMethodDescr_Type=python32.PyMethodDescr_Type DATA
+ PyModule_AddIntConstant=python32.PyModule_AddIntConstant
+ PyModule_AddObject=python32.PyModule_AddObject
+ PyModule_AddStringConstant=python32.PyModule_AddStringConstant
+ PyModule_Create2=python32.PyModule_Create2
+ PyModule_GetDef=python32.PyModule_GetDef
+ PyModule_GetDict=python32.PyModule_GetDict
+ PyModule_GetFilename=python32.PyModule_GetFilename
+ PyModule_GetFilenameObject=python32.PyModule_GetFilenameObject
+ PyModule_GetName=python32.PyModule_GetName
+ PyModule_GetState=python32.PyModule_GetState
+ PyModule_New=python32.PyModule_New
+ PyModule_Type=python32.PyModule_Type DATA
+ PyNullImporter_Type=python32.PyNullImporter_Type DATA
+ PyNumber_Absolute=python32.PyNumber_Absolute
+ PyNumber_Add=python32.PyNumber_Add
+ PyNumber_And=python32.PyNumber_And
+ PyNumber_AsSsize_t=python32.PyNumber_AsSsize_t
+ PyNumber_Check=python32.PyNumber_Check
+ PyNumber_Divmod=python32.PyNumber_Divmod
+ PyNumber_Float=python32.PyNumber_Float
+ PyNumber_FloorDivide=python32.PyNumber_FloorDivide
+ PyNumber_InPlaceAdd=python32.PyNumber_InPlaceAdd
+ PyNumber_InPlaceAnd=python32.PyNumber_InPlaceAnd
+ PyNumber_InPlaceFloorDivide=python32.PyNumber_InPlaceFloorDivide
+ PyNumber_InPlaceLshift=python32.PyNumber_InPlaceLshift
+ PyNumber_InPlaceMultiply=python32.PyNumber_InPlaceMultiply
+ PyNumber_InPlaceOr=python32.PyNumber_InPlaceOr
+ PyNumber_InPlacePower=python32.PyNumber_InPlacePower
+ PyNumber_InPlaceRemainder=python32.PyNumber_InPlaceRemainder
+ PyNumber_InPlaceRshift=python32.PyNumber_InPlaceRshift
+ PyNumber_InPlaceSubtract=python32.PyNumber_InPlaceSubtract
+ PyNumber_InPlaceTrueDivide=python32.PyNumber_InPlaceTrueDivide
+ PyNumber_InPlaceXor=python32.PyNumber_InPlaceXor
+ PyNumber_Index=python32.PyNumber_Index
+ PyNumber_Invert=python32.PyNumber_Invert
+ PyNumber_Long=python32.PyNumber_Long
+ PyNumber_Lshift=python32.PyNumber_Lshift
+ PyNumber_Multiply=python32.PyNumber_Multiply
+ PyNumber_Negative=python32.PyNumber_Negative
+ PyNumber_Or=python32.PyNumber_Or
+ PyNumber_Positive=python32.PyNumber_Positive
+ PyNumber_Power=python32.PyNumber_Power
+ PyNumber_Remainder=python32.PyNumber_Remainder
+ PyNumber_Rshift=python32.PyNumber_Rshift
+ PyNumber_Subtract=python32.PyNumber_Subtract
+ PyNumber_ToBase=python32.PyNumber_ToBase
+ PyNumber_TrueDivide=python32.PyNumber_TrueDivide
+ PyNumber_Xor=python32.PyNumber_Xor
+ PyOS_AfterFork=python32.PyOS_AfterFork
+ PyOS_InitInterrupts=python32.PyOS_InitInterrupts
+ PyOS_InputHook=python32.PyOS_InputHook DATA
+ PyOS_InterruptOccurred=python32.PyOS_InterruptOccurred
+ PyOS_ReadlineFunctionPointer=python32.PyOS_ReadlineFunctionPointer DATA
+ PyOS_double_to_string=python32.PyOS_double_to_string
+ PyOS_getsig=python32.PyOS_getsig
+ PyOS_mystricmp=python32.PyOS_mystricmp
+ PyOS_mystrnicmp=python32.PyOS_mystrnicmp
+ PyOS_setsig=python32.PyOS_setsig
+ PyOS_snprintf=python32.PyOS_snprintf
+ PyOS_string_to_double=python32.PyOS_string_to_double
+ PyOS_strtol=python32.PyOS_strtol
+ PyOS_strtoul=python32.PyOS_strtoul
+ PyOS_vsnprintf=python32.PyOS_vsnprintf
+ PyObject_ASCII=python32.PyObject_ASCII
+ PyObject_AsCharBuffer=python32.PyObject_AsCharBuffer
+ PyObject_AsFileDescriptor=python32.PyObject_AsFileDescriptor
+ PyObject_AsReadBuffer=python32.PyObject_AsReadBuffer
+ PyObject_AsWriteBuffer=python32.PyObject_AsWriteBuffer
+ PyObject_Bytes=python32.PyObject_Bytes
+ PyObject_Call=python32.PyObject_Call
+ PyObject_CallFunction=python32.PyObject_CallFunction
+ PyObject_CallFunctionObjArgs=python32.PyObject_CallFunctionObjArgs
+ PyObject_CallMethod=python32.PyObject_CallMethod
+ PyObject_CallMethodObjArgs=python32.PyObject_CallMethodObjArgs
+ PyObject_CallObject=python32.PyObject_CallObject
+ PyObject_CheckReadBuffer=python32.PyObject_CheckReadBuffer
+ PyObject_ClearWeakRefs=python32.PyObject_ClearWeakRefs
+ PyObject_DelItem=python32.PyObject_DelItem
+ PyObject_DelItemString=python32.PyObject_DelItemString
+ PyObject_Dir=python32.PyObject_Dir
+ PyObject_Format=python32.PyObject_Format
+ PyObject_Free=python32.PyObject_Free
+ PyObject_GC_Del=python32.PyObject_GC_Del
+ PyObject_GC_Track=python32.PyObject_GC_Track
+ PyObject_GC_UnTrack=python32.PyObject_GC_UnTrack
+ PyObject_GenericGetAttr=python32.PyObject_GenericGetAttr
+ PyObject_GenericSetAttr=python32.PyObject_GenericSetAttr
+ PyObject_GetAttr=python32.PyObject_GetAttr
+ PyObject_GetAttrString=python32.PyObject_GetAttrString
+ PyObject_GetItem=python32.PyObject_GetItem
+ PyObject_GetIter=python32.PyObject_GetIter
+ PyObject_HasAttr=python32.PyObject_HasAttr
+ PyObject_HasAttrString=python32.PyObject_HasAttrString
+ PyObject_Hash=python32.PyObject_Hash
+ PyObject_HashNotImplemented=python32.PyObject_HashNotImplemented
+ PyObject_Init=python32.PyObject_Init
+ PyObject_InitVar=python32.PyObject_InitVar
+ PyObject_IsInstance=python32.PyObject_IsInstance
+ PyObject_IsSubclass=python32.PyObject_IsSubclass
+ PyObject_IsTrue=python32.PyObject_IsTrue
+ PyObject_Length=python32.PyObject_Length
+ PyObject_Malloc=python32.PyObject_Malloc
+ PyObject_Not=python32.PyObject_Not
+ PyObject_Realloc=python32.PyObject_Realloc
+ PyObject_Repr=python32.PyObject_Repr
+ PyObject_RichCompare=python32.PyObject_RichCompare
+ PyObject_RichCompareBool=python32.PyObject_RichCompareBool
+ PyObject_SelfIter=python32.PyObject_SelfIter
+ PyObject_SetAttr=python32.PyObject_SetAttr
+ PyObject_SetAttrString=python32.PyObject_SetAttrString
+ PyObject_SetItem=python32.PyObject_SetItem
+ PyObject_Size=python32.PyObject_Size
+ PyObject_Str=python32.PyObject_Str
+ PyObject_Type=python32.PyObject_Type DATA
+ PyParser_SimpleParseFileFlags=python32.PyParser_SimpleParseFileFlags
+ PyParser_SimpleParseStringFlags=python32.PyParser_SimpleParseStringFlags
+ PyProperty_Type=python32.PyProperty_Type DATA
+ PyRangeIter_Type=python32.PyRangeIter_Type DATA
+ PyRange_Type=python32.PyRange_Type DATA
+ PyReversed_Type=python32.PyReversed_Type DATA
+ PySeqIter_New=python32.PySeqIter_New
+ PySeqIter_Type=python32.PySeqIter_Type DATA
+ PySequence_Check=python32.PySequence_Check
+ PySequence_Concat=python32.PySequence_Concat
+ PySequence_Contains=python32.PySequence_Contains
+ PySequence_Count=python32.PySequence_Count
+ PySequence_DelItem=python32.PySequence_DelItem
+ PySequence_DelSlice=python32.PySequence_DelSlice
+ PySequence_Fast=python32.PySequence_Fast
+ PySequence_GetItem=python32.PySequence_GetItem
+ PySequence_GetSlice=python32.PySequence_GetSlice
+ PySequence_In=python32.PySequence_In
+ PySequence_InPlaceConcat=python32.PySequence_InPlaceConcat
+ PySequence_InPlaceRepeat=python32.PySequence_InPlaceRepeat
+ PySequence_Index=python32.PySequence_Index
+ PySequence_Length=python32.PySequence_Length
+ PySequence_List=python32.PySequence_List
+ PySequence_Repeat=python32.PySequence_Repeat
+ PySequence_SetItem=python32.PySequence_SetItem
+ PySequence_SetSlice=python32.PySequence_SetSlice
+ PySequence_Size=python32.PySequence_Size
+ PySequence_Tuple=python32.PySequence_Tuple
+ PySetIter_Type=python32.PySetIter_Type DATA
+ PySet_Add=python32.PySet_Add
+ PySet_Clear=python32.PySet_Clear
+ PySet_Contains=python32.PySet_Contains
+ PySet_Discard=python32.PySet_Discard
+ PySet_New=python32.PySet_New
+ PySet_Pop=python32.PySet_Pop
+ PySet_Size=python32.PySet_Size
+ PySet_Type=python32.PySet_Type DATA
+ PySlice_GetIndices=python32.PySlice_GetIndices
+ PySlice_GetIndicesEx=python32.PySlice_GetIndicesEx
+ PySlice_New=python32.PySlice_New
+ PySlice_Type=python32.PySlice_Type DATA
+ PySortWrapper_Type=python32.PySortWrapper_Type DATA
+ PyState_FindModule=python32.PyState_FindModule
+ PyStructSequence_GetItem=python32.PyStructSequence_GetItem
+ PyStructSequence_New=python32.PyStructSequence_New
+ PyStructSequence_NewType=python32.PyStructSequence_NewType
+ PyStructSequence_SetItem=python32.PyStructSequence_SetItem
+ PySuper_Type=python32.PySuper_Type DATA
+ PySys_AddWarnOption=python32.PySys_AddWarnOption
+ PySys_AddWarnOptionUnicode=python32.PySys_AddWarnOptionUnicode
+ PySys_FormatStderr=python32.PySys_FormatStderr
+ PySys_FormatStdout=python32.PySys_FormatStdout
+ PySys_GetObject=python32.PySys_GetObject
+ PySys_HasWarnOptions=python32.PySys_HasWarnOptions
+ PySys_ResetWarnOptions=python32.PySys_ResetWarnOptions
+ PySys_SetArgv=python32.PySys_SetArgv
+ PySys_SetArgvEx=python32.PySys_SetArgvEx
+ PySys_SetObject=python32.PySys_SetObject
+ PySys_SetPath=python32.PySys_SetPath
+ PySys_WriteStderr=python32.PySys_WriteStderr
+ PySys_WriteStdout=python32.PySys_WriteStdout
+ PyThreadState_Clear=python32.PyThreadState_Clear
+ PyThreadState_Delete=python32.PyThreadState_Delete
+ PyThreadState_DeleteCurrent=python32.PyThreadState_DeleteCurrent
+ PyThreadState_Get=python32.PyThreadState_Get
+ PyThreadState_GetDict=python32.PyThreadState_GetDict
+ PyThreadState_New=python32.PyThreadState_New
+ PyThreadState_SetAsyncExc=python32.PyThreadState_SetAsyncExc
+ PyThreadState_Swap=python32.PyThreadState_Swap
+ PyTraceBack_Here=python32.PyTraceBack_Here
+ PyTraceBack_Print=python32.PyTraceBack_Print
+ PyTraceBack_Type=python32.PyTraceBack_Type DATA
+ PyTupleIter_Type=python32.PyTupleIter_Type DATA
+ PyTuple_ClearFreeList=python32.PyTuple_ClearFreeList
+ PyTuple_GetItem=python32.PyTuple_GetItem
+ PyTuple_GetSlice=python32.PyTuple_GetSlice
+ PyTuple_New=python32.PyTuple_New
+ PyTuple_Pack=python32.PyTuple_Pack
+ PyTuple_SetItem=python32.PyTuple_SetItem
+ PyTuple_Size=python32.PyTuple_Size
+ PyTuple_Type=python32.PyTuple_Type DATA
+ PyType_ClearCache=python32.PyType_ClearCache
+ PyType_FromSpec=python32.PyType_FromSpec
+ PyType_GenericAlloc=python32.PyType_GenericAlloc
+ PyType_GenericNew=python32.PyType_GenericNew
+ PyType_GetFlags=python32.PyType_GetFlags
+ PyType_IsSubtype=python32.PyType_IsSubtype
+ PyType_Modified=python32.PyType_Modified
+ PyType_Ready=python32.PyType_Ready
+ PyType_Type=python32.PyType_Type DATA
+ PyUnicodeDecodeError_Create=python32.PyUnicodeDecodeError_Create
+ PyUnicodeDecodeError_GetEncoding=python32.PyUnicodeDecodeError_GetEncoding
+ PyUnicodeDecodeError_GetEnd=python32.PyUnicodeDecodeError_GetEnd
+ PyUnicodeDecodeError_GetObject=python32.PyUnicodeDecodeError_GetObject
+ PyUnicodeDecodeError_GetReason=python32.PyUnicodeDecodeError_GetReason
+ PyUnicodeDecodeError_GetStart=python32.PyUnicodeDecodeError_GetStart
+ PyUnicodeDecodeError_SetEnd=python32.PyUnicodeDecodeError_SetEnd
+ PyUnicodeDecodeError_SetReason=python32.PyUnicodeDecodeError_SetReason
+ PyUnicodeDecodeError_SetStart=python32.PyUnicodeDecodeError_SetStart
+ PyUnicodeEncodeError_GetEncoding=python32.PyUnicodeEncodeError_GetEncoding
+ PyUnicodeEncodeError_GetEnd=python32.PyUnicodeEncodeError_GetEnd
+ PyUnicodeEncodeError_GetObject=python32.PyUnicodeEncodeError_GetObject
+ PyUnicodeEncodeError_GetReason=python32.PyUnicodeEncodeError_GetReason
+ PyUnicodeEncodeError_GetStart=python32.PyUnicodeEncodeError_GetStart
+ PyUnicodeEncodeError_SetEnd=python32.PyUnicodeEncodeError_SetEnd
+ PyUnicodeEncodeError_SetReason=python32.PyUnicodeEncodeError_SetReason
+ PyUnicodeEncodeError_SetStart=python32.PyUnicodeEncodeError_SetStart
+ PyUnicodeIter_Type=python32.PyUnicodeIter_Type DATA
+ PyUnicodeTranslateError_GetEnd=python32.PyUnicodeTranslateError_GetEnd
+ PyUnicodeTranslateError_GetObject=python32.PyUnicodeTranslateError_GetObject
+ PyUnicodeTranslateError_GetReason=python32.PyUnicodeTranslateError_GetReason
+ PyUnicodeTranslateError_GetStart=python32.PyUnicodeTranslateError_GetStart
+ PyUnicodeTranslateError_SetEnd=python32.PyUnicodeTranslateError_SetEnd
+ PyUnicodeTranslateError_SetReason=python32.PyUnicodeTranslateError_SetReason
+ PyUnicodeTranslateError_SetStart=python32.PyUnicodeTranslateError_SetStart
+ PyUnicode_Append=python32.PyUnicodeUCS2_Append
+ PyUnicode_AppendAndDel=python32.PyUnicodeUCS2_AppendAndDel
+ PyUnicode_AsASCIIString=python32.PyUnicodeUCS2_AsASCIIString
+ PyUnicode_AsCharmapString=python32.PyUnicodeUCS2_AsCharmapString
+ PyUnicode_AsDecodedObject=python32.PyUnicodeUCS2_AsDecodedObject
+ PyUnicode_AsDecodedUnicode=python32.PyUnicodeUCS2_AsDecodedUnicode
+ PyUnicode_AsEncodedObject=python32.PyUnicodeUCS2_AsEncodedObject
+ PyUnicode_AsEncodedString=python32.PyUnicodeUCS2_AsEncodedString
+ PyUnicode_AsEncodedUnicode=python32.PyUnicodeUCS2_AsEncodedUnicode
+ PyUnicode_AsLatin1String=python32.PyUnicodeUCS2_AsLatin1String
+ PyUnicode_AsRawUnicodeEscapeString=python32.PyUnicodeUCS2_AsRawUnicodeEscapeString
+ PyUnicode_AsUTF16String=python32.PyUnicodeUCS2_AsUTF16String
+ PyUnicode_AsUTF32String=python32.PyUnicodeUCS2_AsUTF32String
+ PyUnicode_AsUTF8String=python32.PyUnicodeUCS2_AsUTF8String
+ PyUnicode_AsUnicodeEscapeString=python32.PyUnicodeUCS2_AsUnicodeEscapeString
+ PyUnicode_AsWideChar=python32.PyUnicodeUCS2_AsWideChar
+ PyUnicode_ClearFreelist=python32.PyUnicodeUCS2_ClearFreelist
+ PyUnicode_Compare=python32.PyUnicodeUCS2_Compare
+ PyUnicode_Concat=python32.PyUnicodeUCS2_Concat
+ PyUnicode_Contains=python32.PyUnicodeUCS2_Contains
+ PyUnicode_Count=python32.PyUnicodeUCS2_Count
+ PyUnicode_Decode=python32.PyUnicodeUCS2_Decode
+ PyUnicode_DecodeASCII=python32.PyUnicodeUCS2_DecodeASCII
+ PyUnicode_DecodeCharmap=python32.PyUnicodeUCS2_DecodeCharmap
+ PyUnicode_DecodeFSDefault=python32.PyUnicodeUCS2_DecodeFSDefault
+ PyUnicode_DecodeFSDefaultAndSize=python32.PyUnicodeUCS2_DecodeFSDefaultAndSize
+ PyUnicode_DecodeLatin1=python32.PyUnicodeUCS2_DecodeLatin1
+ PyUnicode_DecodeRawUnicodeEscape=python32.PyUnicodeUCS2_DecodeRawUnicodeEscape
+ PyUnicode_DecodeUTF16=python32.PyUnicodeUCS2_DecodeUTF16
+ PyUnicode_DecodeUTF16Stateful=python32.PyUnicodeUCS2_DecodeUTF16Stateful
+ PyUnicode_DecodeUTF32=python32.PyUnicodeUCS2_DecodeUTF32
+ PyUnicode_DecodeUTF32Stateful=python32.PyUnicodeUCS2_DecodeUTF32Stateful
+ PyUnicode_DecodeUTF8=python32.PyUnicodeUCS2_DecodeUTF8
+ PyUnicode_DecodeUTF8Stateful=python32.PyUnicodeUCS2_DecodeUTF8Stateful
+ PyUnicode_DecodeUnicodeEscape=python32.PyUnicodeUCS2_DecodeUnicodeEscape
+ PyUnicode_FSConverter=python32.PyUnicodeUCS2_FSConverter
+ PyUnicode_FSDecoder=python32.PyUnicodeUCS2_FSDecoder
+ PyUnicode_Find=python32.PyUnicodeUCS2_Find
+ PyUnicode_Format=python32.PyUnicodeUCS2_Format
+ PyUnicode_FromEncodedObject=python32.PyUnicodeUCS2_FromEncodedObject
+ PyUnicode_FromFormat=python32.PyUnicodeUCS2_FromFormat
+ PyUnicode_FromFormatV=python32.PyUnicodeUCS2_FromFormatV
+ PyUnicode_FromObject=python32.PyUnicodeUCS2_FromObject
+ PyUnicode_FromOrdinal=python32.PyUnicodeUCS2_FromOrdinal
+ PyUnicode_FromString=python32.PyUnicodeUCS2_FromString
+ PyUnicode_FromStringAndSize=python32.PyUnicodeUCS2_FromStringAndSize
+ PyUnicode_FromWideChar=python32.PyUnicodeUCS2_FromWideChar
+ PyUnicode_GetDefaultEncoding=python32.PyUnicodeUCS2_GetDefaultEncoding
+ PyUnicode_GetSize=python32.PyUnicodeUCS2_GetSize
+ PyUnicode_IsIdentifier=python32.PyUnicodeUCS2_IsIdentifier
+ PyUnicode_Join=python32.PyUnicodeUCS2_Join
+ PyUnicode_Partition=python32.PyUnicodeUCS2_Partition
+ PyUnicode_RPartition=python32.PyUnicodeUCS2_RPartition
+ PyUnicode_RSplit=python32.PyUnicodeUCS2_RSplit
+ PyUnicode_Replace=python32.PyUnicodeUCS2_Replace
+ PyUnicode_Resize=python32.PyUnicodeUCS2_Resize
+ PyUnicode_RichCompare=python32.PyUnicodeUCS2_RichCompare
+ PyUnicode_SetDefaultEncoding=python32.PyUnicodeUCS2_SetDefaultEncoding
+ PyUnicode_Split=python32.PyUnicodeUCS2_Split
+ PyUnicode_Splitlines=python32.PyUnicodeUCS2_Splitlines
+ PyUnicode_Tailmatch=python32.PyUnicodeUCS2_Tailmatch
+ PyUnicode_Translate=python32.PyUnicodeUCS2_Translate
+ PyUnicode_BuildEncodingMap=python32.PyUnicode_BuildEncodingMap
+ PyUnicode_CompareWithASCIIString=python32.PyUnicode_CompareWithASCIIString
+ PyUnicode_DecodeUTF7=python32.PyUnicode_DecodeUTF7
+ PyUnicode_DecodeUTF7Stateful=python32.PyUnicode_DecodeUTF7Stateful
+ PyUnicode_EncodeFSDefault=python32.PyUnicode_EncodeFSDefault
+ PyUnicode_InternFromString=python32.PyUnicode_InternFromString
+ PyUnicode_InternImmortal=python32.PyUnicode_InternImmortal
+ PyUnicode_InternInPlace=python32.PyUnicode_InternInPlace
+ PyUnicode_Type=python32.PyUnicode_Type DATA
+ PyWeakref_GetObject=python32.PyWeakref_GetObject DATA
+ PyWeakref_NewProxy=python32.PyWeakref_NewProxy
+ PyWeakref_NewRef=python32.PyWeakref_NewRef
+ PyWrapperDescr_Type=python32.PyWrapperDescr_Type DATA
+ PyWrapper_New=python32.PyWrapper_New
+ PyZip_Type=python32.PyZip_Type DATA
+ Py_AddPendingCall=python32.Py_AddPendingCall
+ Py_AtExit=python32.Py_AtExit
+ Py_BuildValue=python32.Py_BuildValue
+ Py_CompileString=python32.Py_CompileString
+ Py_DecRef=python32.Py_DecRef
+ Py_EndInterpreter=python32.Py_EndInterpreter
+ Py_Exit=python32.Py_Exit
+ Py_FatalError=python32.Py_FatalError
+ Py_FileSystemDefaultEncoding=python32.Py_FileSystemDefaultEncoding DATA
+ Py_Finalize=python32.Py_Finalize
+ Py_GetBuildInfo=python32.Py_GetBuildInfo
+ Py_GetCompiler=python32.Py_GetCompiler
+ Py_GetCopyright=python32.Py_GetCopyright
+ Py_GetExecPrefix=python32.Py_GetExecPrefix
+ Py_GetPath=python32.Py_GetPath
+ Py_GetPlatform=python32.Py_GetPlatform
+ Py_GetPrefix=python32.Py_GetPrefix
+ Py_GetProgramFullPath=python32.Py_GetProgramFullPath
+ Py_GetProgramName=python32.Py_GetProgramName
+ Py_GetPythonHome=python32.Py_GetPythonHome
+ Py_GetRecursionLimit=python32.Py_GetRecursionLimit
+ Py_GetVersion=python32.Py_GetVersion
+ Py_HasFileSystemDefaultEncoding=python32.Py_HasFileSystemDefaultEncoding DATA
+ Py_IncRef=python32.Py_IncRef
+ Py_Initialize=python32.Py_Initialize
+ Py_InitializeEx=python32.Py_InitializeEx
+ Py_IsInitialized=python32.Py_IsInitialized
+ Py_Main=python32.Py_Main
+ Py_MakePendingCalls=python32.Py_MakePendingCalls
+ Py_NewInterpreter=python32.Py_NewInterpreter
+ Py_ReprEnter=python32.Py_ReprEnter
+ Py_ReprLeave=python32.Py_ReprLeave
+ Py_SetProgramName=python32.Py_SetProgramName
+ Py_SetPythonHome=python32.Py_SetPythonHome
+ Py_SetRecursionLimit=python32.Py_SetRecursionLimit
+ Py_SymtableString=python32.Py_SymtableString
+ Py_VaBuildValue=python32.Py_VaBuildValue
+ _PyErr_BadInternalCall=python32._PyErr_BadInternalCall
+ _PyObject_CallFunction_SizeT=python32._PyObject_CallFunction_SizeT
+ _PyObject_CallMethod_SizeT=python32._PyObject_CallMethod_SizeT
+ _PyObject_GC_Malloc=python32._PyObject_GC_Malloc
+ _PyObject_GC_New=python32._PyObject_GC_New
+ _PyObject_GC_NewVar=python32._PyObject_GC_NewVar
+ _PyObject_GC_Resize=python32._PyObject_GC_Resize
+ _PyObject_New=python32._PyObject_New
+ _PyObject_NewVar=python32._PyObject_NewVar
+ _PyState_AddModule=python32._PyState_AddModule
+ _PyThreadState_Init=python32._PyThreadState_Init
+ _PyThreadState_Prealloc=python32._PyThreadState_Prealloc
+ _PyTrash_delete_later=python32._PyTrash_delete_later DATA
+ _PyTrash_delete_nesting=python32._PyTrash_delete_nesting DATA
+ _PyTrash_deposit_object=python32._PyTrash_deposit_object
+ _PyTrash_destroy_chain=python32._PyTrash_destroy_chain
+ _PyWeakref_CallableProxyType=python32._PyWeakref_CallableProxyType DATA
+ _PyWeakref_ProxyType=python32._PyWeakref_ProxyType DATA
+ _PyWeakref_RefType=python32._PyWeakref_RefType DATA
+ _Py_BuildValue_SizeT=python32._Py_BuildValue_SizeT
+ _Py_CheckRecursionLimit=python32._Py_CheckRecursionLimit DATA
+ _Py_CheckRecursiveCall=python32._Py_CheckRecursiveCall
+ _Py_Dealloc=python32._Py_Dealloc
+ _Py_EllipsisObject=python32._Py_EllipsisObject DATA
+ _Py_FalseStruct=python32._Py_FalseStruct DATA
+ _Py_NoneStruct=python32._Py_NoneStruct DATA
+ _Py_NotImplementedStruct=python32._Py_NotImplementedStruct DATA
+ _Py_SwappedOp=python32._Py_SwappedOp DATA
+ _Py_TrueStruct=python32._Py_TrueStruct DATA
+ _Py_VaBuildValue_SizeT=python32._Py_VaBuildValue_SizeT
diff --git a/PC/python3.mak b/PC/python3.mak
new file mode 100644
index 0000000..256167f
--- /dev/null
+++ b/PC/python3.mak
@@ -0,0 +1,10 @@
+$(OutDir)python32.dll: python3.def $(OutDir)python32stub.lib
+ cl /LD /Fe$(OutDir)python3.dll python3dll.c python3.def $(OutDir)python32stub.lib
+
+$(OutDir)python32stub.lib: python32stub.def
+ lib /def:python32stub.def /out:$(OutDir)python32stub.lib /MACHINE:$(MACHINE)
+
+clean:
+ del $(OutDir)python3.dll $(OutDir)python3.lib $(OutDir)python32stub.lib $(OutDir)python3.exp $(OutDir)python32stub.exp
+
+rebuild: clean $(OutDir)python32.dll
diff --git a/PC/python32gen.py b/PC/python32gen.py
new file mode 100644
index 0000000..9182d54
--- /dev/null
+++ b/PC/python32gen.py
@@ -0,0 +1,25 @@
+# Generate python32stub.def out of python3.def
+# The regular import library cannot be used,
+# since it doesn't provide the right symbols for
+# data forwarding
+out = open("python32stub.def", "w")
+out.write('LIBRARY "python32"\n')
+out.write('EXPORTS\n')
+
+inp = open("python3.def")
+inp.readline()
+line = inp.readline()
+assert line.strip()=='EXPORTS'
+
+for line in inp:
+ # SYM1=python32.SYM2[ DATA]
+ head, tail = line.split('.')
+ if 'DATA' in tail:
+ symbol, tail = tail.split(' ')
+ else:
+ symbol = tail.strip()
+ out.write(symbol+'\n')
+
+inp.close()
+out.close()
+
diff --git a/PC/python32stub.def b/PC/python32stub.def
new file mode 100644
index 0000000..0943ef0
--- /dev/null
+++ b/PC/python32stub.def
@@ -0,0 +1,689 @@
+LIBRARY "python32"
+EXPORTS
+PyArg_Parse
+PyArg_ParseTuple
+PyArg_ParseTupleAndKeywords
+PyArg_UnpackTuple
+PyArg_VaParse
+PyArg_VaParseTupleAndKeywords
+PyArg_ValidateKeywordArguments
+PyBaseObject_Type
+PyBool_FromLong
+PyBool_Type
+PyByteArrayIter_Type
+PyByteArray_AsString
+PyByteArray_Concat
+PyByteArray_FromObject
+PyByteArray_FromStringAndSize
+PyByteArray_Resize
+PyByteArray_Size
+PyByteArray_Type
+PyBytesIter_Type
+PyBytes_AsString
+PyBytes_AsStringAndSize
+PyBytes_Concat
+PyBytes_ConcatAndDel
+PyBytes_DecodeEscape
+PyBytes_FromFormat
+PyBytes_FromFormatV
+PyBytes_FromObject
+PyBytes_FromString
+PyBytes_FromStringAndSize
+PyBytes_Repr
+PyBytes_Size
+PyBytes_Type
+PyCFunction_Call
+PyCFunction_ClearFreeList
+PyCFunction_GetFlags
+PyCFunction_GetFunction
+PyCFunction_GetSelf
+PyCFunction_NewEx
+PyCFunction_Type
+PyCallIter_New
+PyCallIter_Type
+PyCallable_Check
+PyCapsule_GetContext
+PyCapsule_GetDestructor
+PyCapsule_GetName
+PyCapsule_GetPointer
+PyCapsule_Import
+PyCapsule_IsValid
+PyCapsule_New
+PyCapsule_SetContext
+PyCapsule_SetDestructor
+PyCapsule_SetName
+PyCapsule_SetPointer
+PyCapsule_Type
+PyClassMethodDescr_Type
+PyCodec_BackslashReplaceErrors
+PyCodec_Decode
+PyCodec_Decoder
+PyCodec_Encode
+PyCodec_Encoder
+PyCodec_IgnoreErrors
+PyCodec_IncrementalDecoder
+PyCodec_IncrementalEncoder
+PyCodec_KnownEncoding
+PyCodec_LookupError
+PyCodec_Register
+PyCodec_RegisterError
+PyCodec_ReplaceErrors
+PyCodec_StreamReader
+PyCodec_StreamWriter
+PyCodec_StrictErrors
+PyCodec_XMLCharRefReplaceErrors
+PyComplex_FromDoubles
+PyComplex_ImagAsDouble
+PyComplex_RealAsDouble
+PyComplex_Type
+PyDescr_NewClassMethod
+PyDescr_NewGetSet
+PyDescr_NewMember
+PyDescr_NewMethod
+PyDictItems_Type
+PyDictIterItem_Type
+PyDictIterKey_Type
+PyDictIterValue_Type
+PyDictKeys_Type
+PyDictProxy_New
+PyDictProxy_Type
+PyDictValues_Type
+PyDict_Clear
+PyDict_Contains
+PyDict_Copy
+PyDict_DelItem
+PyDict_DelItemString
+PyDict_GetItem
+PyDict_GetItemString
+PyDict_GetItemWithError
+PyDict_Items
+PyDict_Keys
+PyDict_Merge
+PyDict_MergeFromSeq2
+PyDict_New
+PyDict_Next
+PyDict_SetItem
+PyDict_SetItemString
+PyDict_Size
+PyDict_Type
+PyDict_Update
+PyDict_Values
+PyEllipsis_Type
+PyEnum_Type
+PyErr_BadArgument
+PyErr_BadInternalCall
+PyErr_CheckSignals
+PyErr_Clear
+PyErr_Display
+PyErr_ExceptionMatches
+PyErr_Fetch
+PyErr_Format
+PyErr_GivenExceptionMatches
+PyErr_NewException
+PyErr_NewExceptionWithDoc
+PyErr_NoMemory
+PyErr_NormalizeException
+PyErr_Occurred
+PyErr_Print
+PyErr_PrintEx
+PyErr_ProgramText
+PyErr_Restore
+PyErr_SetFromErrno
+PyErr_SetFromErrnoWithFilename
+PyErr_SetFromErrnoWithFilenameObject
+PyErr_SetInterrupt
+PyErr_SetNone
+PyErr_SetObject
+PyErr_SetString
+PyErr_SyntaxLocation
+PyErr_WarnEx
+PyErr_WarnExplicit
+PyErr_WarnFormat
+PyErr_WriteUnraisable
+PyEval_AcquireLock
+PyEval_AcquireThread
+PyEval_CallFunction
+PyEval_CallMethod
+PyEval_CallObjectWithKeywords
+PyEval_EvalCode
+PyEval_EvalCodeEx
+PyEval_EvalFrame
+PyEval_EvalFrameEx
+PyEval_GetBuiltins
+PyEval_GetCallStats
+PyEval_GetFrame
+PyEval_GetFuncDesc
+PyEval_GetFuncName
+PyEval_GetGlobals
+PyEval_GetLocals
+PyEval_InitThreads
+PyEval_ReInitThreads
+PyEval_ReleaseLock
+PyEval_ReleaseThread
+PyEval_RestoreThread
+PyEval_SaveThread
+PyEval_ThreadsInitialized
+PyExc_ArithmeticError
+PyExc_AssertionError
+PyExc_AttributeError
+PyExc_BaseException
+PyExc_BufferError
+PyExc_BytesWarning
+PyExc_DeprecationWarning
+PyExc_EOFError
+PyExc_EnvironmentError
+PyExc_Exception
+PyExc_FloatingPointError
+PyExc_FutureWarning
+PyExc_GeneratorExit
+PyExc_IOError
+PyExc_ImportError
+PyExc_ImportWarning
+PyExc_IndentationError
+PyExc_IndexError
+PyExc_KeyError
+PyExc_KeyboardInterrupt
+PyExc_LookupError
+PyExc_MemoryError
+PyExc_MemoryErrorInst
+PyExc_NameError
+PyExc_NotImplementedError
+PyExc_OSError
+PyExc_OverflowError
+PyExc_PendingDeprecationWarning
+PyExc_RecursionErrorInst
+PyExc_ReferenceError
+PyExc_RuntimeError
+PyExc_RuntimeWarning
+PyExc_StopIteration
+PyExc_SyntaxError
+PyExc_SyntaxWarning
+PyExc_SystemError
+PyExc_SystemExit
+PyExc_TabError
+PyExc_TypeError
+PyExc_UnboundLocalError
+PyExc_UnicodeDecodeError
+PyExc_UnicodeEncodeError
+PyExc_UnicodeError
+PyExc_UnicodeTranslateError
+PyExc_UnicodeWarning
+PyExc_UserWarning
+PyExc_ValueError
+PyExc_Warning
+PyExc_ZeroDivisionError
+PyException_GetCause
+PyException_GetContext
+PyException_GetTraceback
+PyException_SetCause
+PyException_SetContext
+PyException_SetTraceback
+PyFile_FromFd
+PyFile_GetLine
+PyFile_WriteObject
+PyFile_WriteString
+PyFilter_Type
+PyFloat_AsDouble
+PyFloat_FromDouble
+PyFloat_FromString
+PyFloat_GetInfo
+PyFloat_GetMax
+PyFloat_GetMin
+PyFloat_Type
+PyFrozenSet_New
+PyFrozenSet_Type
+PyGC_Collect
+PyGILState_Ensure
+PyGILState_GetThisThreadState
+PyGILState_Release
+PyGetSetDescr_Type
+PyImport_AddModule
+PyImport_AppendInittab
+PyImport_Cleanup
+PyImport_ExecCodeModule
+PyImport_ExecCodeModuleEx
+PyImport_ExecCodeModuleWithPathnames
+PyImport_GetImporter
+PyImport_GetMagicNumber
+PyImport_GetMagicTag
+PyImport_GetModuleDict
+PyImport_Import
+PyImport_ImportFrozenModule
+PyImport_ImportModule
+PyImport_ImportModuleLevel
+PyImport_ImportModuleNoBlock
+PyImport_ReloadModule
+PyInterpreterState_Clear
+PyInterpreterState_Delete
+PyInterpreterState_New
+PyIter_Next
+PyListIter_Type
+PyListRevIter_Type
+PyList_Append
+PyList_AsTuple
+PyList_GetItem
+PyList_GetSlice
+PyList_Insert
+PyList_New
+PyList_Reverse
+PyList_SetItem
+PyList_SetSlice
+PyList_Size
+PyList_Sort
+PyList_Type
+PyLongRangeIter_Type
+PyLong_AsDouble
+PyLong_AsLong
+PyLong_AsLongAndOverflow
+PyLong_AsLongLong
+PyLong_AsLongLongAndOverflow
+PyLong_AsSize_t
+PyLong_AsSsize_t
+PyLong_AsUnsignedLong
+PyLong_AsUnsignedLongLong
+PyLong_AsUnsignedLongLongMask
+PyLong_AsUnsignedLongMask
+PyLong_AsVoidPtr
+PyLong_FromDouble
+PyLong_FromLong
+PyLong_FromLongLong
+PyLong_FromSize_t
+PyLong_FromSsize_t
+PyLong_FromString
+PyLong_FromUnsignedLong
+PyLong_FromUnsignedLongLong
+PyLong_FromVoidPtr
+PyLong_GetInfo
+PyLong_Type
+PyMap_Type
+PyMapping_Check
+PyMapping_GetItemString
+PyMapping_HasKey
+PyMapping_HasKeyString
+PyMapping_Items
+PyMapping_Keys
+PyMapping_Length
+PyMapping_SetItemString
+PyMapping_Size
+PyMapping_Values
+PyMem_Free
+PyMem_Malloc
+PyMem_Realloc
+PyMemberDescr_Type
+PyMemoryView_FromObject
+PyMemoryView_GetContiguous
+PyMemoryView_Type
+PyMethodDescr_Type
+PyModule_AddIntConstant
+PyModule_AddObject
+PyModule_AddStringConstant
+PyModule_Create2
+PyModule_GetDef
+PyModule_GetDict
+PyModule_GetFilename
+PyModule_GetFilenameObject
+PyModule_GetName
+PyModule_GetState
+PyModule_New
+PyModule_Type
+PyNullImporter_Type
+PyNumber_Absolute
+PyNumber_Add
+PyNumber_And
+PyNumber_AsSsize_t
+PyNumber_Check
+PyNumber_Divmod
+PyNumber_Float
+PyNumber_FloorDivide
+PyNumber_InPlaceAdd
+PyNumber_InPlaceAnd
+PyNumber_InPlaceFloorDivide
+PyNumber_InPlaceLshift
+PyNumber_InPlaceMultiply
+PyNumber_InPlaceOr
+PyNumber_InPlacePower
+PyNumber_InPlaceRemainder
+PyNumber_InPlaceRshift
+PyNumber_InPlaceSubtract
+PyNumber_InPlaceTrueDivide
+PyNumber_InPlaceXor
+PyNumber_Index
+PyNumber_Invert
+PyNumber_Long
+PyNumber_Lshift
+PyNumber_Multiply
+PyNumber_Negative
+PyNumber_Or
+PyNumber_Positive
+PyNumber_Power
+PyNumber_Remainder
+PyNumber_Rshift
+PyNumber_Subtract
+PyNumber_ToBase
+PyNumber_TrueDivide
+PyNumber_Xor
+PyOS_AfterFork
+PyOS_InitInterrupts
+PyOS_InputHook
+PyOS_InterruptOccurred
+PyOS_ReadlineFunctionPointer
+PyOS_double_to_string
+PyOS_getsig
+PyOS_mystricmp
+PyOS_mystrnicmp
+PyOS_setsig
+PyOS_snprintf
+PyOS_string_to_double
+PyOS_strtol
+PyOS_strtoul
+PyOS_vsnprintf
+PyObject_ASCII
+PyObject_AsCharBuffer
+PyObject_AsFileDescriptor
+PyObject_AsReadBuffer
+PyObject_AsWriteBuffer
+PyObject_Bytes
+PyObject_Call
+PyObject_CallFunction
+PyObject_CallFunctionObjArgs
+PyObject_CallMethod
+PyObject_CallMethodObjArgs
+PyObject_CallObject
+PyObject_CheckReadBuffer
+PyObject_ClearWeakRefs
+PyObject_DelItem
+PyObject_DelItemString
+PyObject_Dir
+PyObject_Format
+PyObject_Free
+PyObject_GC_Del
+PyObject_GC_Track
+PyObject_GC_UnTrack
+PyObject_GenericGetAttr
+PyObject_GenericSetAttr
+PyObject_GetAttr
+PyObject_GetAttrString
+PyObject_GetItem
+PyObject_GetIter
+PyObject_HasAttr
+PyObject_HasAttrString
+PyObject_Hash
+PyObject_HashNotImplemented
+PyObject_Init
+PyObject_InitVar
+PyObject_IsInstance
+PyObject_IsSubclass
+PyObject_IsTrue
+PyObject_Length
+PyObject_Malloc
+PyObject_Not
+PyObject_Realloc
+PyObject_Repr
+PyObject_RichCompare
+PyObject_RichCompareBool
+PyObject_SelfIter
+PyObject_SetAttr
+PyObject_SetAttrString
+PyObject_SetItem
+PyObject_Size
+PyObject_Str
+PyObject_Type
+PyParser_SimpleParseFileFlags
+PyParser_SimpleParseStringFlags
+PyProperty_Type
+PyRangeIter_Type
+PyRange_Type
+PyReversed_Type
+PySeqIter_New
+PySeqIter_Type
+PySequence_Check
+PySequence_Concat
+PySequence_Contains
+PySequence_Count
+PySequence_DelItem
+PySequence_DelSlice
+PySequence_Fast
+PySequence_GetItem
+PySequence_GetSlice
+PySequence_In
+PySequence_InPlaceConcat
+PySequence_InPlaceRepeat
+PySequence_Index
+PySequence_Length
+PySequence_List
+PySequence_Repeat
+PySequence_SetItem
+PySequence_SetSlice
+PySequence_Size
+PySequence_Tuple
+PySetIter_Type
+PySet_Add
+PySet_Clear
+PySet_Contains
+PySet_Discard
+PySet_New
+PySet_Pop
+PySet_Size
+PySet_Type
+PySlice_GetIndices
+PySlice_GetIndicesEx
+PySlice_New
+PySlice_Type
+PySortWrapper_Type
+PyState_FindModule
+PyStructSequence_GetItem
+PyStructSequence_New
+PyStructSequence_NewType
+PyStructSequence_SetItem
+PySuper_Type
+PySys_AddWarnOption
+PySys_AddWarnOptionUnicode
+PySys_FormatStderr
+PySys_FormatStdout
+PySys_GetObject
+PySys_HasWarnOptions
+PySys_ResetWarnOptions
+PySys_SetArgv
+PySys_SetArgvEx
+PySys_SetObject
+PySys_SetPath
+PySys_WriteStderr
+PySys_WriteStdout
+PyThreadState_Clear
+PyThreadState_Delete
+PyThreadState_DeleteCurrent
+PyThreadState_Get
+PyThreadState_GetDict
+PyThreadState_New
+PyThreadState_SetAsyncExc
+PyThreadState_Swap
+PyTraceBack_Here
+PyTraceBack_Print
+PyTraceBack_Type
+PyTupleIter_Type
+PyTuple_ClearFreeList
+PyTuple_GetItem
+PyTuple_GetSlice
+PyTuple_New
+PyTuple_Pack
+PyTuple_SetItem
+PyTuple_Size
+PyTuple_Type
+PyType_ClearCache
+PyType_FromSpec
+PyType_GenericAlloc
+PyType_GenericNew
+PyType_GetFlags
+PyType_IsSubtype
+PyType_Modified
+PyType_Ready
+PyType_Type
+PyUnicodeDecodeError_Create
+PyUnicodeDecodeError_GetEncoding
+PyUnicodeDecodeError_GetEnd
+PyUnicodeDecodeError_GetObject
+PyUnicodeDecodeError_GetReason
+PyUnicodeDecodeError_GetStart
+PyUnicodeDecodeError_SetEnd
+PyUnicodeDecodeError_SetReason
+PyUnicodeDecodeError_SetStart
+PyUnicodeEncodeError_GetEncoding
+PyUnicodeEncodeError_GetEnd
+PyUnicodeEncodeError_GetObject
+PyUnicodeEncodeError_GetReason
+PyUnicodeEncodeError_GetStart
+PyUnicodeEncodeError_SetEnd
+PyUnicodeEncodeError_SetReason
+PyUnicodeEncodeError_SetStart
+PyUnicodeIter_Type
+PyUnicodeTranslateError_GetEnd
+PyUnicodeTranslateError_GetObject
+PyUnicodeTranslateError_GetReason
+PyUnicodeTranslateError_GetStart
+PyUnicodeTranslateError_SetEnd
+PyUnicodeTranslateError_SetReason
+PyUnicodeTranslateError_SetStart
+PyUnicodeUCS2_Append
+PyUnicodeUCS2_AppendAndDel
+PyUnicodeUCS2_AsASCIIString
+PyUnicodeUCS2_AsCharmapString
+PyUnicodeUCS2_AsDecodedObject
+PyUnicodeUCS2_AsDecodedUnicode
+PyUnicodeUCS2_AsEncodedObject
+PyUnicodeUCS2_AsEncodedString
+PyUnicodeUCS2_AsEncodedUnicode
+PyUnicodeUCS2_AsLatin1String
+PyUnicodeUCS2_AsRawUnicodeEscapeString
+PyUnicodeUCS2_AsUTF16String
+PyUnicodeUCS2_AsUTF32String
+PyUnicodeUCS2_AsUTF8String
+PyUnicodeUCS2_AsUnicodeEscapeString
+PyUnicodeUCS2_AsWideChar
+PyUnicodeUCS2_ClearFreelist
+PyUnicodeUCS2_Compare
+PyUnicodeUCS2_Concat
+PyUnicodeUCS2_Contains
+PyUnicodeUCS2_Count
+PyUnicodeUCS2_Decode
+PyUnicodeUCS2_DecodeASCII
+PyUnicodeUCS2_DecodeCharmap
+PyUnicodeUCS2_DecodeFSDefault
+PyUnicodeUCS2_DecodeFSDefaultAndSize
+PyUnicodeUCS2_DecodeLatin1
+PyUnicodeUCS2_DecodeRawUnicodeEscape
+PyUnicodeUCS2_DecodeUTF16
+PyUnicodeUCS2_DecodeUTF16Stateful
+PyUnicodeUCS2_DecodeUTF32
+PyUnicodeUCS2_DecodeUTF32Stateful
+PyUnicodeUCS2_DecodeUTF8
+PyUnicodeUCS2_DecodeUTF8Stateful
+PyUnicodeUCS2_DecodeUnicodeEscape
+PyUnicodeUCS2_FSConverter
+PyUnicodeUCS2_FSDecoder
+PyUnicodeUCS2_Find
+PyUnicodeUCS2_Format
+PyUnicodeUCS2_FromEncodedObject
+PyUnicodeUCS2_FromFormat
+PyUnicodeUCS2_FromFormatV
+PyUnicodeUCS2_FromObject
+PyUnicodeUCS2_FromOrdinal
+PyUnicodeUCS2_FromString
+PyUnicodeUCS2_FromStringAndSize
+PyUnicodeUCS2_FromWideChar
+PyUnicodeUCS2_GetDefaultEncoding
+PyUnicodeUCS2_GetSize
+PyUnicodeUCS2_IsIdentifier
+PyUnicodeUCS2_Join
+PyUnicodeUCS2_Partition
+PyUnicodeUCS2_RPartition
+PyUnicodeUCS2_RSplit
+PyUnicodeUCS2_Replace
+PyUnicodeUCS2_Resize
+PyUnicodeUCS2_RichCompare
+PyUnicodeUCS2_SetDefaultEncoding
+PyUnicodeUCS2_Split
+PyUnicodeUCS2_Splitlines
+PyUnicodeUCS2_Tailmatch
+PyUnicodeUCS2_Translate
+PyUnicode_BuildEncodingMap
+PyUnicode_CompareWithASCIIString
+PyUnicode_DecodeUTF7
+PyUnicode_DecodeUTF7Stateful
+PyUnicode_EncodeFSDefault
+PyUnicode_InternFromString
+PyUnicode_InternImmortal
+PyUnicode_InternInPlace
+PyUnicode_Type
+PyWeakref_GetObject
+PyWeakref_NewProxy
+PyWeakref_NewRef
+PyWrapperDescr_Type
+PyWrapper_New
+PyZip_Type
+Py_AddPendingCall
+Py_AtExit
+Py_BuildValue
+Py_CompileString
+Py_DecRef
+Py_EndInterpreter
+Py_Exit
+Py_FatalError
+Py_FileSystemDefaultEncoding
+Py_Finalize
+Py_GetBuildInfo
+Py_GetCompiler
+Py_GetCopyright
+Py_GetExecPrefix
+Py_GetPath
+Py_GetPlatform
+Py_GetPrefix
+Py_GetProgramFullPath
+Py_GetProgramName
+Py_GetPythonHome
+Py_GetRecursionLimit
+Py_GetVersion
+Py_HasFileSystemDefaultEncoding
+Py_IncRef
+Py_Initialize
+Py_InitializeEx
+Py_IsInitialized
+Py_Main
+Py_MakePendingCalls
+Py_NewInterpreter
+Py_ReprEnter
+Py_ReprLeave
+Py_SetProgramName
+Py_SetPythonHome
+Py_SetRecursionLimit
+Py_SymtableString
+Py_VaBuildValue
+_PyErr_BadInternalCall
+_PyObject_CallFunction_SizeT
+_PyObject_CallMethod_SizeT
+_PyObject_GC_Malloc
+_PyObject_GC_New
+_PyObject_GC_NewVar
+_PyObject_GC_Resize
+_PyObject_New
+_PyObject_NewVar
+_PyState_AddModule
+_PyThreadState_Init
+_PyThreadState_Prealloc
+_PyTrash_delete_later
+_PyTrash_delete_nesting
+_PyTrash_deposit_object
+_PyTrash_destroy_chain
+_PyWeakref_CallableProxyType
+_PyWeakref_ProxyType
+_PyWeakref_RefType
+_Py_BuildValue_SizeT
+_Py_CheckRecursionLimit
+_Py_CheckRecursiveCall
+_Py_Dealloc
+_Py_EllipsisObject
+_Py_FalseStruct
+_Py_NoneStruct
+_Py_NotImplementedStruct
+_Py_SwappedOp
+_Py_TrueStruct
+_Py_VaBuildValue_SizeT
diff --git a/PC/python3dll.c b/PC/python3dll.c
new file mode 100644
index 0000000..ef29071
--- /dev/null
+++ b/PC/python3dll.c
@@ -0,0 +1,9 @@
+#include <windows.h>
+
+BOOL WINAPI
+DllMain(HINSTANCE hInstDLL,
+ DWORD fdwReason,
+ LPVOID lpReserved)
+{
+ return TRUE;
+} \ No newline at end of file
diff --git a/PC/python_nt.rc b/PC/python_nt.rc
index e132837..8cccf2d 100644
--- a/PC/python_nt.rc
+++ b/PC/python_nt.rc
@@ -61,7 +61,7 @@ BEGIN
VALUE "FileDescription", "Python Core\0"
VALUE "FileVersion", PYTHON_VERSION
VALUE "InternalName", "Python DLL\0"
- VALUE "LegalCopyright", "Copyright © 2001-2008 Python Software Foundation. Copyright © 2000 BeOpen.com. Copyright © 1995-2001 CNRI. Copyright © 1991-1995 SMC.\0"
+ VALUE "LegalCopyright", "Copyright © 2001-2011 Python Software Foundation. Copyright © 2000 BeOpen.com. Copyright © 1995-2001 CNRI. Copyright © 1991-1995 SMC.\0"
VALUE "OriginalFilename", PYTHON_DLL_NAME "\0"
VALUE "ProductName", "Python\0"
VALUE "ProductVersion", PYTHON_VERSION
diff --git a/PC/winreg.c b/PC/winreg.c
index 52d230e..1bc47b9 100644
--- a/PC/winreg.c
+++ b/PC/winreg.c
@@ -88,7 +88,7 @@ PyDoc_STRVAR(ConnectRegistry_doc,
"key is the predefined handle to connect to.\n"
"\n"
"The return value is the handle of the opened key.\n"
-"If the function fails, an EnvironmentError exception is raised.");
+"If the function fails, a WindowsError exception is raised.");
PyDoc_STRVAR(CreateKey_doc,
"key = CreateKey(key, sub_key) - Creates or opens the specified key.\n"
@@ -103,6 +103,21 @@ PyDoc_STRVAR(CreateKey_doc,
"The return value is the handle of the opened key.\n"
"If the function fails, an exception is raised.");
+PyDoc_STRVAR(CreateKeyEx_doc,
+"key = CreateKeyEx(key, sub_key, res, sam) - Creates or opens the specified key.\n"
+"\n"
+"key is an already open key, or one of the predefined HKEY_* constants\n"
+"sub_key is a string that names the key this method opens or creates.\n"
+"res is a reserved integer, and must be zero. Default is zero.\n"
+"sam is an integer that specifies an access mask that describes the desired\n"
+" If key is one of the predefined keys, sub_key may be None. In that case,\n"
+" the handle returned is the same key handle passed in to the function.\n"
+"\n"
+"If the key already exists, this function opens the existing key\n"
+"\n"
+"The return value is the handle of the opened key.\n"
+"If the function fails, an exception is raised.");
+
PyDoc_STRVAR(DeleteKey_doc,
"DeleteKey(key, sub_key) - Deletes the specified key.\n"
"\n"
@@ -113,7 +128,22 @@ PyDoc_STRVAR(DeleteKey_doc,
"This method can not delete keys with subkeys.\n"
"\n"
"If the method succeeds, the entire key, including all of its values,\n"
-"is removed. If the method fails, an EnvironmentError exception is raised.");
+"is removed. If the method fails, a WindowsError exception is raised.");
+
+PyDoc_STRVAR(DeleteKeyEx_doc,
+"DeleteKeyEx(key, sub_key, sam, res) - Deletes the specified key.\n"
+"\n"
+"key is an already open key, or any one of the predefined HKEY_* constants.\n"
+"sub_key is a string that must be a subkey of the key identified by the key parameter.\n"
+"res is a reserved integer, and must be zero. Default is zero.\n"
+"sam is an integer that specifies an access mask that describes the desired\n"
+" This value must not be None, and the key may not have subkeys.\n"
+"\n"
+"This method can not delete keys with subkeys.\n"
+"\n"
+"If the method succeeds, the entire key, including all of its values,\n"
+"is removed. If the method fails, a WindowsError exception is raised.\n"
+"On unsupported Windows versions, NotImplementedError is raised.");
PyDoc_STRVAR(DeleteValue_doc,
"DeleteValue(key, value) - Removes a named value from a registry key.\n"
@@ -128,7 +158,7 @@ PyDoc_STRVAR(EnumKey_doc,
"index is an integer that identifies the index of the key to retrieve.\n"
"\n"
"The function retrieves the name of one subkey each time it is called.\n"
-"It is typically called repeatedly until an EnvironmentError exception is\n"
+"It is typically called repeatedly until a WindowsError exception is\n"
"raised, indicating no more values are available.");
PyDoc_STRVAR(EnumValue_doc,
@@ -137,7 +167,7 @@ PyDoc_STRVAR(EnumValue_doc,
"index is an integer that identifies the index of the value to retrieve.\n"
"\n"
"The function retrieves the name of one subkey each time it is called.\n"
-"It is typically called repeatedly, until an EnvironmentError exception\n"
+"It is typically called repeatedly, until a WindowsError exception\n"
"is raised, indicating no more values.\n"
"\n"
"The result is a tuple of 3 items:\n"
@@ -191,7 +221,7 @@ PyDoc_STRVAR(OpenKey_doc,
" security access for the key. Default is KEY_READ\n"
"\n"
"The result is a new handle to the specified key\n"
-"If the function fails, an EnvironmentError exception is raised.");
+"If the function fails, a WindowsError exception is raised.");
PyDoc_STRVAR(OpenKeyEx_doc, "See OpenKey()");
@@ -422,7 +452,7 @@ PyHKEY_compareFunc(PyObject *ob1, PyObject *ob2)
(pyhkey1 < pyhkey2 ? -1 : 1);
}
-static long
+static Py_hash_t
PyHKEY_hashFunc(PyObject *ob)
{
/* Just use the address.
@@ -735,8 +765,9 @@ Py2Reg(PyObject *value, DWORD typ, BYTE **retDataBuf, DWORD *retDataSize)
else {
if (!PyUnicode_Check(value))
return FALSE;
-
- *retDataSize = 2 + PyUnicode_GET_DATA_SIZE(value);
+ *retDataSize = Py_SAFE_DOWNCAST(
+ 2 + PyUnicode_GET_DATA_SIZE(value),
+ size_t, DWORD);
}
*retDataBuf = (BYTE *)PyMem_NEW(DWORD, *retDataSize);
if (*retDataBuf==NULL){
@@ -768,7 +799,8 @@ Py2Reg(PyObject *value, DWORD typ, BYTE **retDataBuf, DWORD *retDataSize)
t = PyList_GET_ITEM(value, j);
if (!PyUnicode_Check(t))
return FALSE;
- size += 2 + PyUnicode_GET_DATA_SIZE(t);
+ size += Py_SAFE_DOWNCAST(2 + PyUnicode_GET_DATA_SIZE(t),
+ size_t, DWORD);
}
*retDataSize = size + 2;
@@ -818,7 +850,7 @@ Py2Reg(PyObject *value, DWORD typ, BYTE **retDataBuf, DWORD *retDataSize)
PyErr_NoMemory();
return FALSE;
}
- *retDataSize = view.len;
+ *retDataSize = Py_SAFE_DOWNCAST(view.len, Py_ssize_t, DWORD);
memcpy(*retDataBuf, view.buf, view.len);
PyBuffer_Release(&view);
}
@@ -957,6 +989,32 @@ PyCreateKey(PyObject *self, PyObject *args)
}
static PyObject *
+PyCreateKeyEx(PyObject *self, PyObject *args, PyObject *kwargs)
+{
+ HKEY hKey;
+ PyObject *key;
+ wchar_t *sub_key;
+ HKEY retKey;
+ int reserved = 0;
+ REGSAM access = KEY_WRITE;
+ long rc;
+
+ char *kwlist[] = {"key", "sub_key", "reserved", "access", NULL};
+
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OZ|ii:CreateKeyEx", kwlist,
+ &key, &sub_key, &reserved, &access))
+ return NULL;
+ if (!PyHKEY_AsHKEY(key, &hKey, FALSE))
+ return NULL;
+
+ rc = RegCreateKeyExW(hKey, sub_key, reserved, NULL, (DWORD)NULL,
+ access, NULL, &retKey, NULL);
+ if (rc != ERROR_SUCCESS)
+ return PyErr_SetFromWindowsErrWithFunction(rc, "CreateKeyEx");
+ return PyHKEY_FromHKEY(retKey);
+}
+
+static PyObject *
PyDeleteKey(PyObject *self, PyObject *args)
{
HKEY hKey;
@@ -975,6 +1033,47 @@ PyDeleteKey(PyObject *self, PyObject *args)
}
static PyObject *
+PyDeleteKeyEx(PyObject *self, PyObject *args, PyObject *kwargs)
+{
+ HKEY hKey;
+ PyObject *key;
+ HMODULE hMod;
+ typedef LONG (WINAPI *RDKEFunc)(HKEY, const wchar_t*, REGSAM, int);
+ RDKEFunc pfn = NULL;
+ wchar_t *sub_key;
+ long rc;
+ int reserved = 0;
+ REGSAM access = KEY_WOW64_64KEY;
+
+ char *kwlist[] = {"key", "sub_key", "access", "reserved", NULL};
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "Ou|ii:DeleteKeyEx", kwlist,
+ &key, &sub_key, &access, &reserved))
+ return NULL;
+ if (!PyHKEY_AsHKEY(key, &hKey, FALSE))
+ return NULL;
+
+ /* Only available on 64bit platforms, so we must load it
+ dynamically. */
+ hMod = GetModuleHandle("advapi32.dll");
+ if (hMod)
+ pfn = (RDKEFunc)GetProcAddress(hMod,
+ "RegDeleteKeyExW");
+ if (!pfn) {
+ PyErr_SetString(PyExc_NotImplementedError,
+ "not implemented on this platform");
+ return NULL;
+ }
+ Py_BEGIN_ALLOW_THREADS
+ rc = (*pfn)(hKey, sub_key, access, reserved);
+ Py_END_ALLOW_THREADS
+
+ if (rc != ERROR_SUCCESS)
+ return PyErr_SetFromWindowsErrWithFunction(rc, "RegDeleteKeyEx");
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
+static PyObject *
PyDeleteValue(PyObject *self, PyObject *args)
{
HKEY hKey;
@@ -1036,7 +1135,7 @@ PyEnumValue(PyObject *self, PyObject *args)
int index;
long rc;
wchar_t *retValueBuf;
- wchar_t *tmpBuf;
+ BYTE *tmpBuf;
BYTE *retDataBuf;
DWORD retValueSize, bufValueSize;
DWORD retDataSize, bufDataSize;
@@ -1084,7 +1183,7 @@ PyEnumValue(PyObject *self, PyObject *args)
break;
bufDataSize *= 2;
- tmpBuf = (wchar_t *)PyMem_Realloc(retDataBuf, bufDataSize);
+ tmpBuf = (BYTE *)PyMem_Realloc(retDataBuf, bufDataSize);
if (tmpBuf == NULL) {
PyErr_NoMemory();
retVal = NULL;
@@ -1187,24 +1286,26 @@ PyLoadKey(PyObject *self, PyObject *args)
}
static PyObject *
-PyOpenKey(PyObject *self, PyObject *args)
+PyOpenKey(PyObject *self, PyObject *args, PyObject *kwargs)
{
HKEY hKey;
- PyObject *obKey;
-
- wchar_t *subKey;
- int res = 0;
+ PyObject *key;
+ wchar_t *sub_key;
+ int reserved = 0;
HKEY retKey;
long rc;
- REGSAM sam = KEY_READ;
- if (!PyArg_ParseTuple(args, "OZ|ii:OpenKey", &obKey, &subKey,
- &res, &sam))
+ REGSAM access = KEY_READ;
+
+ char *kwlist[] = {"key", "sub_key", "reserved", "access", NULL};
+
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OZ|ii:OpenKey", kwlist,
+ &key, &sub_key, &reserved, &access))
return NULL;
- if (!PyHKEY_AsHKEY(obKey, &hKey, FALSE))
+ if (!PyHKEY_AsHKEY(key, &hKey, FALSE))
return NULL;
Py_BEGIN_ALLOW_THREADS
- rc = RegOpenKeyExW(hKey, subKey, res, sam, &retKey);
+ rc = RegOpenKeyExW(hKey, sub_key, reserved, access, &retKey);
Py_END_ALLOW_THREADS
if (rc != ERROR_SUCCESS)
return PyErr_SetFromWindowsErrWithFunction(rc, "RegOpenKeyEx");
@@ -1475,8 +1576,8 @@ PyDisableReflectionKey(PyObject *self, PyObject *args)
if (!PyHKEY_AsHKEY(obKey, &hKey, FALSE))
return NULL;
- // Only available on 64bit platforms, so we must load it
- // dynamically.
+ /* Only available on 64bit platforms, so we must load it
+ dynamically.*/
hMod = GetModuleHandle("advapi32.dll");
if (hMod)
pfn = (RDRKFunc)GetProcAddress(hMod,
@@ -1511,8 +1612,8 @@ PyEnableReflectionKey(PyObject *self, PyObject *args)
if (!PyHKEY_AsHKEY(obKey, &hKey, FALSE))
return NULL;
- // Only available on 64bit platforms, so we must load it
- // dynamically.
+ /* Only available on 64bit platforms, so we must load it
+ dynamically.*/
hMod = GetModuleHandle("advapi32.dll");
if (hMod)
pfn = (RERKFunc)GetProcAddress(hMod,
@@ -1548,8 +1649,8 @@ PyQueryReflectionKey(PyObject *self, PyObject *args)
if (!PyHKEY_AsHKEY(obKey, &hKey, FALSE))
return NULL;
- // Only available on 64bit platforms, so we must load it
- // dynamically.
+ /* Only available on 64bit platforms, so we must load it
+ dynamically.*/
hMod = GetModuleHandle("advapi32.dll");
if (hMod)
pfn = (RQRKFunc)GetProcAddress(hMod,
@@ -1565,14 +1666,18 @@ PyQueryReflectionKey(PyObject *self, PyObject *args)
if (rc != ERROR_SUCCESS)
return PyErr_SetFromWindowsErrWithFunction(rc,
"RegQueryReflectionKey");
- return PyBool_FromLong(rc);
+ return PyBool_FromLong(result);
}
static struct PyMethodDef winreg_methods[] = {
{"CloseKey", PyCloseKey, METH_VARARGS, CloseKey_doc},
{"ConnectRegistry", PyConnectRegistry, METH_VARARGS, ConnectRegistry_doc},
{"CreateKey", PyCreateKey, METH_VARARGS, CreateKey_doc},
+ {"CreateKeyEx", (PyCFunction)PyCreateKeyEx,
+ METH_VARARGS | METH_KEYWORDS, CreateKeyEx_doc},
{"DeleteKey", PyDeleteKey, METH_VARARGS, DeleteKey_doc},
+ {"DeleteKeyEx", (PyCFunction)PyDeleteKeyEx,
+ METH_VARARGS | METH_KEYWORDS, DeleteKeyEx_doc},
{"DeleteValue", PyDeleteValue, METH_VARARGS, DeleteValue_doc},
{"DisableReflectionKey", PyDisableReflectionKey, METH_VARARGS, DisableReflectionKey_doc},
{"EnableReflectionKey", PyEnableReflectionKey, METH_VARARGS, EnableReflectionKey_doc},
@@ -1582,8 +1687,10 @@ static struct PyMethodDef winreg_methods[] = {
ExpandEnvironmentStrings_doc },
{"FlushKey", PyFlushKey, METH_VARARGS, FlushKey_doc},
{"LoadKey", PyLoadKey, METH_VARARGS, LoadKey_doc},
- {"OpenKey", PyOpenKey, METH_VARARGS, OpenKey_doc},
- {"OpenKeyEx", PyOpenKey, METH_VARARGS, OpenKeyEx_doc},
+ {"OpenKey", (PyCFunction)PyOpenKey, METH_VARARGS | METH_KEYWORDS,
+ OpenKey_doc},
+ {"OpenKeyEx", (PyCFunction)PyOpenKey, METH_VARARGS | METH_KEYWORDS,
+ OpenKeyEx_doc},
{"QueryValue", PyQueryValue, METH_VARARGS, QueryValue_doc},
{"QueryValueEx", PyQueryValueEx, METH_VARARGS, QueryValueEx_doc},
{"QueryInfoKey", PyQueryInfoKey, METH_VARARGS, QueryInfoKey_doc},
diff --git a/PC/winsound.c b/PC/winsound.c
index d455848..1ed95ba 100644
--- a/PC/winsound.c
+++ b/PC/winsound.c
@@ -73,8 +73,6 @@ static PyObject *
sound_playsound(PyObject *s, PyObject *args)
{
Py_UNICODE *wsound;
- PyObject *osound;
- const char *sound;
int flags;
int ok;
@@ -95,31 +93,7 @@ sound_playsound(PyObject *s, PyObject *args)
Py_INCREF(Py_None);
return Py_None;
}
- /* Drop the argument parsing error as narrow strings
- are also valid. */
- PyErr_Clear();
- if (!PyArg_ParseTuple(args, "O&i:PlaySound",
- PyUnicode_FSConverter, &osound, &flags))
- return NULL;
- if (flags & SND_ASYNC && flags & SND_MEMORY) {
- /* Sidestep reference counting headache; unfortunately this also
- prevent SND_LOOP from memory. */
- PyErr_SetString(PyExc_RuntimeError, "Cannot play asynchronously from memory");
- Py_DECREF(osound);
- return NULL;
- }
- sound = PyBytes_AsString(osound);
- Py_BEGIN_ALLOW_THREADS
- ok = PlaySoundA(sound, NULL, flags);
- Py_END_ALLOW_THREADS
- if (!ok) {
- PyErr_SetString(PyExc_RuntimeError, "Failed to play sound");
- Py_DECREF(osound);
- return NULL;
- }
- Py_DECREF(osound);
- Py_INCREF(Py_None);
- return Py_None;
+ return NULL;
}
static PyObject *