summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@haypocalc.com>2011-12-09 19:19:24 (GMT)
committerVictor Stinner <victor.stinner@haypocalc.com>2011-12-09 19:19:24 (GMT)
commit720f34a3e8567ee7c46ee7d8752617168bfb5258 (patch)
treeaf07178adfbd921138d6e6c0f6678256bdf83d00
parent383dd58533465f7c1dea4f60e942f283267fd1ed (diff)
downloadcpython-720f34a3e8567ee7c46ee7d8752617168bfb5258.zip
cpython-720f34a3e8567ee7c46ee7d8752617168bfb5258.tar.gz
cpython-720f34a3e8567ee7c46ee7d8752617168bfb5258.tar.bz2
Issue #5905: time.strftime() is now using the locale encoding, instead of
UTF-8, if the wcsftime() function is not available.
-rw-r--r--Misc/NEWS3
-rw-r--r--Modules/timemodule.c13
2 files changed, 7 insertions, 9 deletions
diff --git a/Misc/NEWS b/Misc/NEWS
index 91fae45..6d18ddf 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -90,6 +90,9 @@ Core and Builtins
Library
-------
+- Issue #5905: time.strftime() is now using the locale encoding, instead of
+ UTF-8, if the wcsftime() function is not available.
+
- Issue #8641: Update IDLE 3 syntax coloring to recognize b".." and not u"..".
Patch by Tal Einat.
diff --git a/Modules/timemodule.c b/Modules/timemodule.c
index bc908c0..33751fa 100644
--- a/Modules/timemodule.c
+++ b/Modules/timemodule.c
@@ -3,8 +3,6 @@
#include "Python.h"
#include "_time.h"
-#define TZNAME_ENCODING "utf-8"
-
#include <ctype.h>
#ifdef HAVE_SYS_TYPES_H
@@ -48,8 +46,6 @@ static long main_thread;
#if defined(MS_WINDOWS) && !defined(__BORLANDC__)
/* Win32 has better clock replacement; we have our own version below. */
#undef HAVE_CLOCK
-#undef TZNAME_ENCODING
-#define TZNAME_ENCODING "mbcs"
#endif /* MS_WINDOWS && !defined(__BORLANDC__) */
#if defined(PYOS_OS2)
@@ -502,7 +498,7 @@ time_strftime(PyObject *self, PyObject *args)
fmt = format;
#else
/* Convert the unicode string to an ascii one */
- format = PyUnicode_AsEncodedString(format_arg, TZNAME_ENCODING, NULL);
+ format = PyUnicode_EncodeFSDefault(format_arg);
if (format == NULL)
return NULL;
fmt = PyBytes_AS_STRING(format);
@@ -546,8 +542,7 @@ time_strftime(PyObject *self, PyObject *args)
#ifdef HAVE_WCSFTIME
ret = PyUnicode_FromWideChar(outbuf, buflen);
#else
- ret = PyUnicode_Decode(outbuf, buflen,
- TZNAME_ENCODING, NULL);
+ ret = PyUnicode_DecodeFSDefaultAndSize(outbuf, buflen);
#endif
PyMem_Free(outbuf);
break;
@@ -789,8 +784,8 @@ PyInit_timezone(PyObject *m) {
#endif /* PYOS_OS2 */
#endif
PyModule_AddIntConstant(m, "daylight", daylight);
- otz0 = PyUnicode_Decode(tzname[0], strlen(tzname[0]), TZNAME_ENCODING, NULL);
- otz1 = PyUnicode_Decode(tzname[1], strlen(tzname[1]), TZNAME_ENCODING, NULL);
+ otz0 = PyUnicode_DecodeFSDefaultAndSize(tzname[0], strlen(tzname[0]));
+ otz1 = PyUnicode_DecodeFSDefaultAndSize(tzname[1], strlen(tzname[1]));
PyModule_AddObject(m, "tzname", Py_BuildValue("(NN)", otz0, otz1));
#else /* !HAVE_TZNAME || __GLIBC__ || __CYGWIN__*/
#ifdef HAVE_STRUCT_TM_TM_ZONE