From 945362cf971fb2e10f8f2a8e71e8ff10516ebe4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20v=2E=20L=C3=B6wis?= Date: Thu, 30 Aug 2007 14:57:25 +0000 Subject: Implement PYTHONNOERRORWINDOW. --- Modules/main.c | 24 ++++++++++++++++++++++++ Tools/buildbot/test.bat | 1 + 2 files changed, 25 insertions(+) diff --git a/Modules/main.c b/Modules/main.c index 4fb4d2d..e1e7b25 100644 --- a/Modules/main.c +++ b/Modules/main.c @@ -9,11 +9,16 @@ #endif #if defined(MS_WINDOWS) || defined(__CYGWIN__) +#include #ifdef HAVE_FCNTL_H #include #endif #endif +#ifdef _MSC_VER +#include +#endif + #if (defined(PYOS_OS2) && !defined(PYCC_GCC)) || defined(MS_WINDOWS) #define PYTHONHOMEHELP "\\lib" #else @@ -323,6 +328,25 @@ Py_Main(int argc, char **argv) (p = Py_GETENV("PYTHONUNBUFFERED")) && *p != '\0') unbuffered = 1; +#ifdef MS_WINDOWS + if ((p = Py_GETENV("PYTHONNOERRORWINDOW")) && *p != '\0') { + /* Disable all error windows created by the sytem + or the CRT. */ +#if defined(_DEBUG) && defined(_MSC_VER) + int types[] = {_CRT_WARN, _CRT_ERROR, _CRT_ASSERT}; + int i; + for (i = 0; i < sizeof(types)/sizeof(types[0]); i++) { + _CrtSetReportFile(types[i], _CRTDBG_FILE_STDERR); + _CrtSetReportMode(types[i], _CRTDBG_MODE_FILE); + } + _set_error_mode(_OUT_TO_STDERR); +#endif + SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOALIGNMENTFAULTEXCEPT | + SEM_NOGPFAULTERRORBOX | SEM_NOOPENFILEERRORBOX); + } +#endif + + if (command == NULL && module == NULL && _PyOS_optind < argc && strcmp(argv[_PyOS_optind], "-") != 0) { diff --git a/Tools/buildbot/test.bat b/Tools/buildbot/test.bat index c8b1937..28456b3 100644 --- a/Tools/buildbot/test.bat +++ b/Tools/buildbot/test.bat @@ -1,3 +1,4 @@ @rem Used by the buildbot "test" step. cd PCbuild +set PYTHONNOERRORWINDOW=1 call rt.bat -d -q -uall -rw -- cgit v0.12