]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Implement PYTHONNOERRORWINDOW.
authorMartin v. Löwis <martin@v.loewis.de>
Thu, 30 Aug 2007 14:57:25 +0000 (14:57 +0000)
committerMartin v. Löwis <martin@v.loewis.de>
Thu, 30 Aug 2007 14:57:25 +0000 (14:57 +0000)
Modules/main.c
Tools/buildbot/test.bat

index 4fb4d2d4c3c6c27c1bb2fee357e397d68c11dca3..e1e7b255cc86f6ab0cbe75b2f31979a5a92c7233 100644 (file)
@@ -9,11 +9,16 @@
 #endif
 
 #if defined(MS_WINDOWS) || defined(__CYGWIN__)
+#include <windows.h>
 #ifdef HAVE_FCNTL_H
 #include <fcntl.h>
 #endif
 #endif
 
+#ifdef _MSC_VER
+#include <crtdbg.h>
+#endif
+
 #if (defined(PYOS_OS2) && !defined(PYCC_GCC)) || defined(MS_WINDOWS)
 #define PYTHONHOMEHELP "<prefix>\\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)
        {
index c8b1937ca4e569cd91b54c69579851fb11a8ab58..28456b3072bc6d9f59dd4da4ad6c0beac31d4796 100644 (file)
@@ -1,3 +1,4 @@
 @rem Used by the buildbot "test" step.
 cd PCbuild
+set PYTHONNOERRORWINDOW=1
 call rt.bat -d -q -uall -rw