mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	 3a79a12262
			
		
	
	
		3a79a12262
		
			
		
	
	
	
	
		
			
			Replace private _Py_GetConfig() with public PyConfig_Get(). Remove also explicit PyRuntime initialization, it's not needed.
		
			
				
	
	
		
			98 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			98 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* Python interpreter main program for frozen scripts */
 | |
| 
 | |
| #include "Python.h"
 | |
| #include "pycore_pystate.h"       // _PyInterpreterState_SetRunningMain()
 | |
| 
 | |
| #ifdef HAVE_UNISTD_H
 | |
| #  include <unistd.h>             // isatty()
 | |
| #endif
 | |
| 
 | |
| 
 | |
| #ifdef MS_WINDOWS
 | |
| extern void PyWinFreeze_ExeInit(void);
 | |
| extern void PyWinFreeze_ExeTerm(void);
 | |
| extern int PyInitFrozenExtensions(void);
 | |
| #endif
 | |
| 
 | |
| /* Main program */
 | |
| 
 | |
| int
 | |
| Py_FrozenMain(int argc, char **argv)
 | |
| {
 | |
|     PyConfig config;
 | |
|     PyConfig_InitPythonConfig(&config);
 | |
|     // Suppress errors from getpath.c
 | |
|     config.pathconfig_warnings = 0;
 | |
|     // Don't parse command line options like -E
 | |
|     config.parse_argv = 0;
 | |
| 
 | |
|     PyStatus status = PyConfig_SetBytesArgv(&config, argc, argv);
 | |
|     if (PyStatus_Exception(status)) {
 | |
|         PyConfig_Clear(&config);
 | |
|         Py_ExitStatusException(status);
 | |
|     }
 | |
| 
 | |
|     const char *p;
 | |
|     int inspect = 0;
 | |
|     if ((p = Py_GETENV("PYTHONINSPECT")) && *p != '\0') {
 | |
|         inspect = 1;
 | |
|     }
 | |
| 
 | |
| #ifdef MS_WINDOWS
 | |
|     PyInitFrozenExtensions();
 | |
| #endif /* MS_WINDOWS */
 | |
| 
 | |
|     status = Py_InitializeFromConfig(&config);
 | |
|     PyConfig_Clear(&config);
 | |
|     if (PyStatus_Exception(status)) {
 | |
|         Py_ExitStatusException(status);
 | |
|     }
 | |
| 
 | |
|     PyInterpreterState *interp = PyInterpreterState_Get();
 | |
|     if (_PyInterpreterState_SetRunningMain(interp) < 0) {
 | |
|         PyErr_Print();
 | |
|         exit(1);
 | |
|     }
 | |
| 
 | |
| #ifdef MS_WINDOWS
 | |
|     PyWinFreeze_ExeInit();
 | |
| #endif
 | |
| 
 | |
|     int verbose;
 | |
|     if (PyConfig_GetInt("verbose", &verbose) < 0) {
 | |
|         verbose = 0;
 | |
|         PyErr_Clear();
 | |
|     }
 | |
|     if (verbose) {
 | |
|         fprintf(stderr, "Python %s\n%s\n",
 | |
|                 Py_GetVersion(), Py_GetCopyright());
 | |
|     }
 | |
| 
 | |
|     int sts = 1;
 | |
|     int n = PyImport_ImportFrozenModule("__main__");
 | |
|     if (n == 0) {
 | |
|         Py_FatalError("the __main__ module is not frozen");
 | |
|     }
 | |
|     if (n < 0) {
 | |
|         PyErr_Print();
 | |
|         sts = 1;
 | |
|     }
 | |
|     else {
 | |
|         sts = 0;
 | |
|     }
 | |
| 
 | |
|     if (inspect && isatty((int)fileno(stdin))) {
 | |
|         sts = PyRun_AnyFile(stdin, "<stdin>") != 0;
 | |
|     }
 | |
| 
 | |
| #ifdef MS_WINDOWS
 | |
|     PyWinFreeze_ExeTerm();
 | |
| #endif
 | |
| 
 | |
|     _PyInterpreterState_SetNotRunningMain(interp);
 | |
| 
 | |
|     if (Py_FinalizeEx() < 0) {
 | |
|         sts = 120;
 | |
|     }
 | |
|     return sts;
 | |
| }
 |