diff options
author | Victor Stinner <vstinner@python.org> | 2020-06-08 16:12:59 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-08 16:12:59 (GMT) |
commit | e81f6e687d0f04a45f2389d0b43fafd6d8491624 (patch) | |
tree | 58e75c8ff552241a84bb1f9b1904e06b1c88527f /Include/cpython/initconfig.h | |
parent | 8f023a2f664f902a3d0b7a6f64d63afc0d1c15ae (diff) | |
download | cpython-e81f6e687d0f04a45f2389d0b43fafd6d8491624.zip cpython-e81f6e687d0f04a45f2389d0b43fafd6d8491624.tar.gz cpython-e81f6e687d0f04a45f2389d0b43fafd6d8491624.tar.bz2 |
bpo-40910: Export Py_GetArgcArgv() function (GH-20721)
Export explicitly the Py_GetArgcArgv() function to the C API and
document the function. Previously, it was exported implicitly which
no longer works since Python is built with -fvisibility=hidden.
* Add PyConfig._orig_argv member.
* Py_InitializeFromConfig() no longer calls _PyConfig_Write() twice.
* PyConfig_Read() no longer initializes Py_GetArgcArgv(): it is now
_PyConfig_Write() responsibility.
* _PyConfig_Write() result type becomes PyStatus instead of void.
* Write an unit test on Py_GetArgcArgv().
Diffstat (limited to 'Include/cpython/initconfig.h')
-rw-r--r-- | Include/cpython/initconfig.h | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/Include/cpython/initconfig.h b/Include/cpython/initconfig.h index 563c2ba..5793321 100644 --- a/Include/cpython/initconfig.h +++ b/Include/cpython/initconfig.h @@ -411,6 +411,14 @@ typedef struct { /* If non-zero, disallow threads, subprocesses, and fork. Default: 0. */ int _isolated_interpreter; + + /* Original command line arguments. If _orig_argv is empty and _argv is + not equal to [''], PyConfig_Read() copies the configuration 'argv' list + into '_orig_argv' list before modifying 'argv' list (if parse_argv + is non-zero). + + _PyConfig_Write() initializes Py_GetArgcArgv() to this list. */ + PyWideStringList _orig_argv; } PyConfig; PyAPI_FUNC(void) PyConfig_InitPythonConfig(PyConfig *config); @@ -436,5 +444,13 @@ PyAPI_FUNC(PyStatus) PyConfig_SetWideStringList(PyConfig *config, PyWideStringList *list, Py_ssize_t length, wchar_t **items); + +/* --- Helper functions --------------------------------------- */ + +/* Get the original command line arguments, before Python modified them. + + See also PyConfig._orig_argv. */ +PyAPI_FUNC(void) Py_GetArgcArgv(int *argc, wchar_t ***argv); + #endif /* !Py_LIMITED_API */ #endif /* !Py_PYCORECONFIG_H */ |