/* Python interpreter main program for frozen scripts */ | |
#include "Python.h" | |
#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) | |
{ | |
char *p; | |
int n, sts; | |
int inspect = 0; | |
int unbuffered = 0; | |
Py_FrozenFlag = 1; /* Suppress errors from getpath.c */ | |
if ((p = Py_GETENV("PYTHONINSPECT")) && *p != '\0') | |
inspect = 1; | |
if ((p = Py_GETENV("PYTHONUNBUFFERED")) && *p != '\0') | |
unbuffered = 1; | |
if (unbuffered) { | |
setbuf(stdin, (char *)NULL); | |
setbuf(stdout, (char *)NULL); | |
setbuf(stderr, (char *)NULL); | |
} | |
#ifdef MS_WINDOWS | |
PyInitFrozenExtensions(); | |
#endif /* MS_WINDOWS */ | |
Py_SetProgramName(argv[0]); | |
Py_Initialize(); | |
#ifdef MS_WINDOWS | |
PyWinFreeze_ExeInit(); | |
#endif | |
if (Py_VerboseFlag) | |
fprintf(stderr, "Python %s\n%s\n", | |
Py_GetVersion(), Py_GetCopyright()); | |
PySys_SetArgv(argc, argv); | |
n = PyImport_ImportFrozenModule("__main__"); | |
if (n == 0) | |
Py_FatalError("__main__ 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 | |
Py_Finalize(); | |
return sts; | |
} |