Lines Matching full:config
596 config_check_consistency(const PyConfig *config) in config_check_consistency() argument
598 /* Check config consistency */ in config_check_consistency()
599 assert(config->isolated >= 0); in config_check_consistency()
600 assert(config->use_environment >= 0); in config_check_consistency()
601 assert(config->dev_mode >= 0); in config_check_consistency()
602 assert(config->install_signal_handlers >= 0); in config_check_consistency()
603 assert(config->use_hash_seed >= 0); in config_check_consistency()
604 assert(config->hash_seed <= MAX_HASH_SEED); in config_check_consistency()
605 assert(config->faulthandler >= 0); in config_check_consistency()
606 assert(config->tracemalloc >= 0); in config_check_consistency()
607 assert(config->import_time >= 0); in config_check_consistency()
608 assert(config->show_ref_count >= 0); in config_check_consistency()
609 assert(config->dump_refs >= 0); in config_check_consistency()
610 assert(config->malloc_stats >= 0); in config_check_consistency()
611 assert(config->site_import >= 0); in config_check_consistency()
612 assert(config->bytes_warning >= 0); in config_check_consistency()
613 assert(config->warn_default_encoding >= 0); in config_check_consistency()
614 assert(config->inspect >= 0); in config_check_consistency()
615 assert(config->interactive >= 0); in config_check_consistency()
616 assert(config->optimization_level >= 0); in config_check_consistency()
617 assert(config->parser_debug >= 0); in config_check_consistency()
618 assert(config->write_bytecode >= 0); in config_check_consistency()
619 assert(config->verbose >= 0); in config_check_consistency()
620 assert(config->quiet >= 0); in config_check_consistency()
621 assert(config->user_site_directory >= 0); in config_check_consistency()
622 assert(config->parse_argv >= 0); in config_check_consistency()
623 assert(config->configure_c_stdio >= 0); in config_check_consistency()
624 assert(config->buffered_stdio >= 0); in config_check_consistency()
625 assert(config->program_name != NULL); in config_check_consistency()
626 assert(_PyWideStringList_CheckConsistency(&config->orig_argv)); in config_check_consistency()
627 assert(_PyWideStringList_CheckConsistency(&config->argv)); in config_check_consistency()
629 assert(config->argv.length >= 1); in config_check_consistency()
630 assert(_PyWideStringList_CheckConsistency(&config->xoptions)); in config_check_consistency()
631 assert(_PyWideStringList_CheckConsistency(&config->warnoptions)); in config_check_consistency()
632 assert(_PyWideStringList_CheckConsistency(&config->module_search_paths)); in config_check_consistency()
633 assert(config->module_search_paths_set >= 0); in config_check_consistency()
634 assert(config->platlibdir != NULL); in config_check_consistency()
635 assert(config->filesystem_encoding != NULL); in config_check_consistency()
636 assert(config->filesystem_errors != NULL); in config_check_consistency()
637 assert(config->stdio_encoding != NULL); in config_check_consistency()
638 assert(config->stdio_errors != NULL); in config_check_consistency()
640 assert(config->legacy_windows_stdio >= 0); in config_check_consistency()
643 assert(!(config->run_command != NULL && config->run_module != NULL)); in config_check_consistency()
644 assert(config->check_hash_pycs_mode != NULL); in config_check_consistency()
645 assert(config->_install_importlib >= 0); in config_check_consistency()
646 assert(config->pathconfig_warnings >= 0); in config_check_consistency()
652 /* Free memory allocated in config, but don't clear all attributes */
654 PyConfig_Clear(PyConfig *config) in PyConfig_Clear() argument
662 CLEAR(config->pycache_prefix); in PyConfig_Clear()
663 CLEAR(config->pythonpath_env); in PyConfig_Clear()
664 CLEAR(config->home); in PyConfig_Clear()
665 CLEAR(config->program_name); in PyConfig_Clear()
667 _PyWideStringList_Clear(&config->argv); in PyConfig_Clear()
668 _PyWideStringList_Clear(&config->warnoptions); in PyConfig_Clear()
669 _PyWideStringList_Clear(&config->xoptions); in PyConfig_Clear()
670 _PyWideStringList_Clear(&config->module_search_paths); in PyConfig_Clear()
671 config->module_search_paths_set = 0; in PyConfig_Clear()
673 CLEAR(config->executable); in PyConfig_Clear()
674 CLEAR(config->base_executable); in PyConfig_Clear()
675 CLEAR(config->prefix); in PyConfig_Clear()
676 CLEAR(config->base_prefix); in PyConfig_Clear()
677 CLEAR(config->exec_prefix); in PyConfig_Clear()
678 CLEAR(config->base_exec_prefix); in PyConfig_Clear()
679 CLEAR(config->platlibdir); in PyConfig_Clear()
681 CLEAR(config->filesystem_encoding); in PyConfig_Clear()
682 CLEAR(config->filesystem_errors); in PyConfig_Clear()
683 CLEAR(config->stdio_encoding); in PyConfig_Clear()
684 CLEAR(config->stdio_errors); in PyConfig_Clear()
685 CLEAR(config->run_command); in PyConfig_Clear()
686 CLEAR(config->run_module); in PyConfig_Clear()
687 CLEAR(config->run_filename); in PyConfig_Clear()
688 CLEAR(config->check_hash_pycs_mode); in PyConfig_Clear()
690 _PyWideStringList_Clear(&config->orig_argv); in PyConfig_Clear()
696 _PyConfig_InitCompatConfig(PyConfig *config) in _PyConfig_InitCompatConfig() argument
698 memset(config, 0, sizeof(*config)); in _PyConfig_InitCompatConfig()
700 config->_config_init = (int)_PyConfig_INIT_COMPAT; in _PyConfig_InitCompatConfig()
701 config->isolated = -1; in _PyConfig_InitCompatConfig()
702 config->use_environment = -1; in _PyConfig_InitCompatConfig()
703 config->dev_mode = -1; in _PyConfig_InitCompatConfig()
704 config->install_signal_handlers = 1; in _PyConfig_InitCompatConfig()
705 config->use_hash_seed = -1; in _PyConfig_InitCompatConfig()
706 config->faulthandler = -1; in _PyConfig_InitCompatConfig()
707 config->tracemalloc = -1; in _PyConfig_InitCompatConfig()
708 config->module_search_paths_set = 0; in _PyConfig_InitCompatConfig()
709 config->parse_argv = 0; in _PyConfig_InitCompatConfig()
710 config->site_import = -1; in _PyConfig_InitCompatConfig()
711 config->bytes_warning = -1; in _PyConfig_InitCompatConfig()
712 config->warn_default_encoding = 0; in _PyConfig_InitCompatConfig()
713 config->inspect = -1; in _PyConfig_InitCompatConfig()
714 config->interactive = -1; in _PyConfig_InitCompatConfig()
715 config->optimization_level = -1; in _PyConfig_InitCompatConfig()
716 config->parser_debug= -1; in _PyConfig_InitCompatConfig()
717 config->write_bytecode = -1; in _PyConfig_InitCompatConfig()
718 config->verbose = -1; in _PyConfig_InitCompatConfig()
719 config->quiet = -1; in _PyConfig_InitCompatConfig()
720 config->user_site_directory = -1; in _PyConfig_InitCompatConfig()
721 config->configure_c_stdio = 0; in _PyConfig_InitCompatConfig()
722 config->buffered_stdio = -1; in _PyConfig_InitCompatConfig()
723 config->_install_importlib = 1; in _PyConfig_InitCompatConfig()
724 config->check_hash_pycs_mode = NULL; in _PyConfig_InitCompatConfig()
725 config->pathconfig_warnings = -1; in _PyConfig_InitCompatConfig()
726 config->_init_main = 1; in _PyConfig_InitCompatConfig()
727 config->_isolated_interpreter = 0; in _PyConfig_InitCompatConfig()
729 config->legacy_windows_stdio = -1; in _PyConfig_InitCompatConfig()
739 config_init_defaults(PyConfig *config) in config_init_defaults() argument
741 _PyConfig_InitCompatConfig(config); in config_init_defaults()
743 config->isolated = 0; in config_init_defaults()
744 config->use_environment = 1; in config_init_defaults()
745 config->site_import = 1; in config_init_defaults()
746 config->bytes_warning = 0; in config_init_defaults()
747 config->inspect = 0; in config_init_defaults()
748 config->interactive = 0; in config_init_defaults()
749 config->optimization_level = 0; in config_init_defaults()
750 config->parser_debug= 0; in config_init_defaults()
751 config->write_bytecode = 1; in config_init_defaults()
752 config->verbose = 0; in config_init_defaults()
753 config->quiet = 0; in config_init_defaults()
754 config->user_site_directory = 1; in config_init_defaults()
755 config->buffered_stdio = 1; in config_init_defaults()
756 config->pathconfig_warnings = 1; in config_init_defaults()
758 config->legacy_windows_stdio = 0; in config_init_defaults()
764 PyConfig_InitPythonConfig(PyConfig *config) in PyConfig_InitPythonConfig() argument
766 config_init_defaults(config); in PyConfig_InitPythonConfig()
768 config->_config_init = (int)_PyConfig_INIT_PYTHON; in PyConfig_InitPythonConfig()
769 config->configure_c_stdio = 1; in PyConfig_InitPythonConfig()
770 config->parse_argv = 1; in PyConfig_InitPythonConfig()
775 PyConfig_InitIsolatedConfig(PyConfig *config) in PyConfig_InitIsolatedConfig() argument
777 config_init_defaults(config); in PyConfig_InitIsolatedConfig()
779 config->_config_init = (int)_PyConfig_INIT_ISOLATED; in PyConfig_InitIsolatedConfig()
780 config->isolated = 1; in PyConfig_InitIsolatedConfig()
781 config->use_environment = 0; in PyConfig_InitIsolatedConfig()
782 config->user_site_directory = 0; in PyConfig_InitIsolatedConfig()
783 config->dev_mode = 0; in PyConfig_InitIsolatedConfig()
784 config->install_signal_handlers = 0; in PyConfig_InitIsolatedConfig()
785 config->use_hash_seed = 0; in PyConfig_InitIsolatedConfig()
786 config->faulthandler = 0; in PyConfig_InitIsolatedConfig()
787 config->tracemalloc = 0; in PyConfig_InitIsolatedConfig()
788 config->pathconfig_warnings = 0; in PyConfig_InitIsolatedConfig()
790 config->legacy_windows_stdio = 0; in PyConfig_InitIsolatedConfig()
797 PyConfig_SetString(PyConfig *config, wchar_t **config_str, const wchar_t *str) in PyConfig_SetString() argument
799 PyStatus status = _Py_PreInitializeFromConfig(config, NULL); in PyConfig_SetString()
821 config_set_bytes_string(PyConfig *config, wchar_t **config_str, in config_set_bytes_string() argument
824 PyStatus status = _Py_PreInitializeFromConfig(config, NULL); in config_set_bytes_string()
851 #define CONFIG_SET_BYTES_STR(config, config_str, str, NAME) \ argument
852 config_set_bytes_string(config, config_str, str, "cannot decode " NAME)
859 PyConfig_SetBytesString(PyConfig *config, wchar_t **config_str, in PyConfig_SetBytesString() argument
862 return CONFIG_SET_BYTES_STR(config, config_str, str, "string"); in PyConfig_SetBytesString()
867 _PyConfig_Copy(PyConfig *config, const PyConfig *config2) in _PyConfig_Copy() argument
871 PyConfig_Clear(config); in _PyConfig_Copy()
873 #define COPY_ATTR(ATTR) config->ATTR = config2->ATTR in _PyConfig_Copy()
876 status = PyConfig_SetString(config, &config->ATTR, config2->ATTR); \ in _PyConfig_Copy()
883 if (_PyWideStringList_Copy(&config->LIST, &config2->LIST) < 0) { \ in _PyConfig_Copy()
961 _PyConfig_AsDict(const PyConfig *config) in _PyConfig_AsDict() argument
981 SET_ITEM(#ATTR, PyLong_FromLong(config->ATTR)) in _PyConfig_AsDict()
983 SET_ITEM(#ATTR, PyLong_FromUnsignedLong(config->ATTR)) in _PyConfig_AsDict()
989 SET_ITEM(#ATTR, FROM_WSTRING(config->ATTR)) in _PyConfig_AsDict()
991 SET_ITEM(#LIST, _PyWideStringList_AsList(&config->LIST)) in _PyConfig_AsDict()
1074 PyErr_Format(PyExc_ValueError, "missing config key: %s", name); in config_dict_get()
1084 PyErr_Format(PyExc_ValueError, "invalid config value: %s", name); in config_dict_invalid_value()
1091 PyErr_Format(PyExc_TypeError, "invalid config type: %s", name); in config_dict_invalid_type()
1140 config_dict_get_wstr(PyObject *dict, const char *name, PyConfig *config, in config_dict_get_wstr() argument
1149 status = PyConfig_SetString(config, result, NULL); in config_dict_get_wstr()
1160 status = PyConfig_SetString(config, result, wstr); in config_dict_get_wstr()
1172 config_dict_get_wstrlist(PyObject *dict, const char *name, PyConfig *config, in config_dict_get_wstrlist() argument
1223 _PyConfig_FromDict(PyConfig *config, PyObject *dict) in _PyConfig_FromDict() argument
1237 if (config_dict_get_int(dict, #KEY, &config->KEY) < 0) { \ in _PyConfig_FromDict()
1240 CHECK_VALUE(#KEY, config->KEY >= 0); \ in _PyConfig_FromDict()
1244 if (config_dict_get_wstr(dict, #KEY, config, &config->KEY) < 0) { \ in _PyConfig_FromDict()
1247 CHECK_VALUE(#KEY, config->KEY != NULL); \ in _PyConfig_FromDict()
1251 if (config_dict_get_wstr(dict, #KEY, config, &config->KEY) < 0) { \ in _PyConfig_FromDict()
1257 if (config_dict_get_wstrlist(dict, #KEY, config, &config->KEY) < 0) { \ in _PyConfig_FromDict()
1264 config->_config_init == _PyConfig_INIT_COMPAT in _PyConfig_FromDict()
1265 || config->_config_init == _PyConfig_INIT_PYTHON in _PyConfig_FromDict()
1266 || config->_config_init == _PyConfig_INIT_ISOLATED); in _PyConfig_FromDict()
1272 if (config_dict_get_ulong(dict, "hash_seed", &config->hash_seed) < 0) { in _PyConfig_FromDict()
1275 CHECK_VALUE("hash_seed", config->hash_seed <= MAX_HASH_SEED); in _PyConfig_FromDict()
1344 config_get_env(const PyConfig *config, const char *name) in config_get_env() argument
1346 return _Py_GetEnv(config->use_environment, name); in config_get_env()
1354 config_get_env_dup(PyConfig *config, in config_get_env_dup() argument
1360 assert(config->use_environment >= 0); in config_get_env_dup()
1362 if (!config->use_environment) { in config_get_env_dup()
1374 return PyConfig_SetString(config, dest, var); in config_get_env_dup()
1382 return config_set_bytes_string(config, dest, var, decode_err_msg); in config_get_env_dup()
1387 #define CONFIG_GET_ENV_DUP(CONFIG, DEST, WNAME, NAME) \ argument
1388 config_get_env_dup(CONFIG, DEST, WNAME, NAME, "cannot decode " NAME)
1392 config_get_global_vars(PyConfig *config) in config_get_global_vars() argument
1394 if (config->_config_init != _PyConfig_INIT_COMPAT) { in config_get_global_vars()
1400 if (config->ATTR == -1) { \ in config_get_global_vars()
1401 config->ATTR = VALUE; \ in config_get_global_vars()
1404 if (config->ATTR == -1) { \ in config_get_global_vars()
1405 config->ATTR = !(VALUE); \ in config_get_global_vars()
1432 /* Set Py_xxx global configuration variables from 'config' configuration. */
1434 config_set_global_vars(const PyConfig *config) in config_set_global_vars() argument
1437 if (config->ATTR != -1) { \ in config_set_global_vars()
1438 VAR = config->ATTR; \ in config_set_global_vars()
1441 if (config->ATTR != -1) { \ in config_set_global_vars()
1442 VAR = !config->ATTR; \ in config_set_global_vars()
1465 Py_HashRandomizationFlag = (config->use_hash_seed == 0 || in config_set_global_vars()
1466 config->hash_seed != 0); in config_set_global_vars()
1476 config_init_program_name(PyConfig *config) in config_init_program_name() argument
1483 config->program_name = _PyMem_RawWcsdup(program_name); in config_init_program_name()
1484 if (config->program_name == NULL) { in config_init_program_name()
1500 const char *p = config_get_env(config, "PYTHONEXECUTABLE"); in config_init_program_name()
1502 status = CONFIG_SET_BYTES_STR(config, &config->program_name, p, in config_init_program_name()
1516 status = CONFIG_SET_BYTES_STR(config, in config_init_program_name()
1517 &config->program_name, in config_init_program_name()
1541 const PyWideStringList *argv = &config->argv; in config_init_program_name()
1543 config->program_name = _PyMem_RawWcsdup(argv->items[0]); in config_init_program_name()
1544 if (config->program_name == NULL) { in config_init_program_name()
1556 status = PyConfig_SetString(config, &config->program_name, in config_init_program_name()
1565 config_init_executable(PyConfig *config) in config_init_executable() argument
1567 assert(config->executable == NULL); in config_init_executable()
1572 PyStatus status = PyConfig_SetString(config, in config_init_executable()
1573 &config->executable, in config_init_executable()
1585 config_get_xoption(const PyConfig *config, wchar_t *name) in config_get_xoption() argument
1587 return _Py_get_xoption(&config->xoptions, name); in config_get_xoption()
1592 config_init_home(PyConfig *config) in config_init_home() argument
1594 assert(config->home == NULL); in config_init_home()
1599 PyStatus status = PyConfig_SetString(config, &config->home, home); in config_init_home()
1606 return CONFIG_GET_ENV_DUP(config, &config->home, in config_init_home()
1611 config_init_hash_seed(PyConfig *config) in config_init_hash_seed() argument
1613 const char *seed_text = config_get_env(config, "PYTHONHASHSEED"); in config_init_hash_seed()
1630 config->use_hash_seed = 1; in config_init_hash_seed()
1631 config->hash_seed = seed; in config_init_hash_seed()
1635 config->use_hash_seed = 0; in config_init_hash_seed()
1636 config->hash_seed = 0; in config_init_hash_seed()
1661 config_read_env_vars(PyConfig *config) in config_read_env_vars() argument
1664 int use_env = config->use_environment; in config_read_env_vars()
1667 _Py_get_env_flag(use_env, &config->parser_debug, "PYTHONDEBUG"); in config_read_env_vars()
1668 _Py_get_env_flag(use_env, &config->verbose, "PYTHONVERBOSE"); in config_read_env_vars()
1669 _Py_get_env_flag(use_env, &config->optimization_level, "PYTHONOPTIMIZE"); in config_read_env_vars()
1670 _Py_get_env_flag(use_env, &config->inspect, "PYTHONINSPECT"); in config_read_env_vars()
1675 config->write_bytecode = 0; in config_read_env_vars()
1681 config->user_site_directory = 0; in config_read_env_vars()
1687 config->buffered_stdio = 0; in config_read_env_vars()
1691 _Py_get_env_flag(use_env, &config->legacy_windows_stdio, in config_read_env_vars()
1695 if (config_get_env(config, "PYTHONDUMPREFS")) { in config_read_env_vars()
1696 config->dump_refs = 1; in config_read_env_vars()
1698 if (config_get_env(config, "PYTHONMALLOCSTATS")) { in config_read_env_vars()
1699 config->malloc_stats = 1; in config_read_env_vars()
1702 if (config->pythonpath_env == NULL) { in config_read_env_vars()
1703 status = CONFIG_GET_ENV_DUP(config, &config->pythonpath_env, in config_read_env_vars()
1710 if(config->platlibdir == NULL) { in config_read_env_vars()
1711 status = CONFIG_GET_ENV_DUP(config, &config->platlibdir, in config_read_env_vars()
1718 if (config->use_hash_seed < 0) { in config_read_env_vars()
1719 status = config_init_hash_seed(config); in config_read_env_vars()
1730 config_init_tracemalloc(PyConfig *config) in config_init_tracemalloc() argument
1735 const char *env = config_get_env(config, "PYTHONTRACEMALLOC"); in config_init_tracemalloc()
1746 config->tracemalloc = nframe; in config_init_tracemalloc()
1749 const wchar_t *xoption = config_get_xoption(config, L"tracemalloc"); in config_init_tracemalloc()
1768 config->tracemalloc = nframe; in config_init_tracemalloc()
1774 config_init_int_max_str_digits(PyConfig *config) in config_init_int_max_str_digits() argument
1779 const char *env = config_get_env(config, "PYTHONINTMAXSTRDIGITS"); in config_init_int_max_str_digits()
1795 const wchar_t *xoption = config_get_xoption(config, L"int_max_str_digits"); in config_init_int_max_str_digits()
1817 config_init_pycache_prefix(PyConfig *config) in config_init_pycache_prefix() argument
1819 assert(config->pycache_prefix == NULL); in config_init_pycache_prefix()
1821 const wchar_t *xoption = config_get_xoption(config, L"pycache_prefix"); in config_init_pycache_prefix()
1825 config->pycache_prefix = _PyMem_RawWcsdup(sep + 1); in config_init_pycache_prefix()
1826 if (config->pycache_prefix == NULL) { in config_init_pycache_prefix()
1833 config->pycache_prefix = NULL; in config_init_pycache_prefix()
1838 return CONFIG_GET_ENV_DUP(config, &config->pycache_prefix, in config_init_pycache_prefix()
1845 config_read_complex_options(PyConfig *config) in config_read_complex_options() argument
1848 if (config->faulthandler < 0) { in config_read_complex_options()
1849 if (config_get_env(config, "PYTHONFAULTHANDLER") in config_read_complex_options()
1850 || config_get_xoption(config, L"faulthandler")) { in config_read_complex_options()
1851 config->faulthandler = 1; in config_read_complex_options()
1854 if (config_get_env(config, "PYTHONPROFILEIMPORTTIME") in config_read_complex_options()
1855 || config_get_xoption(config, L"importtime")) { in config_read_complex_options()
1856 config->import_time = 1; in config_read_complex_options()
1860 if (config->tracemalloc < 0) { in config_read_complex_options()
1861 status = config_init_tracemalloc(config); in config_read_complex_options()
1867 status = config_init_int_max_str_digits(config); in config_read_complex_options()
1873 if (config->pycache_prefix == NULL) { in config_read_complex_options()
1874 status = config_init_pycache_prefix(config); in config_read_complex_options()
1917 config_get_locale_encoding(PyConfig *config, const PyPreConfig *preconfig, in config_get_locale_encoding() argument
1924 PyStatus status = PyConfig_SetString(config, locale_encoding, encoding); in config_get_locale_encoding()
1931 config_init_stdio_encoding(PyConfig *config, in config_init_stdio_encoding() argument
1938 if (config->stdio_encoding == NULL && _Py_StandardStreamEncoding != NULL) { in config_init_stdio_encoding()
1939 status = CONFIG_SET_BYTES_STR(config, &config->stdio_encoding, in config_init_stdio_encoding()
1947 if (config->stdio_errors == NULL && _Py_StandardStreamErrors != NULL) { in config_init_stdio_encoding()
1948 status = CONFIG_SET_BYTES_STR(config, &config->stdio_errors, in config_init_stdio_encoding()
1957 if (config->stdio_encoding != NULL && config->stdio_errors != NULL) { in config_init_stdio_encoding()
1962 const char *opt = config_get_env(config, "PYTHONIOENCODING"); in config_init_stdio_encoding()
1980 if (config->stdio_encoding == NULL) { in config_init_stdio_encoding()
1981 status = CONFIG_SET_BYTES_STR(config, &config->stdio_encoding, in config_init_stdio_encoding()
1999 if (config->stdio_errors == NULL && errors != NULL) { in config_init_stdio_encoding()
2000 status = CONFIG_SET_BYTES_STR(config, &config->stdio_errors, in config_init_stdio_encoding()
2013 if (config->stdio_encoding == NULL) { in config_init_stdio_encoding()
2014 status = config_get_locale_encoding(config, preconfig, in config_init_stdio_encoding()
2015 &config->stdio_encoding); in config_init_stdio_encoding()
2020 if (config->stdio_errors == NULL) { in config_init_stdio_encoding()
2024 status = PyConfig_SetString(config, &config->stdio_errors, errors); in config_init_stdio_encoding()
2036 config_get_fs_encoding(PyConfig *config, const PyPreConfig *preconfig, in config_get_fs_encoding() argument
2040 return PyConfig_SetString(config, fs_encoding, L"utf-8"); in config_get_fs_encoding()
2051 return PyConfig_SetString(config, fs_encoding, encoding); in config_get_fs_encoding()
2054 return PyConfig_SetString(config, fs_encoding, L"utf-8"); in config_get_fs_encoding()
2058 return PyConfig_SetString(config, fs_encoding, L"ascii"); in config_get_fs_encoding()
2061 return config_get_locale_encoding(config, preconfig, fs_encoding); in config_get_fs_encoding()
2067 config_init_fs_encoding(PyConfig *config, const PyPreConfig *preconfig) in config_init_fs_encoding() argument
2071 if (config->filesystem_encoding == NULL) { in config_init_fs_encoding()
2072 status = config_get_fs_encoding(config, preconfig, in config_init_fs_encoding()
2073 &config->filesystem_encoding); in config_init_fs_encoding()
2079 if (config->filesystem_errors == NULL) { in config_init_fs_encoding()
2091 status = PyConfig_SetString(config, &config->filesystem_errors, errors); in config_init_fs_encoding()
2101 config_read(PyConfig *config, int compute_path_config) in config_read() argument
2106 if (config->use_environment) { in config_read()
2107 status = config_read_env_vars(config); in config_read()
2114 if (config_get_xoption(config, L"showrefcount")) { in config_read()
2115 config->show_ref_count = 1; in config_read()
2118 status = config_read_complex_options(config); in config_read()
2123 if (config->home == NULL) { in config_read()
2124 status = config_init_home(config); in config_read()
2130 if (config->executable == NULL) { in config_read()
2131 status = config_init_executable(config); in config_read()
2137 if(config->platlibdir == NULL) { in config_read()
2138 status = CONFIG_SET_BYTES_STR(config, &config->platlibdir, PLATLIBDIR, in config_read()
2145 if (config->_install_importlib) { in config_read()
2146 status = _PyConfig_InitPathConfig(config, compute_path_config); in config_read()
2153 if (config->dev_mode) { in config_read()
2154 if (config->faulthandler < 0) { in config_read()
2155 config->faulthandler = 1; in config_read()
2158 if (config->faulthandler < 0) { in config_read()
2159 config->faulthandler = 0; in config_read()
2161 if (config->tracemalloc < 0) { in config_read()
2162 config->tracemalloc = 0; in config_read()
2164 if (config->use_hash_seed < 0) { in config_read()
2165 config->use_hash_seed = 0; in config_read()
2166 config->hash_seed = 0; in config_read()
2169 if (config->filesystem_encoding == NULL || config->filesystem_errors == NULL) { in config_read()
2170 status = config_init_fs_encoding(config, preconfig); in config_read()
2176 status = config_init_stdio_encoding(config, preconfig); in config_read()
2181 if (config->argv.length < 1) { in config_read()
2183 status = PyWideStringList_Append(&config->argv, L""); in config_read()
2189 if (config->check_hash_pycs_mode == NULL) { in config_read()
2190 status = PyConfig_SetString(config, &config->check_hash_pycs_mode, in config_read()
2197 if (config->configure_c_stdio < 0) { in config_read()
2198 config->configure_c_stdio = 1; in config_read()
2202 if (config->parse_argv == 1) { in config_read()
2203 config->parse_argv = 2; in config_read()
2211 config_init_stdio(const PyConfig *config) in config_init_stdio() argument
2220 if (!config->buffered_stdio) { in config_init_stdio()
2231 else if (config->interactive) { in config_init_stdio()
2252 _PyConfig_Write(const PyConfig *config, _PyRuntimeState *runtime) in _PyConfig_Write() argument
2254 config_set_global_vars(config); in _PyConfig_Write()
2256 if (config->configure_c_stdio) { in _PyConfig_Write()
2257 config_init_stdio(config); in _PyConfig_Write()
2262 preconfig->isolated = config->isolated; in _PyConfig_Write()
2263 preconfig->use_environment = config->use_environment; in _PyConfig_Write()
2264 preconfig->dev_mode = config->dev_mode; in _PyConfig_Write()
2266 if (_Py_SetArgcArgv(config->orig_argv.length, in _PyConfig_Write()
2267 config->orig_argv.items) < 0) in _PyConfig_Write()
2298 config_parse_cmdline(PyConfig *config, PyWideStringList *warnoptions, in config_parse_cmdline() argument
2302 const PyWideStringList *argv = &config->argv; in config_parse_cmdline()
2304 const wchar_t* program = config->program_name; in config_parse_cmdline()
2315 if (config->run_command == NULL) { in config_parse_cmdline()
2327 config->run_command = command; in config_parse_cmdline()
2336 if (config->run_module == NULL) { in config_parse_cmdline()
2337 config->run_module = _PyMem_RawWcsdup(_PyOS_optarg); in config_parse_cmdline()
2338 if (config->run_module == NULL) { in config_parse_cmdline()
2353 status = PyConfig_SetString(config, &config->check_hash_pycs_mode, in config_parse_cmdline()
2367 config->bytes_warning++; in config_parse_cmdline()
2371 config->parser_debug++; in config_parse_cmdline()
2375 config->inspect++; in config_parse_cmdline()
2376 config->interactive++; in config_parse_cmdline()
2388 config->optimization_level++; in config_parse_cmdline()
2392 config->write_bytecode = 0; in config_parse_cmdline()
2396 config->user_site_directory = 0; in config_parse_cmdline()
2400 config->site_import = 0; in config_parse_cmdline()
2408 config->buffered_stdio = 0; in config_parse_cmdline()
2412 config->verbose++; in config_parse_cmdline()
2416 config->skip_source_first_line = 1; in config_parse_cmdline()
2436 config->quiet++; in config_parse_cmdline()
2440 config->use_hash_seed = 0; in config_parse_cmdline()
2458 if (config->run_command == NULL && config->run_module == NULL in config_parse_cmdline()
2461 && config->run_filename == NULL) in config_parse_cmdline()
2463 config->run_filename = _PyMem_RawWcsdup(argv->items[_PyOS_optind]); in config_parse_cmdline()
2464 if (config->run_filename == NULL) { in config_parse_cmdline()
2469 if (config->run_command != NULL || config->run_module != NULL) { in config_parse_cmdline()
2488 config_init_env_warnoptions(PyConfig *config, PyWideStringList *warnoptions) in config_init_env_warnoptions() argument
2493 status = CONFIG_GET_ENV_DUP(config, &env, in config_init_env_warnoptions()
2522 warnoptions_append(PyConfig *config, PyWideStringList *options, in warnoptions_append() argument
2525 /* config_init_warnoptions() add existing config warnoptions at the end: in warnoptions_append()
2529 if (_PyWideStringList_Find(&config->warnoptions, option)) { in warnoptions_append()
2542 warnoptions_extend(PyConfig *config, PyWideStringList *options, in warnoptions_extend() argument
2549 PyStatus status = warnoptions_append(config, options, items[i]); in warnoptions_extend()
2559 config_init_warnoptions(PyConfig *config, in config_init_warnoptions() argument
2584 if (config->dev_mode) { in config_init_warnoptions()
2585 status = warnoptions_append(config, &options, L"default"); in config_init_warnoptions()
2591 status = warnoptions_extend(config, &options, env_warnoptions); in config_init_warnoptions()
2596 status = warnoptions_extend(config, &options, cmdline_warnoptions); in config_init_warnoptions()
2605 if (config->bytes_warning) { in config_init_warnoptions()
2607 if (config->bytes_warning> 1) { in config_init_warnoptions()
2613 status = warnoptions_append(config, &options, filter); in config_init_warnoptions()
2619 status = warnoptions_extend(config, &options, sys_warnoptions); in config_init_warnoptions()
2625 status = _PyWideStringList_Extend(&options, &config->warnoptions); in config_init_warnoptions()
2630 _PyWideStringList_Clear(&config->warnoptions); in config_init_warnoptions()
2631 config->warnoptions = options; in config_init_warnoptions()
2641 config_update_argv(PyConfig *config, Py_ssize_t opt_index) in config_update_argv() argument
2643 const PyWideStringList *cmdline_argv = &config->argv; in config_update_argv()
2665 if (config->run_command != NULL) { in config_update_argv()
2669 else if (config->run_module != NULL) { in config_update_argv()
2685 _PyWideStringList_Clear(&config->argv); in config_update_argv()
2686 config->argv = config_argv; in config_update_argv()
2692 core_read_precmdline(PyConfig *config, _PyPreCmdline *precmdline) in core_read_precmdline() argument
2696 if (config->parse_argv == 1) { in core_read_precmdline()
2697 if (_PyWideStringList_Copy(&precmdline->argv, &config->argv) < 0) { in core_read_precmdline()
2709 _PyPreConfig_GetConfig(&preconfig, config); in core_read_precmdline()
2716 status = _PyPreCmdline_SetConfig(precmdline, config); in core_read_precmdline()
2726 config_run_filename_abspath(PyConfig *config) in config_run_filename_abspath() argument
2728 if (!config->run_filename) { in config_run_filename_abspath()
2733 if (_Py_isabs(config->run_filename)) { in config_run_filename_abspath()
2740 if (_Py_abspath(config->run_filename, &abs_filename) < 0) { in config_run_filename_abspath()
2749 PyMem_RawFree(config->run_filename); in config_run_filename_abspath()
2750 config->run_filename = abs_filename; in config_run_filename_abspath()
2756 config_read_cmdline(PyConfig *config) in config_read_cmdline() argument
2763 if (config->parse_argv < 0) { in config_read_cmdline()
2764 config->parse_argv = 1; in config_read_cmdline()
2767 if (config->program_name == NULL) { in config_read_cmdline()
2768 status = config_init_program_name(config); in config_read_cmdline()
2774 if (config->parse_argv == 1) { in config_read_cmdline()
2776 status = config_parse_cmdline(config, &cmdline_warnoptions, &opt_index); in config_read_cmdline()
2781 status = config_run_filename_abspath(config); in config_read_cmdline()
2786 status = config_update_argv(config, opt_index); in config_read_cmdline()
2792 status = config_run_filename_abspath(config); in config_read_cmdline()
2798 if (config->use_environment) { in config_read_cmdline()
2799 status = config_init_env_warnoptions(config, &env_warnoptions); in config_read_cmdline()
2811 status = config_init_warnoptions(config, in config_read_cmdline()
2830 _PyConfig_SetPyArgv(PyConfig *config, const _PyArgv *args) in _PyConfig_SetPyArgv() argument
2832 PyStatus status = _Py_PreInitializeFromConfig(config, args); in _PyConfig_SetPyArgv()
2837 return _PyArgv_AsWstrList(args, &config->argv); in _PyConfig_SetPyArgv()
2841 /* Set config.argv: decode argv using Py_DecodeLocale(). Pre-initialize Python
2844 PyConfig_SetBytesArgv(PyConfig *config, Py_ssize_t argc, char * const *argv) in PyConfig_SetBytesArgv() argument
2851 return _PyConfig_SetPyArgv(config, &args); in PyConfig_SetBytesArgv()
2856 PyConfig_SetArgv(PyConfig *config, Py_ssize_t argc, wchar_t * const *argv) in PyConfig_SetArgv() argument
2863 return _PyConfig_SetPyArgv(config, &args); in PyConfig_SetArgv()
2868 PyConfig_SetWideStringList(PyConfig *config, PyWideStringList *list, in PyConfig_SetWideStringList() argument
2871 PyStatus status = _Py_PreInitializeFromConfig(config, NULL); in PyConfig_SetWideStringList()
2890 The only side effects are to modify config and to call _Py_SetArgcArgv(). */
2892 _PyConfig_Read(PyConfig *config, int compute_path_config) in _PyConfig_Read() argument
2896 status = _Py_PreInitializeFromConfig(config, NULL); in _PyConfig_Read()
2901 config_get_global_vars(config); in _PyConfig_Read()
2903 if (config->orig_argv.length == 0 in _PyConfig_Read()
2904 && !(config->argv.length == 1 in _PyConfig_Read()
2905 && wcscmp(config->argv.items[0], L"") == 0)) in _PyConfig_Read()
2907 if (_PyWideStringList_Copy(&config->orig_argv, &config->argv) < 0) { in _PyConfig_Read()
2913 status = core_read_precmdline(config, &precmdline); in _PyConfig_Read()
2918 assert(config->isolated >= 0); in _PyConfig_Read()
2919 if (config->isolated) { in _PyConfig_Read()
2920 config->use_environment = 0; in _PyConfig_Read()
2921 config->user_site_directory = 0; in _PyConfig_Read()
2924 status = config_read_cmdline(config); in _PyConfig_Read()
2930 status = _PySys_ReadPreinitXOptions(config); in _PyConfig_Read()
2935 status = config_read(config, compute_path_config); in _PyConfig_Read()
2940 assert(config_check_consistency(config)); in _PyConfig_Read()
2951 PyConfig_Read(PyConfig *config) in PyConfig_Read() argument
2953 return _PyConfig_Read(config, 1); in PyConfig_Read()
2978 /* pre config */ in _Py_GetConfigsAsDict()
2990 /* core config */ in _Py_GetConfigsAsDict()
2991 const PyConfig *config = _PyInterpreterState_GetConfig(interp); in _Py_GetConfigsAsDict() local
2992 dict = _PyConfig_AsDict(config); in _Py_GetConfigsAsDict()
2996 if (PyDict_SetItemString(result, "config", dict) < 0) { in _Py_GetConfigsAsDict()
3001 /* path config */ in _Py_GetConfigsAsDict()
3064 init_dump_ascii_wstr(config->FIELD); \ in _Py_DumpPathConfig()
3068 const PyConfig *config = _PyInterpreterState_GetConfig(tstate->interp); in _Py_DumpPathConfig() local
3072 PySys_WriteStderr(" isolated = %i\n", config->isolated); in _Py_DumpPathConfig()
3073 PySys_WriteStderr(" environment = %i\n", config->use_environment); in _Py_DumpPathConfig()
3074 PySys_WriteStderr(" user site = %i\n", config->user_site_directory); in _Py_DumpPathConfig()
3075 PySys_WriteStderr(" import site = %i\n", config->site_import); in _Py_DumpPathConfig()