[Python-checkins] python/dist/src/PC .cvsignore, NONE,
1.2.2.1 _subprocess.c, NONE, 1.3.4.1 empty.c, NONE,
1.1.4.1 icons.mak, NONE, 1.1.4.1 icons.rc, NONE,
1.1.4.1 make_versioninfo.c, NONE, 1.1.8.1 tix.diff, NONE,
1.2.4.1 _winreg.c, 1.10.2.1, 1.10.2.2 config.c, 1.34.2.1,
1.34.2.2 dllbase_nt.txt, 1.4.16.1, 1.4.16.2 getpathp.c,
1.27.2.1, 1.27.2.2 msvcrtmodule.c, 1.8, 1.8.2.1 pyconfig.h,
1.11.2.1, 1.11.2.2 python_nt.rc, 1.17.2.1, 1.17.2.2 readme.txt,
1.24, 1.24.18.1 testpy.py, 1.2, 1.2.32.1 winsound.c, 1.10.2.1,
1.10.2.2
kbk at users.sourceforge.net
kbk at users.sourceforge.net
Fri Jan 7 08:08:02 CET 2005
- Previous message: [Python-checkins] python/dist/src/PC/example_nt example.sln, NONE,
1.1.4.1 example.vcproj, NONE, 1.1.4.1 readme.txt, 1.11,
1.11.6.1 example.dsp, 1.6, NONE example.dsw, 1.2, NONE
- Next message: [Python-checkins] python/dist/src/Modules/expat expat_external.h,
NONE, 1.1.4.1 macconfig.h, NONE, 1.3.4.1 asciitab.h, 1.1.1.1,
1.1.1.1.2.1 expat.h, 1.3.2.1, 1.3.2.2 iasciitab.h, 1.1.1.1,
1.1.1.1.2.1 internal.h, 1.1.6.1, 1.1.6.2 latin1tab.h, 1.1.1.1,
1.1.1.1.2.1 utf8tab.h, 1.1.1.1, 1.1.1.1.2.1 winconfig.h,
1.1.1.1, 1.1.1.1.2.1 xmlparse.c, 1.2.2.1, 1.2.2.2 xmlrole.c,
1.2.2.1, 1.2.2.2 xmltok.c, 1.2.2.1, 1.2.2.2 xmltok.h,
1.1.1.1.2.1, 1.1.1.1.2.2 xmltok_impl.c, 1.1.1.1.2.1,
1.1.1.1.2.2 expat.h.in, 1.1.1.1, NONE
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/python/python/dist/src/PC
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12896/PC
Modified Files:
Tag: ast-branch
_winreg.c config.c dllbase_nt.txt getpathp.c msvcrtmodule.c
pyconfig.h python_nt.rc readme.txt testpy.py winsound.c
Added Files:
Tag: ast-branch
.cvsignore _subprocess.c empty.c icons.mak icons.rc
make_versioninfo.c tix.diff
Log Message:
Merge MAIN into ast-branch
cvs up -kk -j mrg_to_ast-branch_24APR03 -j mrg_to_ast-branch_05JAN05
(date of earlier merge estimated 24Apr03 17:30 UTC, repository tagged)
Not merged:
Lib/test/test_compile.py, Python/compile.c
Refer to Tracker Patch # 1097671 for the merge output and list of
conflicts resolved.
--- NEW FILE: .cvsignore ---
python_nt.h
python_nt_d.h
pythonnt_rc.h
pythonnt_rc_d.h
--- NEW FILE: _subprocess.c ---
/*
* support routines for subprocess module
*
* Currently, this extension module is only required when using the
* subprocess module on Windows, but in the future, stubs for other
* platforms might be added here as well.
*
* Copyright (c) 2004 by Fredrik Lundh <fredrik at pythonware.com>
* Copyright (c) 2004 by Secret Labs AB, http://www.pythonware.com
* Copyright (c) 2004 by Peter Astrand <astrand at lysator.liu.se>
*
* By obtaining, using, and/or copying this software and/or its
* associated documentation, you agree that you have read, understood,
* and will comply with the following terms and conditions:
*
* Permission to use, copy, modify, and distribute this software and
* its associated documentation for any purpose and without fee is
* hereby granted, provided that the above copyright notice appears in
* all copies, and that both that copyright notice and this permission
* notice appear in supporting documentation, and that the name of the
* authors not be used in advertising or publicity pertaining to
* distribution of the software without specific, written prior
* permission.
*
* THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
* IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
* OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
*/
/* TODO: handle unicode command lines? */
/* TODO: handle unicode environment? */
#include "Python.h"
#define WINDOWS_LEAN_AND_MEAN
#include "windows.h"
/* -------------------------------------------------------------------- */
/* handle wrapper. note that this library uses integers when passing
handles to a function, and handle wrappers when returning handles.
the wrapper is used to provide Detach and Close methods */
typedef struct {
PyObject_HEAD
HANDLE handle;
} sp_handle_object;
staticforward PyTypeObject sp_handle_type;
static PyObject*
sp_handle_new(HANDLE handle)
{
sp_handle_object* self;
self = PyObject_NEW(sp_handle_object, &sp_handle_type);
if (self == NULL)
return NULL;
self->handle = handle;
return (PyObject*) self;
}
static PyObject*
sp_handle_detach(sp_handle_object* self, PyObject* args)
{
HANDLE handle;
if (! PyArg_ParseTuple(args, ":Detach"))
return NULL;
handle = self->handle;
self->handle = NULL;
/* note: return the current handle, as an integer */
return PyInt_FromLong((long) handle);
}
static PyObject*
sp_handle_close(sp_handle_object* self, PyObject* args)
{
if (! PyArg_ParseTuple(args, ":Close"))
return NULL;
if (self->handle != INVALID_HANDLE_VALUE) {
CloseHandle(self->handle);
self->handle = INVALID_HANDLE_VALUE;
}
Py_INCREF(Py_None);
return Py_None;
}
static void
sp_handle_dealloc(sp_handle_object* self)
{
if (self->handle != INVALID_HANDLE_VALUE)
CloseHandle(self->handle);
PyMem_DEL(self);
}
static PyMethodDef sp_handle_methods[] = {
{"Detach", (PyCFunction) sp_handle_detach, 1},
{"Close", (PyCFunction) sp_handle_close, 1},
{NULL, NULL}
};
static PyObject*
sp_handle_getattr(sp_handle_object* self, char* name)
{
return Py_FindMethod(sp_handle_methods, (PyObject*) self, name);
}
static PyObject*
sp_handle_as_int(sp_handle_object* self)
{
return PyInt_FromLong((long) self->handle);
}
static PyNumberMethods sp_handle_as_number;
statichere PyTypeObject sp_handle_type = {
PyObject_HEAD_INIT(NULL)
0, /*ob_size*/
"_subprocess_handle", sizeof(sp_handle_object), 0,
(destructor) sp_handle_dealloc, /*tp_dealloc*/
0, /*tp_print*/
(getattrfunc) sp_handle_getattr,/*tp_getattr*/
0, /*tp_setattr*/
0, /*tp_compare*/
0, /*tp_repr*/
&sp_handle_as_number, /*tp_as_number */
0, /*tp_as_sequence */
0, /*tp_as_mapping */
0 /*tp_hash*/
};
/* -------------------------------------------------------------------- */
/* windows API functions */
static PyObject *
sp_GetStdHandle(PyObject* self, PyObject* args)
{
HANDLE handle;
int std_handle;
if (! PyArg_ParseTuple(args, "i:GetStdHandle", &std_handle))
return NULL;
Py_BEGIN_ALLOW_THREADS
handle = GetStdHandle((DWORD) std_handle);
Py_END_ALLOW_THREADS
if (handle == INVALID_HANDLE_VALUE)
return PyErr_SetFromWindowsErr(GetLastError());
if (! handle) {
Py_INCREF(Py_None);
return Py_None;
}
/* note: returns integer, not handle object */
return PyInt_FromLong((long) handle);
}
static PyObject *
sp_GetCurrentProcess(PyObject* self, PyObject* args)
{
if (! PyArg_ParseTuple(args, ":GetCurrentProcess"))
return NULL;
return sp_handle_new(GetCurrentProcess());
}
static PyObject *
sp_DuplicateHandle(PyObject* self, PyObject* args)
{
HANDLE target_handle;
BOOL result;
long source_process_handle;
long source_handle;
long target_process_handle;
int desired_access;
int inherit_handle;
int options = 0;
if (! PyArg_ParseTuple(args, "lllii|i:DuplicateHandle",
&source_process_handle,
&source_handle,
&target_process_handle,
&desired_access,
&inherit_handle,
&options))
return NULL;
Py_BEGIN_ALLOW_THREADS
result = DuplicateHandle(
(HANDLE) source_process_handle,
(HANDLE) source_handle,
(HANDLE) target_process_handle,
&target_handle,
desired_access,
inherit_handle,
options
);
Py_END_ALLOW_THREADS
if (! result)
return PyErr_SetFromWindowsErr(GetLastError());
return sp_handle_new(target_handle);
}
static PyObject *
sp_CreatePipe(PyObject* self, PyObject* args)
{
HANDLE read_pipe;
HANDLE write_pipe;
BOOL result;
PyObject* pipe_attributes; /* ignored */
int size;
if (! PyArg_ParseTuple(args, "Oi:CreatePipe", &pipe_attributes, &size))
return NULL;
Py_BEGIN_ALLOW_THREADS
result = CreatePipe(&read_pipe, &write_pipe, NULL, size);
Py_END_ALLOW_THREADS
if (! result)
return PyErr_SetFromWindowsErr(GetLastError());
return Py_BuildValue(
"NN", sp_handle_new(read_pipe), sp_handle_new(write_pipe));
}
/* helpers for createprocess */
static int
getint(PyObject* obj, char* name)
{
PyObject* value;
value = PyObject_GetAttrString(obj, name);
if (! value) {
PyErr_Clear(); /* FIXME: propagate error? */
return 0;
}
return (int) PyInt_AsLong(value);
}
static HANDLE
gethandle(PyObject* obj, char* name)
{
sp_handle_object* value;
value = (sp_handle_object*) PyObject_GetAttrString(obj, name);
if (! value) {
PyErr_Clear(); /* FIXME: propagate error? */
return NULL;
}
if (value->ob_type != &sp_handle_type)
return NULL;
return value->handle;
}
static PyObject*
getenvironment(PyObject* environment)
{
int i, envsize;
PyObject* out = NULL;
PyObject* keys;
PyObject* values;
char* p;
/* convert environment dictionary to windows enviroment string */
if (! PyMapping_Check(environment)) {
PyErr_SetString(
PyExc_TypeError, "environment must be dictionary or None");
return NULL;
}
envsize = PyMapping_Length(environment);
keys = PyMapping_Keys(environment);
values = PyMapping_Values(environment);
if (!keys || !values)
goto error;
out = PyString_FromStringAndSize(NULL, 2048);
if (! out)
goto error;
p = PyString_AS_STRING(out);
for (i = 0; i < envsize; i++) {
int ksize, vsize, totalsize;
PyObject* key = PyList_GET_ITEM(keys, i);
PyObject* value = PyList_GET_ITEM(values, i);
if (! PyString_Check(key) || ! PyString_Check(value)) {
PyErr_SetString(PyExc_TypeError,
"environment can only contain strings");
goto error;
}
ksize = PyString_GET_SIZE(key);
vsize = PyString_GET_SIZE(value);
totalsize = (p - PyString_AS_STRING(out)) + ksize + 1 +
vsize + 1 + 1;
if (totalsize > PyString_GET_SIZE(out)) {
int offset = p - PyString_AS_STRING(out);
_PyString_Resize(&out, totalsize + 1024);
p = PyString_AS_STRING(out) + offset;
}
memcpy(p, PyString_AS_STRING(key), ksize);
p += ksize;
*p++ = '=';
memcpy(p, PyString_AS_STRING(value), vsize);
p += vsize;
*p++ = '\0';
}
/* add trailing null byte */
*p++ = '\0';
_PyString_Resize(&out, p - PyString_AS_STRING(out));
/* PyObject_Print(out, stdout, 0); */
return out;
error:
Py_XDECREF(out);
Py_XDECREF(keys);
Py_XDECREF(values);
return NULL;
}
static PyObject *
sp_CreateProcess(PyObject* self, PyObject* args)
{
BOOL result;
PROCESS_INFORMATION pi;
STARTUPINFO si;
PyObject* environment;
char* application_name;
char* command_line;
PyObject* process_attributes; /* ignored */
PyObject* thread_attributes; /* ignored */
int inherit_handles;
int creation_flags;
PyObject* env_mapping;
char* current_directory;
PyObject* startup_info;
if (! PyArg_ParseTuple(args, "zzOOiiOzO:CreateProcess",
&application_name,
&command_line,
&process_attributes,
&thread_attributes,
&inherit_handles,
&creation_flags,
&env_mapping,
¤t_directory,
&startup_info))
return NULL;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
/* note: we only support a small subset of all SI attributes */
si.dwFlags = getint(startup_info, "dwFlags");
si.wShowWindow = getint(startup_info, "wShowWindow");
si.hStdInput = gethandle(startup_info, "hStdInput");
si.hStdOutput = gethandle(startup_info, "hStdOutput");
si.hStdError = gethandle(startup_info, "hStdError");
if (env_mapping == Py_None)
environment = NULL;
else {
environment = getenvironment(env_mapping);
if (! environment)
return NULL;
}
Py_BEGIN_ALLOW_THREADS
result = CreateProcess(application_name,
command_line,
NULL,
NULL,
inherit_handles,
creation_flags,
environment ? PyString_AS_STRING(environment) : NULL,
current_directory,
&si,
&pi);
Py_END_ALLOW_THREADS
Py_XDECREF(environment);
if (! result)
return PyErr_SetFromWindowsErr(GetLastError());
return Py_BuildValue("NNii",
sp_handle_new(pi.hProcess),
sp_handle_new(pi.hThread),
pi.dwProcessId,
pi.dwThreadId);
}
static PyObject *
sp_GetExitCodeProcess(PyObject* self, PyObject* args)
{
DWORD exit_code;
BOOL result;
long process;
if (! PyArg_ParseTuple(args, "l:GetExitCodeProcess", &process))
return NULL;
result = GetExitCodeProcess((HANDLE) process, &exit_code);
if (! result)
return PyErr_SetFromWindowsErr(GetLastError());
return PyInt_FromLong(exit_code);
}
static PyObject *
sp_WaitForSingleObject(PyObject* self, PyObject* args)
{
DWORD result;
long handle;
int milliseconds;
if (! PyArg_ParseTuple(args, "li:WaitForSingleObject",
&handle,
&milliseconds))
return NULL;
Py_BEGIN_ALLOW_THREADS
result = WaitForSingleObject((HANDLE) handle, (DWORD) milliseconds);
Py_END_ALLOW_THREADS
if (result == WAIT_FAILED)
return PyErr_SetFromWindowsErr(GetLastError());
return PyInt_FromLong((int) result);
}
static PyObject *
sp_GetVersion(PyObject* self, PyObject* args)
{
if (! PyArg_ParseTuple(args, ":GetVersion"))
return NULL;
return PyInt_FromLong((int) GetVersion());
}
static PyObject *
sp_GetModuleFileName(PyObject* self, PyObject* args)
{
BOOL result;
long module;
TCHAR filename[MAX_PATH];
if (! PyArg_ParseTuple(args, "l:GetModuleFileName", &module))
return NULL;
result = GetModuleFileName((HMODULE)module, filename, MAX_PATH);
filename[MAX_PATH-1] = '\0';
if (! result)
return PyErr_SetFromWindowsErr(GetLastError());
return PyString_FromString(filename);
}
static PyMethodDef sp_functions[] = {
{"GetStdHandle", sp_GetStdHandle, METH_VARARGS},
{"GetCurrentProcess", sp_GetCurrentProcess, METH_VARARGS},
{"DuplicateHandle", sp_DuplicateHandle, METH_VARARGS},
{"CreatePipe", sp_CreatePipe, METH_VARARGS},
{"CreateProcess", sp_CreateProcess, METH_VARARGS},
{"GetExitCodeProcess", sp_GetExitCodeProcess, METH_VARARGS},
{"WaitForSingleObject", sp_WaitForSingleObject, METH_VARARGS},
{"GetVersion", sp_GetVersion, METH_VARARGS},
{"GetModuleFileName", sp_GetModuleFileName, METH_VARARGS},
{NULL, NULL}
};
/* -------------------------------------------------------------------- */
static void
defint(PyObject* d, const char* name, int value)
{
PyObject* v = PyInt_FromLong((long) value);
if (v) {
PyDict_SetItemString(d, (char*) name, v);
Py_DECREF(v);
}
}
#if PY_VERSION_HEX >= 0x02030000
PyMODINIT_FUNC
#else
DL_EXPORT(void)
#endif
init_subprocess()
{
PyObject *d;
PyObject *m;
/* patch up object descriptors */
sp_handle_type.ob_type = &PyType_Type;
sp_handle_as_number.nb_int = (unaryfunc) sp_handle_as_int;
m = Py_InitModule("_subprocess", sp_functions);
d = PyModule_GetDict(m);
/* constants */
defint(d, "STD_INPUT_HANDLE", STD_INPUT_HANDLE);
defint(d, "STD_OUTPUT_HANDLE", STD_OUTPUT_HANDLE);
defint(d, "STD_ERROR_HANDLE", STD_ERROR_HANDLE);
defint(d, "DUPLICATE_SAME_ACCESS", DUPLICATE_SAME_ACCESS);
defint(d, "STARTF_USESTDHANDLES", STARTF_USESTDHANDLES);
defint(d, "STARTF_USESHOWWINDOW", STARTF_USESHOWWINDOW);
defint(d, "SW_HIDE", SW_HIDE);
defint(d, "INFINITE", INFINITE);
defint(d, "WAIT_OBJECT_0", WAIT_OBJECT_0);
defint(d, "CREATE_NEW_CONSOLE", CREATE_NEW_CONSOLE);
}
--- NEW FILE: empty.c ---
#include <windows.h>
int __stdcall
WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
return 0;
}
--- NEW FILE: icons.mak ---
python_icon.exe: py.res empty.obj
link /out:python_icon.exe /machine:x86 /subsystem:windows py.res empty.obj
py.res: py.ico pyc.ico pycon.ico icons.rc
rc /fo py.res icons.rc
empty.obj: empty.c
cl /c empty.c
--- NEW FILE: icons.rc ---
101 ICON "py.ico"
102 ICON "pyc.ico"
103 ICON "pycon.ico"
--- NEW FILE: make_versioninfo.c ---
#include <stdio.h>
#include "patchlevel.h"
/*
* This program prints out an include file containing fields required to build
* the version info resource of pythonxx.dll because the resource compiler
* cannot do the arithmetic.
*/
/*
* FIELD3 is the third field of the version number.
* This is what we'd like FIELD3 to be:
*
* #define FIELD3 (PY_MICRO_VERSION*1000 + PY_RELEASE_LEVEL*10 + PY_RELEASE_SERIAL)
*
* but that neither gives an error nor comes anywhere close to working.
*
* For 2.4a0,
* PY_MICRO_VERSION = 0
* PY_RELEASE_LEVEL = 'alpha' = 0xa
* PY_RELEASE_SERIAL = 0
*
* gives FIELD3 = 0*1000 + 10*10 + 0 = 100
*/
int main(int argc, char **argv)
{
printf("/* This file created by make_versioninfo.exe */\n");
printf("#define FIELD3 %d\n",
PY_MICRO_VERSION*1000 + PY_RELEASE_LEVEL*10 + PY_RELEASE_SERIAL);
printf("#define MS_DLL_ID \"%d.%d\"\n",
PY_MAJOR_VERSION, PY_MINOR_VERSION);
printf("#define PYTHON_DLL_NAME \"python%d%d.dll\"\n",
PY_MAJOR_VERSION, PY_MINOR_VERSION);
return 0;
}
--- NEW FILE: tix.diff ---
diff -ur tix-8.1.4/win/common.mak tix-8.1.4.new/win/common.mak
--- tix-8.1.4/win/common.mak 2002-12-11 07:19:42.000000000 +0100
+++ tix-8.1.4.new/win/common.mak 2004-08-03 21:45:09.859375000 +0200
@@ -18,10 +18,10 @@
# support files
#
#----------------------------------------------------------------------
-TCL_VER = 8.3
+TCL_VER = 8.4
ITCL_VER =
-INSTALLDIR = C:\progra~1\tcl
+INSTALLDIR = ..\..\tcltk
!IFNDEF TIX_DEBUG
NODEBUG = 1
@@ -61,7 +61,7 @@
!IF "$(TCL_VER)" == "8.4"
TCLMAJOR=8
TCLMINOR=4
-TCLPATCH=1
+TCLPATCH=7
TMPDIR = tk$(TCL_VER)
!ENDIF
@@ -176,14 +176,14 @@
$(TMPDIR)\tixWinWm.obj
RMDIR = $(TCLDIR)\win\rmd.bat
-MKDIR = $(TCLDIR)\win\mkd.bat
+MKDIR = mkdir
RM = del
install: install-binaries install-libraries
install-binaries: $(TCLSH)
- $(MKDIR) "$(BIN_INSTALL_DIR)"
- $(MKDIR) "$(LIB_INSTALL_DIR)"
+ -$(MKDIR) "$(BIN_INSTALL_DIR)"
+ -$(MKDIR) "$(LIB_INSTALL_DIR)"
@echo installing $(TIXDLL)
@copy "$(TIXDLL)" "$(BIN_INSTALL_DIR)"
@copy "$(TIXLIB)" "$(LIB_INSTALL_DIR)"
diff -ur tix-8.1.4/win/makefile.vc tix-8.1.4.new/win/makefile.vc
--- tix-8.1.4/win/makefile.vc 2002-12-02 04:02:54.000000000 +0100
+++ tix-8.1.4.new/win/makefile.vc 2004-08-03 21:42:07.953125000 +0200
@@ -54,12 +54,11 @@
DBGX = d
!ENDIF
-cc32 = "$(TOOLS32)\bin\cl.exe"
-rc32 = "$(TOOLS32_rc)\bin\rc.exe"
-link32 = "$(TOOLS32)\bin\link.exe"
-include32 = -I"$(TOOLS32)\include"
+cc32 = "cl.exe"
+rc32 = "rc.exe"
+link32 = "link.exe"
-TIX_INCLUDES = $(include32) \
+TIX_INCLUDES = \
-I$(ROOT)\win -I$(ROOT)\generic \
-I$(TKDIR)\generic -I$(TKDIR)\win -I$(TKDIR)\xlib \
-I$(TCLDIR)\generic $(ITCL_CFLAGS)
@@ -171,7 +170,7 @@
#
cvarsdll = -D_X86_=1 -DWIN32 -D_WIN32 -D_MT -D_DLL
cflagsdll = $(cvarsdll) -c -W3 -nologo -Fp$(TMPDIR)\ -YX -MD \
- -Oti -Gs -GD
+ -Oti -Gs -Gd
######################################################################
# Project specific targets
@@ -181,7 +180,6 @@
$(DUMPEXTS): $(WINDIR)\winDumpExts.c
$(cc32) $(CON_CFLAGS) -Fo$(TMPDIR)\ /c $?
- set LIB="$(TOOLS32)\lib"
$(link32) $(ldebug) $(conlflags) $(guilibs) -out:$@ \
$(TMPDIR)\winDumpExts.obj
@@ -193,7 +191,6 @@
# (ToDo) $(TIXDLL) doesn't have resources to define its icon, etc.
#
$(TIXDLL): $(TIXOBJS) $(TMPDIR)\tixvc.def
- set LIB="$(TOOLS32)\lib"
$(link32) $(ldebug) $(dlllflags) -def:$(TMPDIR)\tixvc.def \
$(TKLIBDIR)\$(TKLIB) $(TCLLIBDIR)\$(TCLLIB) $(guilibsdll) \
$(ITCL_LIBS) -out:$@ @<<
@@ -202,7 +199,6 @@
$(TIXWISH): $(WISHOBJS) $(TIXOBJS) $(TIXLIB) $(TMPDIR)\tixwish.res
- set LIB="$(TOOLS32)\lib"
$(link32) $(ldebug) $(guilflags) \
$(WISHOBJS) $(TMPDIR)\tixwish.res $(TIXLIB) \
$(TKLIBDIR)\$(TKLIB) $(TCLLIBDIR)\$(TCLLIB) $(guilibsdll) \
diff -ur tix-8.1.4/win/tk8.4/pkgIndex.tcl tix-8.1.4.new/win/tk8.4/pkgIndex.tcl
--- tix-8.1.4/win/tk8.4/pkgIndex.tcl 2002-12-15 04:21:54.000000000 +0100
+++ tix-8.1.4.new/win/tk8.4/pkgIndex.tcl 2004-08-31 08:38:43.921875000 +0200
@@ -15,7 +15,7 @@
# We look in the ../../bin directory (an installed Tcl)
lappend dirs ../../bin
# We look in the ../../DLLs directory (an installed Python)
-lappend dirs ../../Dlls
+lappend dirs [file join [file dirname [info nameofexe]] DLLs]
# If not, this pkgIndex.tcl will probably fail.
Index: _winreg.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/PC/_winreg.c,v
retrieving revision 1.10.2.1
retrieving revision 1.10.2.2
diff -u -d -r1.10.2.1 -r1.10.2.2
--- _winreg.c 28 Apr 2003 17:17:56 -0000 1.10.2.1
+++ _winreg.c 7 Jan 2005 07:04:11 -0000 1.10.2.2
@@ -1031,6 +1031,7 @@
PyObject *obKey;
int index;
long rc;
+ PyObject *retStr;
char *retBuf;
DWORD len;
@@ -1045,11 +1046,17 @@
return PyErr_SetFromWindowsErrWithFunction(rc,
"RegQueryInfoKey");
++len; /* include null terminator */
- retBuf = (char *)alloca(len);
+ retStr = PyString_FromStringAndSize(NULL, len);
+ if (retStr == NULL)
+ return NULL;
+ retBuf = PyString_AS_STRING(retStr);
- if ((rc = RegEnumKey(hKey, index, retBuf, len)) != ERROR_SUCCESS)
+ if ((rc = RegEnumKey(hKey, index, retBuf, len)) != ERROR_SUCCESS) {
+ Py_DECREF(retStr);
return PyErr_SetFromWindowsErrWithFunction(rc, "RegEnumKey");
- return Py_BuildValue("s", retBuf);
+ }
+ _PyString_Resize(&retStr, strlen(retBuf));
+ return retStr;
}
static PyObject *
@@ -1080,8 +1087,14 @@
"RegQueryInfoKey");
++retValueSize; /* include null terminators */
++retDataSize;
- retValueBuf = (char *)alloca(retValueSize);
- retDataBuf = (char *)alloca(retDataSize);
+ retValueBuf = (char *)PyMem_Malloc(retValueSize);
+ if (retValueBuf == NULL)
+ return PyErr_NoMemory();
+ retDataBuf = (char *)PyMem_Malloc(retDataSize);
+ if (retDataBuf == NULL) {
+ PyMem_Free(retValueBuf);
+ return PyErr_NoMemory();
+ }
Py_BEGIN_ALLOW_THREADS
rc = RegEnumValue(hKey,
@@ -1094,14 +1107,21 @@
&retDataSize);
Py_END_ALLOW_THREADS
- if (rc != ERROR_SUCCESS)
- return PyErr_SetFromWindowsErrWithFunction(rc,
- "PyRegEnumValue");
+ if (rc != ERROR_SUCCESS) {
+ retVal = PyErr_SetFromWindowsErrWithFunction(rc,
+ "PyRegEnumValue");
+ goto fail;
+ }
obData = Reg2Py(retDataBuf, retDataSize, typ);
- if (obData == NULL)
- return NULL;
+ if (obData == NULL) {
+ retVal = NULL;
+ goto fail;
+ }
retVal = Py_BuildValue("sOi", retValueBuf, obData, typ);
Py_DECREF(obData);
+ fail:
+ PyMem_Free(retValueBuf);
+ PyMem_Free(retDataBuf);
return retVal;
}
@@ -1206,10 +1226,11 @@
HKEY hKey;
PyObject *obKey;
char *subKey;
-
long rc;
+ PyObject *retStr;
char *retBuf;
long bufSize = 0;
+
if (!PyArg_ParseTuple(args, "Oz:QueryValue", &obKey, &subKey))
return NULL;
@@ -1219,12 +1240,18 @@
!= ERROR_SUCCESS)
return PyErr_SetFromWindowsErrWithFunction(rc,
"RegQueryValue");
- retBuf = (char *)alloca(bufSize);
+ retStr = PyString_FromStringAndSize(NULL, bufSize);
+ if (retStr == NULL)
+ return NULL;
+ retBuf = PyString_AS_STRING(retStr);
if ((rc = RegQueryValue(hKey, subKey, retBuf, &bufSize))
- != ERROR_SUCCESS)
+ != ERROR_SUCCESS) {
+ Py_DECREF(retStr);
return PyErr_SetFromWindowsErrWithFunction(rc,
"RegQueryValue");
- return Py_BuildValue("s", retBuf);
+ }
+ _PyString_Resize(&retStr, strlen(retBuf));
+ return retStr;
}
static PyObject *
@@ -1252,13 +1279,18 @@
!= ERROR_SUCCESS)
return PyErr_SetFromWindowsErrWithFunction(rc,
"RegQueryValueEx");
- retBuf = (char *)alloca(bufSize);
+ retBuf = (char *)PyMem_Malloc(bufSize);
+ if (retBuf == NULL)
+ return PyErr_NoMemory();
if ((rc = RegQueryValueEx(hKey, valueName, NULL,
&typ, (BYTE *)retBuf, &bufSize))
- != ERROR_SUCCESS)
+ != ERROR_SUCCESS) {
+ PyMem_Free(retBuf);
return PyErr_SetFromWindowsErrWithFunction(rc,
"RegQueryValueEx");
+ }
obData = Reg2Py(retBuf, bufSize, typ);
+ PyMem_Free((void *)retBuf);
if (obData == NULL)
return NULL;
result = Py_BuildValue("Oi", obData, typ);
Index: config.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/PC/config.c,v
retrieving revision 1.34.2.1
retrieving revision 1.34.2.2
diff -u -d -r1.34.2.1 -r1.34.2.2
--- config.c 28 Apr 2003 17:17:56 -0000 1.34.2.1
+++ config.c 7 Jan 2005 07:04:11 -0000 1.34.2.2
@@ -24,7 +24,6 @@
#ifndef MS_WIN64
extern void initrgbimg(void);
#endif
-extern void initrotor(void);
extern void initsignal(void);
extern void initsha(void);
extern void initstrop(void);
@@ -33,19 +32,36 @@
extern void initthread(void);
extern void initcStringIO(void);
extern void initcPickle(void);
-extern void initpcre(void);
#ifdef WIN32
extern void initmsvcrt(void);
extern void init_locale(void);
#endif
extern void init_codecs(void);
-extern void initxreadlines(void);
extern void init_weakref(void);
extern void init_hotshot(void);
extern void initxxsubtype(void);
extern void initzipimport(void);
extern void init_random(void);
extern void inititertools(void);
+extern void initcollections(void);
+extern void init_heapq(void);
+extern void init_bisect(void);
+extern void init_symtable(void);
+extern void initmmap(void);
+extern void init_csv(void);
+extern void init_sre(void);
+extern void initparser(void);
+extern void init_winreg(void);
+extern void initdatetime(void);
+
+extern void init_multibytecodec(void);
+extern void init_codecs_cn(void);
+extern void init_codecs_hk(void);
+extern void init_codecs_iso2022(void);
+extern void init_codecs_jp(void);
+extern void init_codecs_kr(void);
+extern void init_codecs_tw(void);
+extern void init_subprocess(void);
/* tools/freeze/makeconfig.py marker for additional "extern" */
/* -- ADDMODULE MARKER 1 -- */
@@ -76,7 +92,6 @@
#ifndef MS_WIN64
{"rgbimg", initrgbimg},
#endif
- {"rotor", initrotor},
{"signal", initsignal},
{"sha", initsha},
{"strop", initstrop},
@@ -87,22 +102,41 @@
#endif
{"cStringIO", initcStringIO},
{"cPickle", initcPickle},
- {"pcre", initpcre},
#ifdef WIN32
{"msvcrt", initmsvcrt},
{"_locale", init_locale},
#endif
+ /* XXX Should _subprocess go in a WIN32 block? not WIN64? */
+ {"_subprocess", init_subprocess},
{"_codecs", init_codecs},
- {"xreadlines", initxreadlines},
{"_weakref", init_weakref},
{"_hotshot", init_hotshot},
{"_random", init_random},
+ {"_bisect", init_bisect},
+ {"_heapq", init_heapq},
{"itertools", inititertools},
+ {"collections", initcollections},
+ {"_symtable", init_symtable},
+ {"mmap", initmmap},
+ {"_csv", init_csv},
+ {"_sre", init_sre},
+ {"parser", initparser},
+ {"_winreg", init_winreg},
+ {"datetime", initdatetime},
{"xxsubtype", initxxsubtype},
{"zipimport", initzipimport},
+ /* CJK codecs */
+ {"_multibytecodec", init_multibytecodec},
+ {"_codecs_cn", init_codecs_cn},
+ {"_codecs_hk", init_codecs_hk},
+ {"_codecs_iso2022", init_codecs_iso2022},
+ {"_codecs_jp", init_codecs_jp},
+ {"_codecs_kr", init_codecs_kr},
+ {"_codecs_tw", init_codecs_tw},
+
/* tools/freeze/makeconfig.py marker for additional "_inittab" entries */
/* -- ADDMODULE MARKER 2 -- */
Index: dllbase_nt.txt
===================================================================
RCS file: /cvsroot/python/python/dist/src/PC/dllbase_nt.txt,v
retrieving revision 1.4.16.1
retrieving revision 1.4.16.2
diff -u -d -r1.4.16.1 -r1.4.16.2
--- dllbase_nt.txt 28 Apr 2003 17:17:55 -0000 1.4.16.1
+++ dllbase_nt.txt 7 Jan 2005 07:04:11 -0000 1.4.16.2
@@ -15,15 +15,15 @@
Python.dll - 1e000000 - 1e100000 (-1)
Standard Extension Modules 1e100000 - 1e200000 ""
- - _symtable 1e100000 - 1e110000
- - bsddb 1e180000 - 1e188000 ""
+ - _symtable 1e100000 - 1e110000 pyd removed in 2.4
+ - bsddb 1e180000 - 1e188000
- _tkinter 1e190000 - 1e1A0000
- - parser 1e1A0000 - 1e1B0000
+ - parser 1e1A0000 - 1e1B0000 pyd removed in 2.4
- zlib 1e1B0000 - 1e1C0000
- - winreg 1e1C0000 - 1e1D0000
+ - winreg 1e1C0000 - 1e1D0000 pyd removed in 2.4
- _socket 1e1D0000 - 1e1E0000
- - _sre 1e1E0000 - 1e1F0000
- - mmap 1e1F0000 - 1e1FFFFF
+ - _sre 1e1E0000 - 1e1F0000 pyd removed in 2.4
+ - mmap 1e1F0000 - 1e1FFFFF pyd removed in 2.4
More standard extensions 1D100000 - 1e000000
- pyexpat 1D100000 - 1D110000
@@ -31,8 +31,8 @@
- unicodedata 1D120000 - 1D160000
- winsound 1D160000 - 1D170000
- bZ2 1D170000 - 1D180000
- - datetime 1D180000 - 1D190000
- - _csv 1D190000 - 1D1A0000
+ - datetime 1D180000 - 1D190000 pyd removed in 2.4
+ - _csv 1D190000 - 1D1A0000 pyd removed in 2.4
Other extension modules
- win32api 1e200000 - 1e220000
Index: getpathp.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/PC/getpathp.c,v
retrieving revision 1.27.2.1
retrieving revision 1.27.2.2
diff -u -d -r1.27.2.1 -r1.27.2.2
--- getpathp.c 28 Apr 2003 17:17:55 -0000 1.27.2.1
+++ getpathp.c 7 Jan 2005 07:04:12 -0000 1.27.2.2
@@ -133,7 +133,15 @@
return 0;
}
-/* guarantees buffer will never overflow MAXPATHLEN+1 bytes */
+/* Add a path component, by appending stuff to buffer.
+ buffer must have at least MAXPATHLEN + 1 bytes allocated, and contain a
+ NUL-terminated string with no more than MAXPATHLEN characters (not counting
+ the trailing NUL). It's a fatal error if it contains a string longer than
+ that (callers must be careful!). If these requirements are met, it's
+ guaranteed that buffer will still be a NUL-terminated string with no more
+ than MAXPATHLEN characters at exit. If stuff is too long, only as much of
+ stuff as fits will be appended.
+*/
static void
join(char *buffer, char *stuff)
{
@@ -145,6 +153,8 @@
if (n > 0 && !is_sep(buffer[n-1]) && n < MAXPATHLEN)
buffer[n++] = SEP;
}
+ if (n > MAXPATHLEN)
+ Py_FatalError("buffer overflow in getpathp.c's joinpath()");
k = strlen(stuff);
if (n + k > MAXPATHLEN)
k = MAXPATHLEN - n;
@@ -366,7 +376,7 @@
dllpath, MAXPATHLEN+1,
NULL, NULL);
}
- wprogpath[MAXPATHLEN]=_T('\0')';
+ wprogpath[MAXPATHLEN]=_T('\0');
if (GetModuleFileName(NULL, wprogpath, MAXPATHLEN)) {
WideCharToMultiByte(CP_ACP, 0,
wprogpath, -1,
Index: msvcrtmodule.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/PC/msvcrtmodule.c,v
retrieving revision 1.8
retrieving revision 1.8.2.1
diff -u -d -r1.8 -r1.8.2.1
--- msvcrtmodule.c 31 Mar 2002 14:37:44 -0000 1.8
+++ msvcrtmodule.c 7 Jan 2005 07:04:12 -0000 1.8.2.1
@@ -217,7 +217,7 @@
{NULL, NULL}
};
-__declspec(dllexport) void
+PyMODINIT_FUNC
initmsvcrt(void)
{
PyObject *m = Py_InitModule("msvcrt", msvcrt_functions);
Index: pyconfig.h
===================================================================
RCS file: /cvsroot/python/python/dist/src/PC/pyconfig.h,v
retrieving revision 1.11.2.1
retrieving revision 1.11.2.2
diff -u -d -r1.11.2.1 -r1.11.2.2
--- pyconfig.h 28 Apr 2003 17:17:54 -0000 1.11.2.1
+++ pyconfig.h 7 Jan 2005 07:04:12 -0000 1.11.2.2
@@ -4,7 +4,7 @@
/* pyconfig.h. NOT Generated automatically by configure.
This is a manually maintained version used for the Watcom,
-Borland and and Microsoft Visual C++ compilers. It is a
+Borland and Microsoft Visual C++ compilers. It is a
standard part of the Python distribution.
WINDOWS DEFINES:
@@ -28,7 +28,6 @@
*/
#include <io.h>
-#define HAVE_LIMITS_H
#define HAVE_SYS_UTIME_H
#define HAVE_HYPOT
#define HAVE_TEMPNAM
@@ -99,6 +98,10 @@
#ifdef MS_WIN64
#ifdef _M_IX86
#define COMPILER _Py_PASTE_VERSION("64 bit (Intel)")
+#elif defined(_M_IA64)
+#define COMPILER _Py_PASTE_VERSION("64 bit (Itanium)")
+#elif defined(_M_AMD64)
+#define COMPILER _Py_PASTE_VERSION("64 bit (AMD64)")
#else
#define COMPILER _Py_PASTE_VERSION("64 bit (Unknown)")
#endif
@@ -115,6 +118,10 @@
typedef int pid_t;
#define hypot _hypot
+#include <float.h>
+#define Py_IS_NAN _isnan
+#define Py_IS_INFINITY(X) (!_finite(X) && !_isnan(X))
+
#endif /* _MSC_VER */
/* define some ANSI types that are not defined in earlier Win headers */
@@ -218,9 +225,9 @@
their Makefile (other compilers are generally
taken care of by distutils.) */
# ifdef _DEBUG
-# pragma comment(lib,"python23_d.lib")
+# pragma comment(lib,"python25_d.lib")
# else
-# pragma comment(lib,"python23.lib")
+# pragma comment(lib,"python25.lib")
# endif /* _DEBUG */
# endif /* _MSC_VER */
# endif /* Py_BUILD_CORE */
@@ -264,6 +271,15 @@
#define SIZEOF_LONG 4
#define SIZEOF_LONG_LONG 8
+/* VC 7.1 has them and VC 6.0 does not. VC 6.0 has a version number of 1200.
+ If some compiler does not provide them, modify the #if appropriately. */
+#if defined(_MSC_VER)
+#if _MSC_VER > 1200
+#define HAVE_UINTPTR_T 1
+#define HAVE_INTPTR_T 1
+#endif /* _MSC_VER > 1200 */
+#endif /* _MSC_VER */
+
#endif
/* Fairly standard from here! */
@@ -295,9 +311,6 @@
tzname. */
#define HAVE_TZNAME
-/* Define if on MINIX. */
-/* #undef _MINIX */
-
/* Define to `int' if <sys/types.h> doesn't define. */
/* #undef mode_t */
@@ -351,10 +364,6 @@
/* Define if the closedir function returns void instead of int. */
/* #undef VOID_CLOSEDIR */
-/* Define if your <unistd.h> contains bad prototypes for exec*()
- (as it does on SGI IRIX 4.x) */
-/* #undef BAD_EXEC_PROTOTYPES */
-
/* Define if getpgrp() must be called as getpgrp(0)
and (consequently) setpgrp() as setpgrp(0, 0). */
/* #undef GETPGRP_HAVE_ARGS */
@@ -372,24 +381,6 @@
(which you can't on SCO ODT 3.0). */
/* #undef SYS_SELECT_WITH_SYS_TIME */
-/* Define if you want to use SGI (IRIX 4) dynamic linking.
- This requires the "dl" library by Jack Jansen,
- ftp://ftp.cwi.nl/pub/dynload/dl-1.6.tar.Z.
- Don't bother on IRIX 5, it already has dynamic linking using SunOS
- style shared libraries */
-/* #undef WITH_SGI_DL */
-
-/* Define if you want to emulate SGI (IRIX 4) dynamic linking.
- This is rumoured to work on VAX (Ultrix), Sun3 (SunOS 3.4),
- Sequent Symmetry (Dynix), and Atari ST.
- This requires the "dl-dld" library,
- ftp://ftp.cwi.nl/pub/dynload/dl-dld-1.1.tar.Z,
- as well as the "GNU dld" library,
- ftp://ftp.cwi.nl/pub/dynload/dld-3.2.3.tar.Z.
- Don't bother on SunOS 4 or 5, they already have dynamic linking using
- shared libraries */
-/* #undef WITH_DL_DLD */
-
/* Define if you want documentation strings in extension modules */
#define WITH_DOC_STRINGS 1
@@ -422,9 +413,6 @@
/* Use Python's own small-block memory-allocator. */
#define WITH_PYMALLOC 1
-/* Enable \n, \r, \r\n line ends on import; also the 'U' mode flag for open. */
-#define WITH_UNIVERSAL_NEWLINES 1
-
/* Define if you have clock. */
/* #define HAVE_CLOCK */
@@ -506,21 +494,12 @@
/* Define if you have the <fcntl.h> header file. */
#define HAVE_FCNTL_H 1
-/* Define if you have the <signal.h> header file. */
-#define HAVE_SIGNAL_H 1
-
-/* Define if you have the <stdarg.h> header file. */
-#define HAVE_STDARG_H 1
-
/* Define if you have the <stdarg.h> prototypes. */
#define HAVE_STDARG_PROTOTYPES
/* Define if you have the <stddef.h> header file. */
#define HAVE_STDDEF_H 1
-/* Define if you have the <stdlib.h> header file. */
-#define HAVE_STDLIB_H 1
-
/* Define if you have the <sys/audioio.h> header file. */
/* #undef HAVE_SYS_AUDIOIO_H */
Index: python_nt.rc
===================================================================
RCS file: /cvsroot/python/python/dist/src/PC/python_nt.rc,v
retrieving revision 1.17.2.1
retrieving revision 1.17.2.2
diff -u -d -r1.17.2.1 -r1.17.2.2
--- python_nt.rc 28 Apr 2003 17:17:54 -0000 1.17.2.1
+++ python_nt.rc 7 Jan 2005 07:04:12 -0000 1.17.2.2
@@ -6,42 +6,12 @@
#define MS_WINDOWS
#include "modsupport.h"
#include "patchlevel.h"
-
-/* Across releases, change:
- * MS_DLL_ID if the minor version number changes.
- * PYTHON_DLL_NAME ditto.
- * MS_DLL_ID must match PY_VERSION in the Windows install script.
- */
-#define MS_DLL_ID "2.3"
-
-#ifndef PYTHON_DLL_NAME
-#define PYTHON_DLL_NAME "python23.dll"
+#ifdef _DEBUG
+# include "pythonnt_rc_d.h"
+#else
+# include "pythonnt_rc.h"
#endif
-/* Nothing below this should need to be changed except for copyright
- * notices, company name, and FIELD3. Unfortunately, all attempts
- * to get the resource compiler to do arithmetic in macros have
- * failed miserably -- it gives syntax errors, ignores operators,
- * or does stuff that's simply bizarre.
- */
-
-
-/* This is what we'd like FIELD3 to be:
- *
- * #define FIELD3 (PY_MICRO_VERSION*1000 + PY_RELEASE_LEVEL*10 + PY_RELEASE_SERIAL)
- *
- * but that neither gives an error nor comes anywhere close to working. The
- * following comment and #define are output from PCbuild\field3.py:
- *
- * For 2.3b1,
- * PY_MICRO_VERSION = 0
- * PY_RELEASE_LEVEL = 'beta' = 0xb
- * PY_RELEASE_SERIAL = 1
- *
- * and 0*1000 + 11*10 + 1 = 111
- */
-#define FIELD3 111
-
/* e.g., 2.1a2
* PY_VERSION comes from patchevel.h
*/
@@ -87,11 +57,11 @@
BEGIN
BLOCK "000004b0"
BEGIN
- VALUE "CompanyName", "PythonLabs at Zope Corporation\0"
+ VALUE "CompanyName", "Python Software Foundation\0"
VALUE "FileDescription", "Python Core\0"
VALUE "FileVersion", PYTHON_VERSION
VALUE "InternalName", "Python DLL\0"
- VALUE "LegalCopyright", "Copyright © 2001-2003 Python Software Foundation. Copyright © 2000 BeOpen.com. Copyright © 1995-2001 CNRI. Copyright © 1991-1995 SMC.\0"
+ VALUE "LegalCopyright", "Copyright © 2001-2004 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
Index: readme.txt
===================================================================
RCS file: /cvsroot/python/python/dist/src/PC/readme.txt,v
retrieving revision 1.24
retrieving revision 1.24.18.1
diff -u -d -r1.24 -r1.24.18.1
--- readme.txt 26 Jul 2001 21:34:59 -0000 1.24
+++ readme.txt 7 Jan 2005 07:04:12 -0000 1.24.18.1
@@ -1,7 +1,7 @@
Welcome to the "PC" subdirectory of the Python distribution
***********************************************************
-*** Note: the project files for MS VC++ 6.0 are now in the
+*** Note: the project files for MS VC++ 7.1 are now in the
*** PCbuild directory. See the file readme.txt there for build
*** instructions. There is some information below that might
*** still be relevant.
@@ -79,6 +79,12 @@
example_nt A subdirectory showing how to build an extension as a
DLL.
+Visual Studio 6.0
+=================
+The subdirectory VC6 contains Visual Studio 6 project files. These
+were originally located in the PCBuild directory, but are no longer
+maintained.
+
IBM VisualAge C/C++ for OS/2
============================
Index: testpy.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/PC/testpy.py,v
retrieving revision 1.2
retrieving revision 1.2.32.1
diff -u -d -r1.2 -r1.2.32.1
--- testpy.py 19 May 1997 14:16:12 -0000 1.2
+++ testpy.py 7 Jan 2005 07:04:12 -0000 1.2.32.1
@@ -5,28 +5,28 @@
# change this module too.
try:
- import string
+ import string
except:
- print """Could not import the standard "string" module.
-Please check your PYTHONPATH environment variable."""
- sys.exit(1)
+ print """Could not import the standard "string" module.
+ Please check your PYTHONPATH environment variable."""
+ sys.exit(1)
try:
- import regex_syntax
+ import regex_syntax
except:
- print """Could not import the standard "regex_syntax" module. If this is
-a PC, you should add the dos_8x3 directory to your PYTHONPATH."""
- sys.exit(1)
+ print """Could not import the standard "regex_syntax" module. If this is
+ a PC, you should add the dos_8x3 directory to your PYTHONPATH."""
+ sys.exit(1)
import os
for dir in sys.path:
- file = os.path.join(dir, "string.py")
- if os.path.isfile(file):
- test = os.path.join(dir, "test")
- if os.path.isdir(test):
- # Add the "test" directory to PYTHONPATH.
- sys.path = sys.path + [test]
+ file = os.path.join(dir, "string.py")
+ if os.path.isfile(file):
+ test = os.path.join(dir, "test")
+ if os.path.isdir(test):
+ # Add the "test" directory to PYTHONPATH.
+ sys.path = sys.path + [test]
-import regrtest # Standard Python tester.
+import regrtest # Standard Python tester.
regrtest.main()
Index: winsound.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/PC/winsound.c,v
retrieving revision 1.10.2.1
retrieving revision 1.10.2.2
diff -u -d -r1.10.2.1 -r1.10.2.2
--- winsound.c 28 Apr 2003 17:17:52 -0000 1.10.2.1
+++ winsound.c 7 Jan 2005 07:04:12 -0000 1.10.2.2
@@ -73,7 +73,7 @@
"\n"
"Beep(frequency, duration) - Make a beep through the PC speaker.");
-PyObject *
+static PyObject *
sound_playsound(PyObject *s, PyObject *args)
{
const char *sound;
- Previous message: [Python-checkins] python/dist/src/PC/example_nt example.sln, NONE,
1.1.4.1 example.vcproj, NONE, 1.1.4.1 readme.txt, 1.11,
1.11.6.1 example.dsp, 1.6, NONE example.dsw, 1.2, NONE
- Next message: [Python-checkins] python/dist/src/Modules/expat expat_external.h,
NONE, 1.1.4.1 macconfig.h, NONE, 1.3.4.1 asciitab.h, 1.1.1.1,
1.1.1.1.2.1 expat.h, 1.3.2.1, 1.3.2.2 iasciitab.h, 1.1.1.1,
1.1.1.1.2.1 internal.h, 1.1.6.1, 1.1.6.2 latin1tab.h, 1.1.1.1,
1.1.1.1.2.1 utf8tab.h, 1.1.1.1, 1.1.1.1.2.1 winconfig.h,
1.1.1.1, 1.1.1.1.2.1 xmlparse.c, 1.2.2.1, 1.2.2.2 xmlrole.c,
1.2.2.1, 1.2.2.2 xmltok.c, 1.2.2.1, 1.2.2.2 xmltok.h,
1.1.1.1.2.1, 1.1.1.1.2.2 xmltok_impl.c, 1.1.1.1.2.1,
1.1.1.1.2.2 expat.h.in, 1.1.1.1, NONE
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Python-checkins
mailing list