Issue #14153 Create _Py_device_encoding() to prevent _io from having to import
the os module.
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index dbace1a..628b0b9 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -9326,35 +9326,11 @@
device_encoding(PyObject *self, PyObject *args)
{
int fd;
-#if defined(MS_WINDOWS) || defined(MS_WIN64)
- UINT cp;
-#endif
+
if (!PyArg_ParseTuple(args, "i:device_encoding", &fd))
return NULL;
- if (!_PyVerify_fd(fd) || !isatty(fd)) {
- Py_INCREF(Py_None);
- return Py_None;
- }
-#if defined(MS_WINDOWS) || defined(MS_WIN64)
- if (fd == 0)
- cp = GetConsoleCP();
- else if (fd == 1 || fd == 2)
- cp = GetConsoleOutputCP();
- else
- cp = 0;
- /* GetConsoleCP() and GetConsoleOutputCP() return 0 if the application
- has no console */
- if (cp != 0)
- return PyUnicode_FromFormat("cp%u", (unsigned int)cp);
-#elif defined(CODESET)
- {
- char *codeset = nl_langinfo(CODESET);
- if (codeset != NULL && codeset[0] != 0)
- return PyUnicode_FromString(codeset);
- }
-#endif
- Py_INCREF(Py_None);
- return Py_None;
+
+ return _Py_device_encoding(fd);
}
#ifdef __VMS