Mercurial > cpython-lru_cache-weakref
diff Mac/Python/macmain.c @ 3236:463b26fa4d7b legacy-trunk
Added options for keeping window open on normal/error termination
Moved whole exit-handling of console window here (from pythonrun.c)
| author | Jack Jansen <jack.jansen@cwi.nl> |
|---|---|
| date | Fri, 27 Oct 1995 13:32:30 +0000 |
| parents | f4a59ffe1a5f |
| children | 20d74fa3b50b |
line wrap: on
line diff
--- a/Mac/Python/macmain.c Fri Oct 27 13:22:14 1995 +0000 +++ b/Mac/Python/macmain.c Fri Oct 27 13:32:30 1995 +0000 @@ -40,6 +40,10 @@ #include <SIOUX.h> #endif +#ifdef THINK_C +#include <console.h> +#endif + #define STARTUP "PythonStartup" extern int Py_DebugFlag; /* For parser.c, declared in pythonrun.c */ @@ -59,6 +63,10 @@ static char **orig_argv; static int orig_argc; +/* Flags indicating whether stdio window should stay open on termination */ +static int keep_normal; +static int keep_error = 1; + #ifdef USE_MAC_APPLET_SUPPORT /* Applet support */ @@ -117,12 +125,7 @@ err = run_main_resource(); fflush(stderr); fflush(stdout); -#ifdef __MWERKS__ - if (!err) - SIOUXSettings.autocloseonquit = 1; - else - printf("\n[Terminated]\n"); -#endif + PyMac_Exit(err); /* XXX Should we bother to Py_Exit(sts)? */ } @@ -164,7 +167,8 @@ */ void PyMac_InteractiveOptions(int *inspect, int *verbose, int *suppress_print, - int *unbuffered, int *debugging) + int *unbuffered, int *debugging, int *keep_normal, + int *keep_error) { KeyMap rmap; unsigned char *map; @@ -183,6 +187,11 @@ printf("Option dialog not found - cannot set options\n"); return; } + + /* Set keep-open-on-error */ + GetDialogItem(dialog, OPT_KEEPERROR, &type, (Handle *)&handle, &rect); + SetCtlValue(handle, *keep_error); + while (1) { handle = NULL; ModalDialog(NULL, &item); @@ -204,6 +213,8 @@ OPT_ITEM(OPT_SUPPRESS, suppress_print); OPT_ITEM(OPT_UNBUFFERED, unbuffered); OPT_ITEM(OPT_DEBUGGING, debugging); + OPT_ITEM(OPT_KEEPNORMAL, keep_normal); + OPT_ITEM(OPT_KEEPERROR, keep_error); #undef OPT_ITEM } @@ -228,8 +239,7 @@ argv0 = argv[0]; /* For getprogramname() */ PyMac_InteractiveOptions(&inspect, &Py_VerboseFlag, &Py_SuppressPrintingFlag, - &unbuffered, &Py_DebugFlag); - + &unbuffered, &Py_DebugFlag, &keep_normal, &keep_error); if (unbuffered) { #ifndef MPW @@ -253,7 +263,7 @@ if ((fp = fopen(filename, "r")) == NULL) { fprintf(stderr, "%s: can't open file '%s'\n", argv[0], filename); - exit(2); + PyMac_Exit(2); } } @@ -282,6 +292,31 @@ /*NOTREACHED*/ } +/* +** Terminate application +*/ +PyMac_Exit(status) + int status; +{ + int keep; + + if ( status ) + keep = keep_error; + else + keep = keep_normal; + +#ifdef __MWERKS__ + if (keep) + printf("\n[Terminated]\n"); + else + SIOUXSettings.autocloseonquit = 1; +#endif +#ifdef THINK_C + console_options.pause_atexit = keep; +#endif + + exit(status); +} /* Return the program name -- some code out there needs this. */
