From: Victor Stinner Date: Sun, 15 Aug 2010 09:33:08 +0000 (+0000) Subject: Issue #9605: posix.getlogin() decodes the username with file filesystem X-Git-Tag: v3.2a2~303 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e039ffe41d82c45c1e8a1be2973b9b1125f727f7;p=thirdparty%2FPython%2Fcpython.git Issue #9605: posix.getlogin() decodes the username with file filesystem encoding and surrogateescape error handler. Patch written by David Watson. Reindent also posix_getlogin(), and fix a typo in the NEWS file. --- diff --git a/Misc/NEWS b/Misc/NEWS index a322b3df1612..66942340e35c 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -83,6 +83,9 @@ Extensions Library ------- +- Issue #9605: posix.getlogin() decodes the username with file filesystem + encoding and surrogateescape error handler. Patch written by David Watson. + - Issue #9604: posix.initgroups() encodes the username using the fileystem encoding and surrogateescape error handler. Patch written by David Watson. @@ -317,7 +320,7 @@ Core and Builtins Fix a crash if an empty directory called "encodings" exists in sys.path. - Issue #8589: Decode PYTHONWARNINGS environment variable with the file system - encoding and surrogateespace error handler instead of the locale encoding to + encoding and surrogateescape error handler instead of the locale encoding to be consistent with os.environ. Add PySys_AddWarnOptionUnicode() function. - PyObject_Dump() encodes unicode objects to utf8 with backslashreplace (instead diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 71512896ecd7..73fab71ee212 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -4354,13 +4354,12 @@ posix_getlogin(PyObject *self, PyObject *noargs) name = getlogin(); if (name == NULL) { if (errno) - posix_error(); + posix_error(); else - PyErr_SetString(PyExc_OSError, - "unable to determine login name"); + PyErr_SetString(PyExc_OSError, "unable to determine login name"); } else - result = PyUnicode_FromString(name); + result = PyUnicode_DecodeFSDefault(name); errno = old_errno; return result;