• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
Py_FrozenMain(int argc,char ** argv)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