]> git.lizzy.rs Git - plan9front.git/blob - sys/src/cmd/python/Python/frozenmain.c
/sys/lib/dist/mkfile: test for .git directory
[plan9front.git] / sys / src / cmd / python / Python / frozenmain.c
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 }