Home | History | Annotate | Download | only in Python
      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 }
     69