diff --git a/Modules/cjkcodecs/README b/Modules/cjkcodecs/README index a62aa705eea..024562916f3 100644 --- a/Modules/cjkcodecs/README +++ b/Modules/cjkcodecs/README @@ -2,7 +2,7 @@ Notes on cjkcodecs ------------------- This directory contains source files for cjkcodecs extension modules. They are based on CJKCodecs (http://cjkpython.i18n.org/#CJKCodecs) -as of Jul 18 2004 currently. +as of Aug 20 2004 currently. diff --git a/Modules/cjkcodecs/_codecs_hk.c b/Modules/cjkcodecs/_codecs_hk.c index 9daa87f9280..87441673022 100644 --- a/Modules/cjkcodecs/_codecs_hk.c +++ b/Modules/cjkcodecs/_codecs_hk.c @@ -2,7 +2,7 @@ * _codecs_hk.c: Codecs collection for encodings from Hong Kong * * Written by Hye-Shik Chang - * $CJKCodecs: _codecs_hk.c,v 1.3 2004/07/07 14:59:26 perky Exp $ + * $CJKCodecs: _codecs_hk.c,v 1.4 2004/07/18 04:44:27 perky Exp $ */ #define USING_IMPORTED_MAPS diff --git a/Modules/cjkcodecs/_codecs_iso2022.c b/Modules/cjkcodecs/_codecs_iso2022.c index bef11df17a4..5cee8ce2c4e 100644 --- a/Modules/cjkcodecs/_codecs_iso2022.c +++ b/Modules/cjkcodecs/_codecs_iso2022.c @@ -2,7 +2,7 @@ * _codecs_iso2022.c: Codecs collection for ISO-2022 encodings. * * Written by Hye-Shik Chang - * $CJKCodecs: _codecs_iso2022.c,v 1.18 2004/07/07 18:30:17 perky Exp $ + * $CJKCodecs: _codecs_iso2022.c,v 1.22 2004/08/19 17:08:13 perky Exp $ */ #define USING_IMPORTED_MAPS @@ -117,7 +117,7 @@ struct iso2022_designation { struct iso2022_config { int flags; - const struct iso2022_designation designations[]; /* non-ascii desigs */ + const struct iso2022_designation *designations; /* non-ascii desigs */ }; /*-*- iso-2022 codec implementation -*-*/ @@ -197,7 +197,9 @@ ENCODER(iso2022) length = 2; #if Py_UNICODE_SIZE == 2 if (length == 2) { - ucs4_t u4in[2] = {IN1, IN2}; + ucs4_t u4in[2]; + u4in[0] = (ucs4_t)IN1; + u4in[1] = (ucs4_t)IN2; encoded = dsg->encoder(u4in, &length); } else encoded = dsg->encoder(&c, &length); @@ -420,7 +422,7 @@ iso2022processg2(const void *config, MultibyteCodec_State *state, DECODER(iso2022) { const struct iso2022_designation *dsgcache = NULL; - + while (inleft > 0) { unsigned char c = IN1; int err; @@ -1047,50 +1049,52 @@ dummy_encoder(const ucs4_t *data, int *length) #define REGISTRY_ISO8859_7 { CHARSET_ISO8859_7, 2, 1, \ NULL, dummy_decoder, dummy_encoder } #define REGISTRY_SENTINEL { 0, } +#define CONFIGDEF(var, attrs) \ + static const struct iso2022_config iso2022_##var##_config = { \ + attrs, iso2022_##var##_designations \ + }; -static const struct iso2022_config iso2022_kr_config = { - 0, - { REGISTRY_KSX1001, REGISTRY_SENTINEL }, +static const struct iso2022_designation iso2022_kr_designations[] = { + REGISTRY_KSX1001, REGISTRY_SENTINEL }; +CONFIGDEF(kr, 0) -static const struct iso2022_config iso2022_jp_config = { - NO_SHIFT | USE_JISX0208_EXT, - { REGISTRY_JISX0208, REGISTRY_JISX0201_R, REGISTRY_JISX0208_O, - REGISTRY_SENTINEL }, +static const struct iso2022_designation iso2022_jp_designations[] = { + REGISTRY_JISX0208, REGISTRY_JISX0201_R, REGISTRY_JISX0208_O, + REGISTRY_SENTINEL }; +CONFIGDEF(jp, NO_SHIFT | USE_JISX0208_EXT) -static const struct iso2022_config iso2022_jp_1_config = { - NO_SHIFT | USE_JISX0208_EXT, - { REGISTRY_JISX0208, REGISTRY_JISX0212, REGISTRY_JISX0201_R, - REGISTRY_JISX0208_O, REGISTRY_SENTINEL }, +static const struct iso2022_designation iso2022_jp_1_designations[] = { + REGISTRY_JISX0208, REGISTRY_JISX0212, REGISTRY_JISX0201_R, + REGISTRY_JISX0208_O, REGISTRY_SENTINEL }; +CONFIGDEF(jp_1, NO_SHIFT | USE_JISX0208_EXT) -static const struct iso2022_config iso2022_jp_2_config = { - NO_SHIFT | USE_G2 | USE_JISX0208_EXT, - { REGISTRY_JISX0208, REGISTRY_JISX0212, REGISTRY_KSX1001, - REGISTRY_GB2312, REGISTRY_JISX0201_R, REGISTRY_JISX0208_O, - REGISTRY_ISO8859_1, REGISTRY_ISO8859_7, REGISTRY_SENTINEL }, +static const struct iso2022_designation iso2022_jp_2_designations[] = { + REGISTRY_JISX0208, REGISTRY_JISX0212, REGISTRY_KSX1001, + REGISTRY_GB2312, REGISTRY_JISX0201_R, REGISTRY_JISX0208_O, + REGISTRY_ISO8859_1, REGISTRY_ISO8859_7, REGISTRY_SENTINEL }; +CONFIGDEF(jp_2, NO_SHIFT | USE_G2 | USE_JISX0208_EXT) -static const struct iso2022_config iso2022_jp_2004_config = { - NO_SHIFT | USE_G2 | USE_JISX0208_EXT, - { REGISTRY_JISX0213_2004_1_PAIRONLY, REGISTRY_JISX0208, - REGISTRY_JISX0213_2004_1, REGISTRY_JISX0213_2004_2, - REGISTRY_SENTINEL }, +static const struct iso2022_designation iso2022_jp_2004_designations[] = { + REGISTRY_JISX0213_2004_1_PAIRONLY, REGISTRY_JISX0208, + REGISTRY_JISX0213_2004_1, REGISTRY_JISX0213_2004_2, REGISTRY_SENTINEL }; +CONFIGDEF(jp_2004, NO_SHIFT | USE_JISX0208_EXT) -static const struct iso2022_config iso2022_jp_3_config = { - NO_SHIFT | USE_JISX0208_EXT, - { REGISTRY_JISX0213_2000_1_PAIRONLY, REGISTRY_JISX0208, - REGISTRY_JISX0213_2000_1, REGISTRY_JISX0213_2000_2, - REGISTRY_SENTINEL }, +static const struct iso2022_designation iso2022_jp_3_designations[] = { + REGISTRY_JISX0213_2000_1_PAIRONLY, REGISTRY_JISX0208, + REGISTRY_JISX0213_2000_1, REGISTRY_JISX0213_2000_2, REGISTRY_SENTINEL }; +CONFIGDEF(jp_3, NO_SHIFT | USE_JISX0208_EXT) -static const struct iso2022_config iso2022_jp_ext_config = { - NO_SHIFT | USE_JISX0208_EXT, - { REGISTRY_JISX0208, REGISTRY_JISX0212, REGISTRY_JISX0201_R, - REGISTRY_JISX0201_K, REGISTRY_JISX0208_O, REGISTRY_SENTINEL }, +static const struct iso2022_designation iso2022_jp_ext_designations[] = { + REGISTRY_JISX0208, REGISTRY_JISX0212, REGISTRY_JISX0201_R, + REGISTRY_JISX0201_K, REGISTRY_JISX0208_O, REGISTRY_SENTINEL }; +CONFIGDEF(jp_ext, NO_SHIFT | USE_JISX0208_EXT) BEGIN_MAPPINGS_LIST diff --git a/Modules/cjkcodecs/cjkcodecs.h b/Modules/cjkcodecs/cjkcodecs.h index 7d7ad8154f0..32ac144c68a 100644 --- a/Modules/cjkcodecs/cjkcodecs.h +++ b/Modules/cjkcodecs/cjkcodecs.h @@ -2,7 +2,7 @@ * cjkcodecs.h: common header for cjkcodecs * * Written by Hye-Shik Chang - * $CJKCodecs: cjkcodecs.h,v 1.5 2004/07/06 17:05:24 perky Exp $ + * $CJKCodecs: cjkcodecs.h,v 1.6 2004/07/18 15:22:31 perky Exp $ */ #ifndef _CJKCODECS_H_ @@ -230,7 +230,7 @@ static const struct dbcs_map *mapping_list; }, #define END_CODECS_LIST \ {"", NULL,} }; \ - static const MultibyteCodec *codec_list = \ + static const MultibyteCodec *codec_list = \ (const MultibyteCodec *)_codec_list; static PyObject * diff --git a/Modules/cjkcodecs/multibytecodec.c b/Modules/cjkcodecs/multibytecodec.c index 58b16a3ab7f..4444941bde5 100644 --- a/Modules/cjkcodecs/multibytecodec.c +++ b/Modules/cjkcodecs/multibytecodec.c @@ -2,7 +2,7 @@ * multibytecodec.c: Common Multibyte Codec Implementation * * Written by Hye-Shik Chang - * $CJKCodecs: multibytecodec.c,v 1.12 2004/06/27 19:24:13 perky Exp $ + * $CJKCodecs: multibytecodec.c,v 1.13 2004/08/19 16:57:19 perky Exp $ */ #include "Python.h" @@ -338,7 +338,7 @@ multibytecodec_decerror(MultibyteCodec *codec, /* use cached exception object if available */ if (buf->excobj == NULL) { buf->excobj = PyUnicodeDecodeError_Create(codec->encoding, - buf->inbuf_top, + (const char *)buf->inbuf_top, (int)(buf->inbuf_end - buf->inbuf_top), start, end, reason); if (buf->excobj == NULL) @@ -965,7 +965,7 @@ mbstreamwriter_iwrite(MultibyteStreamWriterObject *self, PyObject *unistr) { PyObject *wr, *ucvt, *r = NULL; - Py_UNICODE *inbuf, *inbuf_end, *data, *inbuf_tmp = NULL; + Py_UNICODE *inbuf, *inbuf_end, *inbuf_tmp = NULL; int datalen; if (PyUnicode_Check(unistr)) @@ -982,7 +982,6 @@ mbstreamwriter_iwrite(MultibyteStreamWriterObject *self, } } - data = PyUnicode_AS_UNICODE(unistr); datalen = PyUnicode_GET_SIZE(unistr); if (datalen == 0) { Py_XDECREF(ucvt);