• Home
  • Raw
  • Download

Lines Matching +full:- +full:- +full:config

14 preconfig_copy(PyPreConfig *config, const PyPreConfig *config2);
17 /* --- File system encoding/errors -------------------------------- */
40 PyConfig.filesystem_errors (encoded to UTF-8).
48 return -1; in _Py_SetFileSystemEncoding()
54 return -1; in _Py_SetFileSystemEncoding()
68 /* --- _PyArgv ---------------------------------------------------- */
75 if (args->use_bytes_argv) { in _PyArgv_AsWstrList()
76 size_t size = sizeof(wchar_t*) * args->argc; in _PyArgv_AsWstrList()
82 for (Py_ssize_t i = 0; i < args->argc; i++) { in _PyArgv_AsWstrList()
84 wchar_t *arg = Py_DecodeLocale(args->bytes_argv[i], &len); in _PyArgv_AsWstrList()
97 wargv.length = args->argc; in _PyArgv_AsWstrList()
98 wargv.items = (wchar_t **)args->wchar_argv; in _PyArgv_AsWstrList()
107 /* --- _PyPreCmdline ------------------------------------------------- */
112 _PyWideStringList_Clear(&cmdline->argv); in _PyPreCmdline_Clear()
113 _PyWideStringList_Clear(&cmdline->xoptions); in _PyPreCmdline_Clear()
120 return _PyArgv_AsWstrList(args, &cmdline->argv); in _PyPreCmdline_SetArgv()
125 precmdline_get_preconfig(_PyPreCmdline *cmdline, const PyPreConfig *config) in precmdline_get_preconfig() argument
128 if (config->ATTR != -1) { \ in precmdline_get_preconfig()
129 cmdline->ATTR = config->ATTR; \ in precmdline_get_preconfig()
141 precmdline_set_preconfig(const _PyPreCmdline *cmdline, PyPreConfig *config) in precmdline_set_preconfig() argument
144 config->ATTR = cmdline->ATTR in precmdline_set_preconfig()
155 _PyPreCmdline_SetConfig(const _PyPreCmdline *cmdline, PyConfig *config) in _PyPreCmdline_SetConfig() argument
158 config->ATTR = cmdline->ATTR in _PyPreCmdline_SetConfig()
160 PyStatus status = _PyWideStringList_Extend(&config->xoptions, &cmdline->xoptions); in _PyPreCmdline_SetConfig()
179 const PyWideStringList *argv = &cmdline->argv; in precmdline_parse_cmdline()
186 int longindex = -1; in precmdline_parse_cmdline()
187 int c = _PyOS_GetOpt(argv->length, argv->items, &longindex); in precmdline_parse_cmdline()
195 cmdline->use_environment = 0; in precmdline_parse_cmdline()
199 cmdline->isolated = 1; in precmdline_parse_cmdline()
204 PyStatus status = PyWideStringList_Append(&cmdline->xoptions, in precmdline_parse_cmdline()
228 if (preconfig->parse_argv) { in _PyPreCmdline_Read()
236 if (cmdline->isolated < 0) { in _PyPreCmdline_Read()
237 cmdline->isolated = 0; in _PyPreCmdline_Read()
239 if (cmdline->isolated > 0) { in _PyPreCmdline_Read()
240 cmdline->use_environment = 0; in _PyPreCmdline_Read()
242 if (cmdline->use_environment < 0) { in _PyPreCmdline_Read()
243 cmdline->use_environment = 0; in _PyPreCmdline_Read()
247 if ((cmdline->dev_mode < 0) in _PyPreCmdline_Read()
248 && (_Py_get_xoption(&cmdline->xoptions, L"dev") in _PyPreCmdline_Read()
249 || _Py_GetEnv(cmdline->use_environment, "PYTHONDEVMODE"))) in _PyPreCmdline_Read()
251 cmdline->dev_mode = 1; in _PyPreCmdline_Read()
253 if (cmdline->dev_mode < 0) { in _PyPreCmdline_Read()
254 cmdline->dev_mode = 0; in _PyPreCmdline_Read()
258 if (_Py_get_xoption(&cmdline->xoptions, L"warn_default_encoding") in _PyPreCmdline_Read()
259 || _Py_GetEnv(cmdline->use_environment, "PYTHONWARNDEFAULTENCODING")) in _PyPreCmdline_Read()
261 cmdline->warn_default_encoding = 1; in _PyPreCmdline_Read()
264 assert(cmdline->use_environment >= 0); in _PyPreCmdline_Read()
265 assert(cmdline->isolated >= 0); in _PyPreCmdline_Read()
266 assert(cmdline->dev_mode >= 0); in _PyPreCmdline_Read()
267 assert(cmdline->warn_default_encoding >= 0); in _PyPreCmdline_Read()
273 /* --- PyPreConfig ----------------------------------------------- */
277 _PyPreConfig_InitCompatConfig(PyPreConfig *config) in _PyPreConfig_InitCompatConfig() argument
279 memset(config, 0, sizeof(*config)); in _PyPreConfig_InitCompatConfig()
281 config->_config_init = (int)_PyConfig_INIT_COMPAT; in _PyPreConfig_InitCompatConfig()
282 config->parse_argv = 0; in _PyPreConfig_InitCompatConfig()
283 config->isolated = -1; in _PyPreConfig_InitCompatConfig()
284 config->use_environment = -1; in _PyPreConfig_InitCompatConfig()
285 config->configure_locale = 1; in _PyPreConfig_InitCompatConfig()
287 /* bpo-36443: C locale coercion (PEP 538) and UTF-8 Mode (PEP 540) in _PyPreConfig_InitCompatConfig()
290 Py_UTF8Mode=1 enables the UTF-8 mode. PYTHONUTF8 environment variable in _PyPreConfig_InitCompatConfig()
292 config->utf8_mode = 0; in _PyPreConfig_InitCompatConfig()
293 config->coerce_c_locale = 0; in _PyPreConfig_InitCompatConfig()
294 config->coerce_c_locale_warn = 0; in _PyPreConfig_InitCompatConfig()
296 config->dev_mode = -1; in _PyPreConfig_InitCompatConfig()
297 config->allocator = PYMEM_ALLOCATOR_NOT_SET; in _PyPreConfig_InitCompatConfig()
299 config->legacy_windows_fs_encoding = -1; in _PyPreConfig_InitCompatConfig()
305 PyPreConfig_InitPythonConfig(PyPreConfig *config) in PyPreConfig_InitPythonConfig() argument
307 _PyPreConfig_InitCompatConfig(config); in PyPreConfig_InitPythonConfig()
309 config->_config_init = (int)_PyConfig_INIT_PYTHON; in PyPreConfig_InitPythonConfig()
310 config->isolated = 0; in PyPreConfig_InitPythonConfig()
311 config->parse_argv = 1; in PyPreConfig_InitPythonConfig()
312 config->use_environment = 1; in PyPreConfig_InitPythonConfig()
313 /* Set to -1 to enable C locale coercion (PEP 538) and UTF-8 Mode (PEP 540) in PyPreConfig_InitPythonConfig()
316 config->coerce_c_locale = -1; in PyPreConfig_InitPythonConfig()
317 config->coerce_c_locale_warn = -1; in PyPreConfig_InitPythonConfig()
318 config->utf8_mode = -1; in PyPreConfig_InitPythonConfig()
320 config->legacy_windows_fs_encoding = 0; in PyPreConfig_InitPythonConfig()
326 PyPreConfig_InitIsolatedConfig(PyPreConfig *config) in PyPreConfig_InitIsolatedConfig() argument
328 _PyPreConfig_InitCompatConfig(config); in PyPreConfig_InitIsolatedConfig()
330 config->_config_init = (int)_PyConfig_INIT_ISOLATED; in PyPreConfig_InitIsolatedConfig()
331 config->configure_locale = 0; in PyPreConfig_InitIsolatedConfig()
332 config->isolated = 1; in PyPreConfig_InitIsolatedConfig()
333 config->use_environment = 0; in PyPreConfig_InitIsolatedConfig()
334 config->utf8_mode = 0; in PyPreConfig_InitIsolatedConfig()
335 config->dev_mode = 0; in PyPreConfig_InitIsolatedConfig()
337 config->legacy_windows_fs_encoding = 0; in PyPreConfig_InitIsolatedConfig()
343 _PyPreConfig_InitFromPreConfig(PyPreConfig *config, in _PyPreConfig_InitFromPreConfig() argument
346 PyPreConfig_InitPythonConfig(config); in _PyPreConfig_InitFromPreConfig()
347 preconfig_copy(config, config2); in _PyPreConfig_InitFromPreConfig()
353 _PyPreConfig_InitFromConfig(PyPreConfig *preconfig, const PyConfig *config) in _PyPreConfig_InitFromConfig() argument
355 _PyConfigInitEnum config_init = (_PyConfigInitEnum)config->_config_init; in _PyPreConfig_InitFromConfig()
368 _PyPreConfig_GetConfig(preconfig, config); in _PyPreConfig_InitFromConfig()
373 preconfig_copy(PyPreConfig *config, const PyPreConfig *config2) in preconfig_copy() argument
375 #define COPY_ATTR(ATTR) config->ATTR = config2->ATTR in preconfig_copy()
396 _PyPreConfig_AsDict(const PyPreConfig *config) in _PyPreConfig_AsDict() argument
407 PyObject *obj = PyLong_FromLong(config->ATTR); \ in _PyPreConfig_AsDict()
442 _PyPreConfig_GetConfig(PyPreConfig *preconfig, const PyConfig *config) in _PyPreConfig_GetConfig() argument
445 if (config->ATTR != -1) { \ in _PyPreConfig_GetConfig()
446 preconfig->ATTR = config->ATTR; \ in _PyPreConfig_GetConfig()
459 preconfig_get_global_vars(PyPreConfig *config) in preconfig_get_global_vars() argument
461 if (config->_config_init != _PyConfig_INIT_COMPAT) { in preconfig_get_global_vars()
467 if (config->ATTR < 0) { \ in preconfig_get_global_vars()
468 config->ATTR = VALUE; \ in preconfig_get_global_vars()
471 if (config->ATTR < 0) { \ in preconfig_get_global_vars()
472 config->ATTR = !(VALUE); \ in preconfig_get_global_vars()
478 config->utf8_mode = Py_UTF8Mode; in preconfig_get_global_vars()
490 preconfig_set_global_vars(const PyPreConfig *config) in preconfig_set_global_vars() argument
493 if (config->ATTR >= 0) { \ in preconfig_set_global_vars()
494 VAR = config->ATTR; \ in preconfig_set_global_vars()
497 if (config->ATTR >= 0) { \ in preconfig_set_global_vars()
498 VAR = !config->ATTR; \ in preconfig_set_global_vars()
539 return -1; in _Py_str_to_int()
542 return -1; in _Py_str_to_int()
559 /* PYTHONDEBUG=text and PYTHONDEBUG=-2 behave as PYTHONDEBUG=1 */ in _Py_get_env_flag()
571 for (Py_ssize_t i=0; i < xoptions->length; i++) { in _Py_get_xoption()
572 const wchar_t *option = xoptions->items[i]; in _Py_get_xoption()
576 len = (sep - option); in _Py_get_xoption()
590 preconfig_init_utf8_mode(PyPreConfig *config, const _PyPreCmdline *cmdline) in preconfig_init_utf8_mode() argument
593 if (config->legacy_windows_fs_encoding) { in preconfig_init_utf8_mode()
594 config->utf8_mode = 0; in preconfig_init_utf8_mode()
598 if (config->utf8_mode >= 0) { in preconfig_init_utf8_mode()
603 xopt = _Py_get_xoption(&cmdline->xoptions, L"utf8"); in preconfig_init_utf8_mode()
609 config->utf8_mode = 1; in preconfig_init_utf8_mode()
612 config->utf8_mode = 0; in preconfig_init_utf8_mode()
615 return _PyStatus_ERR("invalid -X utf8 option value"); in preconfig_init_utf8_mode()
619 config->utf8_mode = 1; in preconfig_init_utf8_mode()
624 const char *opt = _Py_GetEnv(config->use_environment, "PYTHONUTF8"); in preconfig_init_utf8_mode()
627 config->utf8_mode = 1; in preconfig_init_utf8_mode()
630 config->utf8_mode = 0; in preconfig_init_utf8_mode()
641 if (config->utf8_mode < 0) { in preconfig_init_utf8_mode()
642 /* The C locale and the POSIX locale enable the UTF-8 Mode (PEP 540) */ in preconfig_init_utf8_mode()
648 config->utf8_mode = 1; in preconfig_init_utf8_mode()
653 if (config->utf8_mode < 0) { in preconfig_init_utf8_mode()
654 config->utf8_mode = 0; in preconfig_init_utf8_mode()
661 preconfig_init_coerce_c_locale(PyPreConfig *config) in preconfig_init_coerce_c_locale() argument
663 if (!config->configure_locale) { in preconfig_init_coerce_c_locale()
664 config->coerce_c_locale = 0; in preconfig_init_coerce_c_locale()
665 config->coerce_c_locale_warn = 0; in preconfig_init_coerce_c_locale()
669 const char *env = _Py_GetEnv(config->use_environment, "PYTHONCOERCECLOCALE"); in preconfig_init_coerce_c_locale()
672 if (config->coerce_c_locale < 0) { in preconfig_init_coerce_c_locale()
673 config->coerce_c_locale = 0; in preconfig_init_coerce_c_locale()
677 if (config->coerce_c_locale_warn < 0) { in preconfig_init_coerce_c_locale()
678 config->coerce_c_locale_warn = 1; in preconfig_init_coerce_c_locale()
682 if (config->coerce_c_locale < 0) { in preconfig_init_coerce_c_locale()
683 config->coerce_c_locale = 1; in preconfig_init_coerce_c_locale()
688 /* Test if coerce_c_locale equals to -1 or equals to 1: in preconfig_init_coerce_c_locale()
691 if (config->coerce_c_locale < 0 || config->coerce_c_locale == 1) { in preconfig_init_coerce_c_locale()
694 config->coerce_c_locale = 2; in preconfig_init_coerce_c_locale()
697 config->coerce_c_locale = 0; in preconfig_init_coerce_c_locale()
701 if (config->coerce_c_locale_warn < 0) { in preconfig_init_coerce_c_locale()
702 config->coerce_c_locale_warn = 0; in preconfig_init_coerce_c_locale()
708 preconfig_init_allocator(PyPreConfig *config) in preconfig_init_allocator() argument
710 if (config->allocator == PYMEM_ALLOCATOR_NOT_SET) { in preconfig_init_allocator()
711 /* bpo-34247. The PYTHONMALLOC environment variable has the priority in preconfig_init_allocator()
712 over PYTHONDEV env var and "-X dev" command line option. in preconfig_init_allocator()
715 const char *envvar = _Py_GetEnv(config->use_environment, "PYTHONMALLOC"); in preconfig_init_allocator()
721 config->allocator = (int)name; in preconfig_init_allocator()
725 if (config->dev_mode && config->allocator == PYMEM_ALLOCATOR_NOT_SET) { in preconfig_init_allocator()
726 config->allocator = PYMEM_ALLOCATOR_DEBUG; in preconfig_init_allocator()
733 preconfig_read(PyPreConfig *config, _PyPreCmdline *cmdline) in preconfig_read() argument
737 status = _PyPreCmdline_Read(cmdline, config); in preconfig_read()
742 precmdline_set_preconfig(cmdline, config); in preconfig_read()
746 _Py_get_env_flag(config->use_environment, in preconfig_read()
747 &config->legacy_windows_fs_encoding, in preconfig_read()
751 preconfig_init_coerce_c_locale(config); in preconfig_read()
753 status = preconfig_init_utf8_mode(config, cmdline); in preconfig_read()
759 status = preconfig_init_allocator(config); in preconfig_read()
764 assert(config->coerce_c_locale >= 0); in preconfig_read()
765 assert(config->coerce_c_locale_warn >= 0); in preconfig_read()
767 assert(config->legacy_windows_fs_encoding >= 0); in preconfig_read()
769 assert(config->utf8_mode >= 0); in preconfig_read()
770 assert(config->isolated >= 0); in preconfig_read()
771 assert(config->use_environment >= 0); in preconfig_read()
772 assert(config->dev_mode >= 0); in preconfig_read()
780 - command line arguments
781 - environment variables
782 - Py_xxx global configuration variables
783 - the LC_CTYPE locale */
785 _PyPreConfig_Read(PyPreConfig *config, const _PyArgv *args) in _PyPreConfig_Read() argument
794 preconfig_get_global_vars(config); in _PyPreConfig_Read()
806 /* Save the config to be able to restore it if encodings change */ in _PyPreConfig_Read()
809 status = _PyPreConfig_InitFromPreConfig(&save_config, config); in _PyPreConfig_Read()
815 if (config->configure_locale) { in _PyPreConfig_Read()
829 int utf8_mode = config->utf8_mode; in _PyPreConfig_Read()
839 /* bpo-34207: Py_DecodeLocale() and Py_EncodeLocale() depend in _PyPreConfig_Read()
841 Py_UTF8Mode = config->utf8_mode; in _PyPreConfig_Read()
843 Py_LegacyWindowsFSEncodingFlag = config->legacy_windows_fs_encoding; in _PyPreConfig_Read()
855 status = preconfig_read(config, &cmdline); in _PyPreConfig_Read()
865 * more capable UTF-8 based alternative. in _PyPreConfig_Read()
871 if (config->coerce_c_locale && !locale_coerced) { in _PyPreConfig_Read()
877 if (utf8_mode == -1) { in _PyPreConfig_Read()
878 if (config->utf8_mode == 1) { in _PyPreConfig_Read()
879 /* UTF-8 Mode enabled */ in _PyPreConfig_Read()
884 if (config->utf8_mode != utf8_mode) { in _PyPreConfig_Read()
894 just keep UTF-8 Mode and coerce C locale value. */ in _PyPreConfig_Read()
895 int new_utf8_mode = config->utf8_mode; in _PyPreConfig_Read()
896 int new_coerce_c_locale = config->coerce_c_locale; in _PyPreConfig_Read()
897 preconfig_copy(config, &save_config); in _PyPreConfig_Read()
898 config->utf8_mode = new_utf8_mode; in _PyPreConfig_Read()
899 config->coerce_c_locale = new_coerce_c_locale; in _PyPreConfig_Read()
920 /* Write the pre-configuration:
922 - set the memory allocators
923 - set Py_xxx global configuration variables
924 - set the LC_CTYPE locale (coerce C locale, PEP 538) and set the UTF-8 mode
931 pre-configuration. */
935 PyPreConfig config; in _PyPreConfig_Write() local
937 PyStatus status = _PyPreConfig_InitFromPreConfig(&config, src_config); in _PyPreConfig_Write()
943 /* bpo-34008: Calling this functions after Py_Initialize() ignores in _PyPreConfig_Write()
948 PyMemAllocatorName name = (PyMemAllocatorName)config.allocator; in _PyPreConfig_Write()
955 preconfig_set_global_vars(&config); in _PyPreConfig_Write()
957 if (config.configure_locale) { in _PyPreConfig_Write()
958 if (config.coerce_c_locale) { in _PyPreConfig_Write()
959 if (!_Py_CoerceLegacyLocale(config.coerce_c_locale_warn)) { in _PyPreConfig_Write()
961 config.coerce_c_locale = 0; in _PyPreConfig_Write()
969 /* Write the new pre-configuration into _PyRuntime */ in _PyPreConfig_Write()
970 preconfig_copy(&_PyRuntime.preconfig, &config); in _PyPreConfig_Write()