gh-77782: Py_FdIsInteractive() now uses PyConfig.interactive (#93916)

This commit is contained in:
Victor Stinner 2022-06-17 15:19:28 +02:00 committed by GitHub
parent c5b750dc0b
commit 1735710873
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 29 additions and 23 deletions

View file

@ -347,9 +347,9 @@ void _Py_NO_RETURN
_Py_FatalError_TstateNULL(const char *func)
{
_Py_FatalErrorFunc(func,
"the function must be called with the GIL held, "
"but the GIL is released "
"(the current Python thread state is NULL)");
"the function must be called with the GIL held, "
"after Python initialization and before Python finalization, "
"but the GIL is released (the current Python thread state is NULL)");
}
int

View file

@ -180,7 +180,7 @@ int Py_UTF8Mode = 0;
int Py_DebugFlag = 0; /* Needed by parser.c */
int Py_VerboseFlag = 0; /* Needed by import.c */
int Py_QuietFlag = 0; /* Needed by sysmodule.c */
int Py_InteractiveFlag = 0; /* Needed by Py_FdIsInteractive() below */
int Py_InteractiveFlag = 0; /* Previously, was used by Py_FdIsInteractive() */
int Py_InspectFlag = 0; /* Needed to determine whether to exit at SystemExit */
int Py_OptimizeFlag = 0; /* Needed by compile.c */
int Py_NoSiteFlag = 0; /* Suppress 'import site' */

View file

@ -2938,28 +2938,30 @@ Py_Exit(int sts)
int
Py_FdIsInteractive(FILE *fp, const char *filename)
{
if (isatty((int)fileno(fp)))
if (isatty(fileno(fp))) {
return 1;
if (!Py_InteractiveFlag)
}
if (!_Py_GetConfig()->interactive) {
return 0;
return (filename == NULL) ||
(strcmp(filename, "<stdin>") == 0) ||
(strcmp(filename, "???") == 0);
}
return ((filename == NULL)
|| (strcmp(filename, "<stdin>") == 0)
|| (strcmp(filename, "???") == 0));
}
int
_Py_FdIsInteractive(FILE *fp, PyObject *filename)
{
if (isatty((int)fileno(fp))) {
if (isatty(fileno(fp))) {
return 1;
}
if (!Py_InteractiveFlag) {
if (!_Py_GetConfig()->interactive) {
return 0;
}
return (filename == NULL) ||
(PyUnicode_CompareWithASCIIString(filename, "<stdin>") == 0) ||
(PyUnicode_CompareWithASCIIString(filename, "???") == 0);
return ((filename == NULL)
|| (PyUnicode_CompareWithASCIIString(filename, "<stdin>") == 0)
|| (PyUnicode_CompareWithASCIIString(filename, "???") == 0));
}

View file

@ -2136,6 +2136,7 @@ _Py_GetConfig(void)
{
assert(PyGILState_Check());
PyThreadState *tstate = _PyThreadState_GET();
_Py_EnsureTstateNotNULL(tstate);
return _PyInterpreterState_GetConfig(tstate->interp);
}