summaryrefslogtreecommitdiff
path: root/Python/coreconfig.c
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@redhat.com>2019-05-01 02:30:12 +0200
committerGitHub <noreply@github.com>2019-05-01 02:30:12 +0200
commit5f38b8407b071acd96da2c8cde411d0e26967735 (patch)
treecac8a6046fcef2a6b0f1efb56714c4750c90bdb6 /Python/coreconfig.c
parent463b82a3efe8a6a9f3924a5b37482e961dffe3b8 (diff)
downloadcpython-git-5f38b8407b071acd96da2c8cde411d0e26967735.tar.gz
bpo-36763: Add _PyCoreConfig_SetArgv() (GH-13030)
* Add 2 new config methods: * _PyCoreConfig_SetArgv() * _PyCoreConfig_SetWideArgv() * Add also an internal _PyCoreConfig_SetPyArgv() method. * Remove 'args' parameter from _PyCoreConfig_Read().
Diffstat (limited to 'Python/coreconfig.c')
-rw-r--r--Python/coreconfig.c45
1 files changed, 34 insertions, 11 deletions
diff --git a/Python/coreconfig.c b/Python/coreconfig.c
index 471d5126f8..750676a473 100644
--- a/Python/coreconfig.c
+++ b/Python/coreconfig.c
@@ -2003,8 +2003,7 @@ config_init_argv(_PyCoreConfig *config, const _PyPreCmdline *cmdline)
static _PyInitError
-core_read_precmdline(_PyCoreConfig *config, const _PyArgv *args,
- _PyPreCmdline *precmdline)
+core_read_precmdline(_PyCoreConfig *config, _PyPreCmdline *precmdline)
{
_PyInitError err;
@@ -2072,23 +2071,47 @@ done:
}
+_PyInitError
+_PyCoreConfig_SetPyArgv(_PyCoreConfig *config, const _PyArgv *args)
+{
+ return _PyArgv_AsWstrList(args, &config->argv);
+}
+
+
+_PyInitError
+_PyCoreConfig_SetArgv(_PyCoreConfig *config, int argc, char **argv)
+{
+ _PyArgv args = {
+ .argc = argc,
+ .use_bytes_argv = 1,
+ .bytes_argv = argv,
+ .wchar_argv = NULL};
+ return _PyCoreConfig_SetPyArgv(config, &args);
+}
+
+
+_PyInitError
+_PyCoreConfig_SetWideArgv(_PyCoreConfig *config, int argc, wchar_t **argv)
+{
+ _PyArgv args = {
+ .argc = argc,
+ .use_bytes_argv = 0,
+ .bytes_argv = NULL,
+ .wchar_argv = argv};
+ return _PyCoreConfig_SetPyArgv(config, &args);
+}
+
+
/* Read the configuration into _PyCoreConfig from:
* Command line arguments
* Environment variables
* Py_xxx global configuration variables */
_PyInitError
-_PyCoreConfig_Read(_PyCoreConfig *config, const _PyArgv *args)
+_PyCoreConfig_Read(_PyCoreConfig *config)
{
_PyInitError err;
- if (args) {
- err = _PyArgv_AsWstrList(args, &config->argv);
- if (_Py_INIT_FAILED(err)) {
- return err;
- }
- }
-
err = _Py_PreInitializeFromCoreConfig(config);
if (_Py_INIT_FAILED(err)) {
return err;
@@ -2097,7 +2120,7 @@ _PyCoreConfig_Read(_PyCoreConfig *config, const _PyArgv *args)
_PyCoreConfig_GetGlobalConfig(config);
_PyPreCmdline precmdline = _PyPreCmdline_INIT;
- err = core_read_precmdline(config, args, &precmdline);
+ err = core_read_precmdline(config, &precmdline);
if (_Py_INIT_FAILED(err)) {
goto done;
}