1 2 /* Python interpreter main program for frozen scripts */ 3 4 #include "Python.h" 5 6 #ifdef MS_WINDOWS 7 extern void PyWinFreeze_ExeInit(void); 8 extern void PyWinFreeze_ExeTerm(void); 9 extern int PyInitFrozenExtensions(void); 10 #endif 11 12 /* Main program */ 13 14 int 15 Py_FrozenMain(int argc, char **argv) 16 { 17 char *p; 18 int n, sts; 19 int inspect = 0; 20 int unbuffered = 0; 21 22 Py_FrozenFlag = 1; /* Suppress errors from getpath.c */ 23 24 if ((p = Py_GETENV("PYTHONINSPECT")) && *p != '\0') 25 inspect = 1; 26 if ((p = Py_GETENV("PYTHONUNBUFFERED")) && *p != '\0') 27 unbuffered = 1; 28 29 if (unbuffered) { 30 setbuf(stdin, (char *)NULL); 31 setbuf(stdout, (char *)NULL); 32 setbuf(stderr, (char *)NULL); 33 } 34 35 #ifdef MS_WINDOWS 36 PyInitFrozenExtensions(); 37 #endif /* MS_WINDOWS */ 38 Py_SetProgramName(argv[0]); 39 Py_Initialize(); 40 #ifdef MS_WINDOWS 41 PyWinFreeze_ExeInit(); 42 #endif 43 44 if (Py_VerboseFlag) 45 fprintf(stderr, "Python %s\n%s\n", 46 Py_GetVersion(), Py_GetCopyright()); 47 48 PySys_SetArgv(argc, argv); 49 50 n = PyImport_ImportFrozenModule("__main__"); 51 if (n == 0) 52 Py_FatalError("__main__ not frozen"); 53 if (n < 0) { 54 PyErr_Print(); 55 sts = 1; 56 } 57 else 58 sts = 0; 59 60 if (inspect && isatty((int)fileno(stdin))) 61 sts = PyRun_AnyFile(stdin, "<stdin>") != 0; 62 63 #ifdef MS_WINDOWS 64 PyWinFreeze_ExeTerm(); 65 #endif 66 Py_Finalize(); 67 return sts; 68 } 69