Skip to content

Commit

Permalink
Issue python#9642: Uniformize the tests on the availability of the mb…
Browse files Browse the repository at this point in the history
…cs codec

Add a new HAVE_MBCS define.
  • Loading branch information
Victor Stinner committed Jul 4, 2011
1 parent 9122fdd commit 99b9538
Show file tree
Hide file tree
Showing 6 changed files with 22 additions and 15 deletions.
8 changes: 6 additions & 2 deletions Include/unicodeobject.h
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,10 @@ Copyright (c) Corporation for National Research Initiatives.
# endif
#endif

#if defined(MS_WINDOWS) && defined(HAVE_USABLE_WCHAR_T)
# define HAVE_MBCS
#endif

#ifdef HAVE_WCHAR_H
/* Work around a cosmetic bug in BSDI 4.x wchar.h; thanks to Thomas Wouters */
# ifdef _HAVE_BSDI
Expand Down Expand Up @@ -1162,7 +1166,7 @@ PyAPI_FUNC(PyObject *) PyUnicode_TranslateCharmap(
);
#endif

#ifdef MS_WIN32
#ifdef HAVE_MBCS

/* --- MBCS codecs for Windows -------------------------------------------- */

Expand Down Expand Up @@ -1191,7 +1195,7 @@ PyAPI_FUNC(PyObject*) PyUnicode_EncodeMBCS(
);
#endif

#endif /* MS_WIN32 */
#endif /* HAVE_MBCS */

/* --- Decimal Encoder ---------------------------------------------------- */

Expand Down
3 changes: 3 additions & 0 deletions Misc/NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@ What's New in Python 3.3 Alpha 1?
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
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)
Expand Down
10 changes: 5 additions & 5 deletions Modules/_codecsmodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -588,7 +588,7 @@ charmap_decode(PyObject *self,
return codec_tuple(unicode, pbuf.len);
}

#if defined(MS_WINDOWS) && defined(HAVE_USABLE_WCHAR_T)
#ifdef HAVE_MBCS

static PyObject *
mbcs_decode(PyObject *self,
Expand All @@ -613,7 +613,7 @@ mbcs_decode(PyObject *self,
return codec_tuple(decoded, consumed);
}

#endif /* MS_WINDOWS */
#endif /* HAVE_MBCS */

/* --- Encoder ------------------------------------------------------------ */

Expand Down Expand Up @@ -989,7 +989,7 @@ charmap_build(PyObject *self, PyObject *args)
return PyUnicode_BuildEncodingMap(map);
}

#if defined(MS_WINDOWS) && defined(HAVE_USABLE_WCHAR_T)
#ifdef HAVE_MBCS

static PyObject *
mbcs_encode(PyObject *self,
Expand All @@ -1014,7 +1014,7 @@ mbcs_encode(PyObject *self,
return v;
}

#endif /* MS_WINDOWS */
#endif /* HAVE_MBCS */

/* --- Error handler registry --------------------------------------------- */

Expand Down Expand Up @@ -1101,7 +1101,7 @@ static PyMethodDef _codecs_functions[] = {
{"charmap_decode", charmap_decode, METH_VARARGS},
{"charmap_build", charmap_build, 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_decode", mbcs_decode, METH_VARARGS},
#endif
Expand Down
2 changes: 1 addition & 1 deletion Modules/timemodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ static long main_thread;
#endif /* MS_WINDOWS */
#endif /* !__WATCOMC__ || __QNX__ */

#if defined(MS_WINDOWS)
#if defined(HAVE_MBCS)
# define TZNAME_ENCODING "mbcs"
#else
# define TZNAME_ENCODING "utf-8"
Expand Down
12 changes: 6 additions & 6 deletions Objects/unicodeobject.c
Original file line number Diff line number Diff line change
Expand Up @@ -1506,7 +1506,7 @@ PyUnicode_Decode(const char *s,
(strcmp(lower, "latin1") == 0) ||
(strcmp(lower, "iso-8859-1") == 0))
return PyUnicode_DecodeLatin1(s, size, errors);
#if defined(MS_WINDOWS) && defined(HAVE_USABLE_WCHAR_T)
#ifdef HAVE_MBCS
else if (strcmp(lower, "mbcs") == 0)
return PyUnicode_DecodeMBCS(s, size, errors);
#endif
Expand Down Expand Up @@ -1644,7 +1644,7 @@ PyUnicode_AsEncodedObject(PyObject *unicode,
PyObject *
PyUnicode_EncodeFSDefault(PyObject *unicode)
{
#if defined(MS_WINDOWS) && defined(HAVE_USABLE_WCHAR_T)
#ifdef HAVE_MBCS
return PyUnicode_EncodeMBCS(PyUnicode_AS_UNICODE(unicode),
PyUnicode_GET_SIZE(unicode),
NULL);
Expand Down Expand Up @@ -1746,7 +1746,7 @@ PyUnicode_AsEncodedString(PyObject *unicode,
return PyUnicode_EncodeLatin1(PyUnicode_AS_UNICODE(unicode),
PyUnicode_GET_SIZE(unicode),
errors);
#if defined(MS_WINDOWS) && defined(HAVE_USABLE_WCHAR_T)
#ifdef HAVE_MBCS
else if (strcmp(lower, "mbcs") == 0)
return PyUnicode_EncodeMBCS(PyUnicode_AS_UNICODE(unicode),
PyUnicode_GET_SIZE(unicode),
Expand Down Expand Up @@ -1848,7 +1848,7 @@ PyUnicode_DecodeFSDefault(const char *s) {
PyObject*
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);
#elif defined(__APPLE__)
return PyUnicode_DecodeUTF8(s, size, "surrogateescape");
Expand Down Expand Up @@ -4942,7 +4942,7 @@ PyUnicode_AsASCIIString(PyObject *unicode)
NULL);
}

#if defined(MS_WINDOWS) && defined(HAVE_USABLE_WCHAR_T)
#ifdef HAVE_MBCS

/* --- MBCS codecs for Windows -------------------------------------------- */

Expand Down Expand Up @@ -5229,7 +5229,7 @@ PyUnicode_AsMBCSString(PyObject *unicode)

#undef NEED_RETRY

#endif /* MS_WINDOWS */
#endif /* HAVE_MBCS */

/* --- Character Mapping Codec -------------------------------------------- */

Expand Down
2 changes: 1 addition & 1 deletion Python/bltinmodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
Don't forget to modify PyUnicode_DecodeFSDefault() if you touch any of the
values for Py_FileSystemDefaultEncoding!
*/
#if defined(MS_WINDOWS) && defined(HAVE_USABLE_WCHAR_T)
#ifdef HAVE_MBCS
const char *Py_FileSystemDefaultEncoding = "mbcs";
int Py_HasFileSystemDefaultEncoding = 1;
#elif defined(__APPLE__)
Expand Down

0 comments on commit 99b9538

Please sign in to comment.