Issue #9642: Uniformize the tests on the availability of the mbcs codec
Add a new HAVE_MBCS define.
This commit is contained in:
parent
9122fdd8fa
commit
99b9538636
|
@ -109,6 +109,10 @@ Copyright (c) Corporation for National Research Initiatives.
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(MS_WINDOWS) && defined(HAVE_USABLE_WCHAR_T)
|
||||||
|
# define HAVE_MBCS
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_WCHAR_H
|
#ifdef HAVE_WCHAR_H
|
||||||
/* Work around a cosmetic bug in BSDI 4.x wchar.h; thanks to Thomas Wouters */
|
/* Work around a cosmetic bug in BSDI 4.x wchar.h; thanks to Thomas Wouters */
|
||||||
# ifdef _HAVE_BSDI
|
# ifdef _HAVE_BSDI
|
||||||
|
@ -1162,7 +1166,7 @@ PyAPI_FUNC(PyObject *) PyUnicode_TranslateCharmap(
|
||||||
);
|
);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MS_WIN32
|
#ifdef HAVE_MBCS
|
||||||
|
|
||||||
/* --- MBCS codecs for Windows -------------------------------------------- */
|
/* --- MBCS codecs for Windows -------------------------------------------- */
|
||||||
|
|
||||||
|
@ -1191,7 +1195,7 @@ PyAPI_FUNC(PyObject*) PyUnicode_EncodeMBCS(
|
||||||
);
|
);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* MS_WIN32 */
|
#endif /* HAVE_MBCS */
|
||||||
|
|
||||||
/* --- Decimal Encoder ---------------------------------------------------- */
|
/* --- Decimal Encoder ---------------------------------------------------- */
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,9 @@ What's New in Python 3.3 Alpha 1?
|
||||||
Core and Builtins
|
Core and Builtins
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
|
- Issue #9642: Uniformize the tests on the availability of the mbcs codec, add
|
||||||
|
a new HAVE_MBCS define.
|
||||||
|
|
||||||
- Issue #9642: Fix filesystem encoding initialization: use the ANSI code page
|
- Issue #9642: Fix filesystem encoding initialization: use the ANSI code page
|
||||||
on Windows if the mbcs codec is not available, and fail with a fatal error if
|
on Windows if the mbcs codec is not available, and fail with a fatal error if
|
||||||
we cannot get the locale encoding (if nl_langinfo(CODESET) is not available)
|
we cannot get the locale encoding (if nl_langinfo(CODESET) is not available)
|
||||||
|
|
|
@ -588,7 +588,7 @@ charmap_decode(PyObject *self,
|
||||||
return codec_tuple(unicode, pbuf.len);
|
return codec_tuple(unicode, pbuf.len);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(MS_WINDOWS) && defined(HAVE_USABLE_WCHAR_T)
|
#ifdef HAVE_MBCS
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
mbcs_decode(PyObject *self,
|
mbcs_decode(PyObject *self,
|
||||||
|
@ -613,7 +613,7 @@ mbcs_decode(PyObject *self,
|
||||||
return codec_tuple(decoded, consumed);
|
return codec_tuple(decoded, consumed);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* MS_WINDOWS */
|
#endif /* HAVE_MBCS */
|
||||||
|
|
||||||
/* --- Encoder ------------------------------------------------------------ */
|
/* --- Encoder ------------------------------------------------------------ */
|
||||||
|
|
||||||
|
@ -989,7 +989,7 @@ charmap_build(PyObject *self, PyObject *args)
|
||||||
return PyUnicode_BuildEncodingMap(map);
|
return PyUnicode_BuildEncodingMap(map);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(MS_WINDOWS) && defined(HAVE_USABLE_WCHAR_T)
|
#ifdef HAVE_MBCS
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
mbcs_encode(PyObject *self,
|
mbcs_encode(PyObject *self,
|
||||||
|
@ -1014,7 +1014,7 @@ mbcs_encode(PyObject *self,
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* MS_WINDOWS */
|
#endif /* HAVE_MBCS */
|
||||||
|
|
||||||
/* --- Error handler registry --------------------------------------------- */
|
/* --- Error handler registry --------------------------------------------- */
|
||||||
|
|
||||||
|
@ -1101,7 +1101,7 @@ static PyMethodDef _codecs_functions[] = {
|
||||||
{"charmap_decode", charmap_decode, METH_VARARGS},
|
{"charmap_decode", charmap_decode, METH_VARARGS},
|
||||||
{"charmap_build", charmap_build, METH_VARARGS},
|
{"charmap_build", charmap_build, METH_VARARGS},
|
||||||
{"readbuffer_encode", readbuffer_encode, METH_VARARGS},
|
{"readbuffer_encode", readbuffer_encode, METH_VARARGS},
|
||||||
#if defined(MS_WINDOWS) && defined(HAVE_USABLE_WCHAR_T)
|
#ifdef HAVE_MBCS
|
||||||
{"mbcs_encode", mbcs_encode, METH_VARARGS},
|
{"mbcs_encode", mbcs_encode, METH_VARARGS},
|
||||||
{"mbcs_decode", mbcs_decode, METH_VARARGS},
|
{"mbcs_decode", mbcs_decode, METH_VARARGS},
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -43,7 +43,7 @@ static long main_thread;
|
||||||
#endif /* MS_WINDOWS */
|
#endif /* MS_WINDOWS */
|
||||||
#endif /* !__WATCOMC__ || __QNX__ */
|
#endif /* !__WATCOMC__ || __QNX__ */
|
||||||
|
|
||||||
#if defined(MS_WINDOWS)
|
#if defined(HAVE_MBCS)
|
||||||
# define TZNAME_ENCODING "mbcs"
|
# define TZNAME_ENCODING "mbcs"
|
||||||
#else
|
#else
|
||||||
# define TZNAME_ENCODING "utf-8"
|
# define TZNAME_ENCODING "utf-8"
|
||||||
|
|
|
@ -1506,7 +1506,7 @@ PyUnicode_Decode(const char *s,
|
||||||
(strcmp(lower, "latin1") == 0) ||
|
(strcmp(lower, "latin1") == 0) ||
|
||||||
(strcmp(lower, "iso-8859-1") == 0))
|
(strcmp(lower, "iso-8859-1") == 0))
|
||||||
return PyUnicode_DecodeLatin1(s, size, errors);
|
return PyUnicode_DecodeLatin1(s, size, errors);
|
||||||
#if defined(MS_WINDOWS) && defined(HAVE_USABLE_WCHAR_T)
|
#ifdef HAVE_MBCS
|
||||||
else if (strcmp(lower, "mbcs") == 0)
|
else if (strcmp(lower, "mbcs") == 0)
|
||||||
return PyUnicode_DecodeMBCS(s, size, errors);
|
return PyUnicode_DecodeMBCS(s, size, errors);
|
||||||
#endif
|
#endif
|
||||||
|
@ -1644,7 +1644,7 @@ PyUnicode_AsEncodedObject(PyObject *unicode,
|
||||||
PyObject *
|
PyObject *
|
||||||
PyUnicode_EncodeFSDefault(PyObject *unicode)
|
PyUnicode_EncodeFSDefault(PyObject *unicode)
|
||||||
{
|
{
|
||||||
#if defined(MS_WINDOWS) && defined(HAVE_USABLE_WCHAR_T)
|
#ifdef HAVE_MBCS
|
||||||
return PyUnicode_EncodeMBCS(PyUnicode_AS_UNICODE(unicode),
|
return PyUnicode_EncodeMBCS(PyUnicode_AS_UNICODE(unicode),
|
||||||
PyUnicode_GET_SIZE(unicode),
|
PyUnicode_GET_SIZE(unicode),
|
||||||
NULL);
|
NULL);
|
||||||
|
@ -1746,7 +1746,7 @@ PyUnicode_AsEncodedString(PyObject *unicode,
|
||||||
return PyUnicode_EncodeLatin1(PyUnicode_AS_UNICODE(unicode),
|
return PyUnicode_EncodeLatin1(PyUnicode_AS_UNICODE(unicode),
|
||||||
PyUnicode_GET_SIZE(unicode),
|
PyUnicode_GET_SIZE(unicode),
|
||||||
errors);
|
errors);
|
||||||
#if defined(MS_WINDOWS) && defined(HAVE_USABLE_WCHAR_T)
|
#ifdef HAVE_MBCS
|
||||||
else if (strcmp(lower, "mbcs") == 0)
|
else if (strcmp(lower, "mbcs") == 0)
|
||||||
return PyUnicode_EncodeMBCS(PyUnicode_AS_UNICODE(unicode),
|
return PyUnicode_EncodeMBCS(PyUnicode_AS_UNICODE(unicode),
|
||||||
PyUnicode_GET_SIZE(unicode),
|
PyUnicode_GET_SIZE(unicode),
|
||||||
|
@ -1848,7 +1848,7 @@ PyUnicode_DecodeFSDefault(const char *s) {
|
||||||
PyObject*
|
PyObject*
|
||||||
PyUnicode_DecodeFSDefaultAndSize(const char *s, Py_ssize_t size)
|
PyUnicode_DecodeFSDefaultAndSize(const char *s, Py_ssize_t size)
|
||||||
{
|
{
|
||||||
#if defined(MS_WINDOWS) && defined(HAVE_USABLE_WCHAR_T)
|
#ifdef HAVE_MBCS
|
||||||
return PyUnicode_DecodeMBCS(s, size, NULL);
|
return PyUnicode_DecodeMBCS(s, size, NULL);
|
||||||
#elif defined(__APPLE__)
|
#elif defined(__APPLE__)
|
||||||
return PyUnicode_DecodeUTF8(s, size, "surrogateescape");
|
return PyUnicode_DecodeUTF8(s, size, "surrogateescape");
|
||||||
|
@ -4942,7 +4942,7 @@ PyUnicode_AsASCIIString(PyObject *unicode)
|
||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(MS_WINDOWS) && defined(HAVE_USABLE_WCHAR_T)
|
#ifdef HAVE_MBCS
|
||||||
|
|
||||||
/* --- MBCS codecs for Windows -------------------------------------------- */
|
/* --- MBCS codecs for Windows -------------------------------------------- */
|
||||||
|
|
||||||
|
@ -5229,7 +5229,7 @@ PyUnicode_AsMBCSString(PyObject *unicode)
|
||||||
|
|
||||||
#undef NEED_RETRY
|
#undef NEED_RETRY
|
||||||
|
|
||||||
#endif /* MS_WINDOWS */
|
#endif /* HAVE_MBCS */
|
||||||
|
|
||||||
/* --- Character Mapping Codec -------------------------------------------- */
|
/* --- Character Mapping Codec -------------------------------------------- */
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
Don't forget to modify PyUnicode_DecodeFSDefault() if you touch any of the
|
Don't forget to modify PyUnicode_DecodeFSDefault() if you touch any of the
|
||||||
values for Py_FileSystemDefaultEncoding!
|
values for Py_FileSystemDefaultEncoding!
|
||||||
*/
|
*/
|
||||||
#if defined(MS_WINDOWS) && defined(HAVE_USABLE_WCHAR_T)
|
#ifdef HAVE_MBCS
|
||||||
const char *Py_FileSystemDefaultEncoding = "mbcs";
|
const char *Py_FileSystemDefaultEncoding = "mbcs";
|
||||||
int Py_HasFileSystemDefaultEncoding = 1;
|
int Py_HasFileSystemDefaultEncoding = 1;
|
||||||
#elif defined(__APPLE__)
|
#elif defined(__APPLE__)
|
||||||
|
|
Loading…
Reference in New Issue