/* * A toc entry of type 'o' holds runtime options * toc->name is the arg * this is so you can freeze in command line args to Python */ int setRuntimeOptions(void) { int unbuffered = 0; TOC *ptoc = f_tocbuff; while (ptoc < f_tocend) { if (ptoc->typcd == 'o') { VS("%s\n", ptoc->name); switch (ptoc->name[0]) { case 'v': *PI_Py_VerboseFlag = 1; break; case 'u': unbuffered = 1; break; #ifdef HAVE_WARNINGS case 'W': if (ntohl(f_cookie.pyvers) >= 21) { PI_PySys_AddWarnOption(&ptoc->name[2]); } break; #endif case 's': *PI_Py_NoSiteFlag = 0; break; case 'O': *PI_Py_OptimizeFlag = 1; break; } } ptoc = incrementTocPtr(ptoc); } if (unbuffered) { #ifdef WIN32 _setmode(fileno(stdin), O_BINARY); _setmode(fileno(stdout), O_BINARY); #else fflush(stdout); fflush(stderr); #ifdef HAVE_SETVBUF setvbuf(stdin, (char *)NULL, _IONBF, 0); setvbuf(stdout, (char *)NULL, _IONBF, 0); setvbuf(stderr, (char *)NULL, _IONBF, 0); #else setbuf(stdin, (char *)NULL); setbuf(stdout, (char *)NULL); setbuf(stderr, (char *)NULL); #endif #endif } return 0; }
/* * A toc entry of type 'o' holds runtime options * toc->name is the arg * this is so you can freeze in command line args to Python */ int setRuntimeOptions(ARCHIVE_STATUS *status) { int unbuffered = 0; TOC *ptoc = status->tocbuff; while (ptoc < status->tocend) { if (ptoc->typcd == 'o') { VS("%s\n", ptoc->name); switch (ptoc->name[0]) { case 'v': *PI_Py_VerboseFlag = 1; break; case 'u': unbuffered = 1; break; case 'W': PI_PySys_AddWarnOption(&ptoc->name[2]); break; case 's': *PI_Py_NoSiteFlag = 0; break; case 'O': *PI_Py_OptimizeFlag = 1; break; } } ptoc = incrementTocPtr(status, ptoc); } if (unbuffered) { #ifdef WIN32 _setmode(fileno(stdin), O_BINARY); _setmode(fileno(stdout), O_BINARY); #else fflush(stdout); fflush(stderr); setbuf(stdin, (char *)NULL); setbuf(stdout, (char *)NULL); setbuf(stderr, (char *)NULL); #endif } return 0; }
/* * A toc entry of type 'o' holds runtime options * toc->name is the arg * this is so you can freeze in command line args to Python */ static int pyi_pylib_set_runtime_opts(ARCHIVE_STATUS *status) { int unbuffered = 0; TOC *ptoc = status->tocbuff; wchar_t wchar_tmp[PATH_MAX+1]; /* * Startup flags - default values. 1 means enabled, 0 disabled. */ /* Suppress 'import site'. */ *PI_Py_NoSiteFlag = 1; /* Needed by getpath.c from Python. */ *PI_Py_FrozenFlag = 1; /* Suppress writing bytecode files (*.py[co]) */ *PI_Py_DontWriteBytecodeFlag = 1; /* Do not try to find any packages in user's site directory. */ *PI_Py_NoUserSiteDirectory = 1; /* This flag ensures PYTHONPATH and PYTHONHOME are ignored by Python. */ *PI_Py_IgnoreEnvironmentFlag = 1; /* Disalbe verbose imports by default. */ *PI_Py_VerboseFlag = 0; /* Override some runtime options by custom values from PKG archive. * User is allowed to changes these options. */ for (; ptoc < status->tocend; ptoc = pyi_arch_increment_toc_ptr(status, ptoc)) { if (ptoc->typcd == ARCHIVE_ITEM_RUNTIME_OPTION) { if(0 == strncmp(ptoc->name, "pyi-", 4)) { VS("LOADER: Bootloader option: %s\n", ptoc->name); continue; // Not handled here - use pyi_arch_get_option(status, ...) } VS("LOADER: Runtime option: %s\n", ptoc->name); switch (ptoc->name[0]) { case 'v': *PI_Py_VerboseFlag = 1; break; case 'u': unbuffered = 1; break; case 'W': if (is_py2) { PI_Py2Sys_AddWarnOption(&ptoc->name[2]); } else { // TODO: what encoding is ptoc->name? May not be important // as all known Wflags are ASCII. if ((size_t)-1 == mbstowcs(wchar_tmp, &ptoc->name[2], PATH_MAX)) { FATALERROR("Failed to convert Wflag %s using mbstowcs " "(invalid multibyte string)", &ptoc->name[2]); return -1; } PI_PySys_AddWarnOption(wchar_tmp); }; break; case 'O': *PI_Py_OptimizeFlag = 1; break; } } } if (unbuffered) { #ifdef _WIN32 _setmode(fileno(stdin), _O_BINARY); _setmode(fileno(stdout), _O_BINARY); #endif fflush(stdout); fflush(stderr); setbuf(stdin, (char *)NULL); setbuf(stdout, (char *)NULL); setbuf(stderr, (char *)NULL); } return 0; }
void PI_Py2Sys_AddWarnOption(char * str) { PI_PySys_AddWarnOption((wchar_t *) str); };