PageRenderTime 83ms CodeModel.GetById 76ms app.highlight 5ms RepoModel.GetById 1ms app.codeStats 0ms

/Python/frozenmain.c

http://unladen-swallow.googlecode.com/
C | 68 lines | 52 code | 14 blank | 2 comment | 14 complexity | d56c9c5b1d6541e7138cfb0271551087 MD5 | raw file
 1
 2/* Python interpreter main program for frozen scripts */
 3
 4#include "Python.h"
 5
 6#ifdef MS_WINDOWS
 7extern void PyWinFreeze_ExeInit(void);
 8extern void PyWinFreeze_ExeTerm(void);
 9extern int PyInitFrozenExtensions(void);
10#endif
11
12/* Main program */
13
14int
15Py_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}