Mercurial > cpython-lru_cache-weakref
diff Modules/main.c @ 43048:6500c8bd7fea
Implement PYTHONNOERRORWINDOW.
| author | Martin v. Löwis <martin@v.loewis.de> |
|---|---|
| date | Thu, 30 Aug 2007 14:57:25 +0000 |
| parents | 27f0289b6835 |
| children | 43077c279d17 |
line wrap: on
line diff
--- a/Modules/main.c Thu Aug 30 14:51:05 2007 +0000 +++ b/Modules/main.c Thu Aug 30 14:57:25 2007 +0000 @@ -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 @@ (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) {
