Commit 720f34a3 authored by Victor Stinner's avatar Victor Stinner

Issue #5905: time.strftime() is now using the locale encoding, instead of

UTF-8, if the wcsftime() function is not available.
parent 383dd585
...@@ -90,6 +90,9 @@ Core and Builtins ...@@ -90,6 +90,9 @@ Core and Builtins
Library 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"..". - Issue #8641: Update IDLE 3 syntax coloring to recognize b".." and not u"..".
Patch by Tal Einat. Patch by Tal Einat.
......
...@@ -3,8 +3,6 @@ ...@@ -3,8 +3,6 @@
#include "Python.h" #include "Python.h"
#include "_time.h" #include "_time.h"
#define TZNAME_ENCODING "utf-8"
#include <ctype.h> #include <ctype.h>
#ifdef HAVE_SYS_TYPES_H #ifdef HAVE_SYS_TYPES_H
...@@ -48,8 +46,6 @@ static long main_thread; ...@@ -48,8 +46,6 @@ static long main_thread;
#if defined(MS_WINDOWS) && !defined(__BORLANDC__) #if defined(MS_WINDOWS) && !defined(__BORLANDC__)
/* Win32 has better clock replacement; we have our own version below. */ /* Win32 has better clock replacement; we have our own version below. */
#undef HAVE_CLOCK #undef HAVE_CLOCK
#undef TZNAME_ENCODING
#define TZNAME_ENCODING "mbcs"
#endif /* MS_WINDOWS && !defined(__BORLANDC__) */ #endif /* MS_WINDOWS && !defined(__BORLANDC__) */
#if defined(PYOS_OS2) #if defined(PYOS_OS2)
...@@ -502,7 +498,7 @@ time_strftime(PyObject *self, PyObject *args) ...@@ -502,7 +498,7 @@ time_strftime(PyObject *self, PyObject *args)
fmt = format; fmt = format;
#else #else
/* Convert the unicode string to an ascii one */ /* Convert the unicode string to an ascii one */
format = PyUnicode_AsEncodedString(format_arg, TZNAME_ENCODING, NULL); format = PyUnicode_EncodeFSDefault(format_arg);
if (format == NULL) if (format == NULL)
return NULL; return NULL;
fmt = PyBytes_AS_STRING(format); fmt = PyBytes_AS_STRING(format);
...@@ -546,8 +542,7 @@ time_strftime(PyObject *self, PyObject *args) ...@@ -546,8 +542,7 @@ time_strftime(PyObject *self, PyObject *args)
#ifdef HAVE_WCSFTIME #ifdef HAVE_WCSFTIME
ret = PyUnicode_FromWideChar(outbuf, buflen); ret = PyUnicode_FromWideChar(outbuf, buflen);
#else #else
ret = PyUnicode_Decode(outbuf, buflen, ret = PyUnicode_DecodeFSDefaultAndSize(outbuf, buflen);
TZNAME_ENCODING, NULL);
#endif #endif
PyMem_Free(outbuf); PyMem_Free(outbuf);
break; break;
...@@ -789,8 +784,8 @@ PyInit_timezone(PyObject *m) { ...@@ -789,8 +784,8 @@ PyInit_timezone(PyObject *m) {
#endif /* PYOS_OS2 */ #endif /* PYOS_OS2 */
#endif #endif
PyModule_AddIntConstant(m, "daylight", daylight); PyModule_AddIntConstant(m, "daylight", daylight);
otz0 = PyUnicode_Decode(tzname[0], strlen(tzname[0]), TZNAME_ENCODING, NULL); otz0 = PyUnicode_DecodeFSDefaultAndSize(tzname[0], strlen(tzname[0]));
otz1 = PyUnicode_Decode(tzname[1], strlen(tzname[1]), TZNAME_ENCODING, NULL); otz1 = PyUnicode_DecodeFSDefaultAndSize(tzname[1], strlen(tzname[1]));
PyModule_AddObject(m, "tzname", Py_BuildValue("(NN)", otz0, otz1)); PyModule_AddObject(m, "tzname", Py_BuildValue("(NN)", otz0, otz1));
#else /* !HAVE_TZNAME || __GLIBC__ || __CYGWIN__*/ #else /* !HAVE_TZNAME || __GLIBC__ || __CYGWIN__*/
#ifdef HAVE_STRUCT_TM_TM_ZONE #ifdef HAVE_STRUCT_TM_TM_ZONE
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment