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 if (argc >= 1) 39 Py_SetProgramName(argv[0]); 40 Py_Initialize(); 41 #ifdef MS_WINDOWS 42 PyWinFreeze_ExeInit(); 43 #endif 44 45 if (Py_VerboseFlag) 46 fprintf(stderr, "Python %s\n%s\n", 47 Py_GetVersion(), Py_GetCopyright()); 48 49 PySys_SetArgv(argc, argv); 50 51 n = PyImport_ImportFrozenModule("__main__"); 52 if (n == 0) 53 Py_FatalError("__main__ not frozen"); 54 if (n < 0) { 55 PyErr_Print(); 56 sts = 1; 57 } 58 else 59 sts = 0; 60 61 if (inspect && isatty((int)fileno(stdin))) 62 sts = PyRun_AnyFile(stdin, "<stdin>") != 0; 63 64 #ifdef MS_WINDOWS 65 PyWinFreeze_ExeTerm(); 66 #endif 67 Py_Finalize(); 68 return sts; 69 } 70