summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2020-01-22 20:11:17 (GMT)
committerGitHub <noreply@github.com>2020-01-22 20:11:17 (GMT)
commitb73dd02ea744288831f71363a7467552c09875ea (patch)
tree7fb902e5dc770d760f7a67e4c8ed469102d43380 /Modules
parentbeea26b57e8c80f1eff0f967a0f9d083a7dc3d66 (diff)
downloadcpython-b73dd02ea744288831f71363a7467552c09875ea.zip
cpython-b73dd02ea744288831f71363a7467552c09875ea.tar.gz
cpython-b73dd02ea744288831f71363a7467552c09875ea.tar.bz2
Revert "bpo-39413: Implement os.unsetenv() on Windows (GH-18104)" (GH-18124)
This reverts commit 56cd3710a1ea3ba872d345ea1bebc86ed08bc8b8.
Diffstat (limited to 'Modules')
-rw-r--r--Modules/clinic/posixmodule.c.h42
-rw-r--r--Modules/posixmodule.c46
2 files changed, 4 insertions, 84 deletions
diff --git a/Modules/clinic/posixmodule.c.h b/Modules/clinic/posixmodule.c.h
index 661d91a..aa4756a 100644
--- a/Modules/clinic/posixmodule.c.h
+++ b/Modules/clinic/posixmodule.c.h
@@ -6125,43 +6125,7 @@ exit:
#endif /* defined(HAVE_PUTENV) && !defined(MS_WINDOWS) */
-#if defined(MS_WINDOWS)
-
-PyDoc_STRVAR(os_unsetenv__doc__,
-"unsetenv($module, name, /)\n"
-"--\n"
-"\n"
-"Delete an environment variable.");
-
-#define OS_UNSETENV_METHODDEF \
- {"unsetenv", (PyCFunction)os_unsetenv, METH_O, os_unsetenv__doc__},
-
-static PyObject *
-os_unsetenv_impl(PyObject *module, PyObject *name);
-
-static PyObject *
-os_unsetenv(PyObject *module, PyObject *arg)
-{
- PyObject *return_value = NULL;
- PyObject *name;
-
- if (!PyUnicode_Check(arg)) {
- _PyArg_BadArgument("unsetenv", "argument", "str", arg);
- goto exit;
- }
- if (PyUnicode_READY(arg) == -1) {
- goto exit;
- }
- name = arg;
- return_value = os_unsetenv_impl(module, name);
-
-exit:
- return return_value;
-}
-
-#endif /* defined(MS_WINDOWS) */
-
-#if (defined(HAVE_UNSETENV) && !defined(MS_WINDOWS))
+#if defined(HAVE_UNSETENV)
PyDoc_STRVAR(os_unsetenv__doc__,
"unsetenv($module, name, /)\n"
@@ -6193,7 +6157,7 @@ exit:
return return_value;
}
-#endif /* (defined(HAVE_UNSETENV) && !defined(MS_WINDOWS)) */
+#endif /* defined(HAVE_UNSETENV) */
PyDoc_STRVAR(os_strerror__doc__,
"strerror($module, code, /)\n"
@@ -8809,4 +8773,4 @@ exit:
#ifndef OS__REMOVE_DLL_DIRECTORY_METHODDEF
#define OS__REMOVE_DLL_DIRECTORY_METHODDEF
#endif /* !defined(OS__REMOVE_DLL_DIRECTORY_METHODDEF) */
-/*[clinic end generated code: output=6e739a2715712e88 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=51ba5b9536420cea input=a9049054013a1b77]*/
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 5a0c8a3..e0eecfa 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -10180,51 +10180,7 @@ os_putenv_impl(PyObject *module, PyObject *name, PyObject *value)
#endif /* HAVE_PUTENV */
-#ifdef MS_WINDOWS
-/*[clinic input]
-os.unsetenv
- name: unicode
- /
-
-Delete an environment variable.
-[clinic start generated code]*/
-
-static PyObject *
-os_unsetenv_impl(PyObject *module, PyObject *name)
-/*[clinic end generated code: output=54c4137ab1834f02 input=4d6a1747cc526d2f]*/
-{
- /* PyUnicode_AsWideCharString() rejects embedded null characters */
- wchar_t *name_str = PyUnicode_AsWideCharString(name, NULL);
- if (name_str == NULL) {
- return NULL;
- }
-
- BOOL ok = SetEnvironmentVariableW(name_str, NULL);
- PyMem_Free(name_str);
-
- if (!ok) {
- return PyErr_SetFromWindowsErr(0);
- }
-
-#ifdef PY_PUTENV_DICT
- /* Remove the key from putenv_dict;
- * this will cause it to be collected. This has to
- * happen after the real unsetenv() call because the
- * old value was still accessible until then.
- */
- if (PyDict_DelItem(_posixstate(module)->putenv_dict, name)) {
- /* really not much we can do; just leak */
- if (!PyErr_ExceptionMatches(PyExc_KeyError)) {
- return NULL;
- }
- PyErr_Clear();
- }
-#endif
-
- Py_RETURN_NONE;
-}
-/* repeat !defined(MS_WINDOWS) to workaround an Argument Clinic issue */
-#elif defined(HAVE_UNSETENV) && !defined(MS_WINDOWS)
+#ifdef HAVE_UNSETENV
/*[clinic input]
os.unsetenv
name: FSConverter