diff options
| author | Martin v. Löwis <martin@v.loewis.de> | 2005-03-08 15:03:08 +0000 | 
|---|---|---|
| committer | Martin v. Löwis <martin@v.loewis.de> | 2005-03-08 15:03:08 +0000 | 
| commit | e2713becd8cb0c3b2db4d33832dd57a1d619f0f3 (patch) | |
| tree | c46d31f73c95c9a969b6704719dac3e83eb435f1 | |
| parent | b60ae9960182b8eecb26da12171917ee5a6cc1fc (diff) | |
| download | cpython-git-e2713becd8cb0c3b2db4d33832dd57a1d619f0f3.tar.gz | |
Build with --disable-unicode again. Fixes #1158607.
Will backport to 2.4.
| -rw-r--r-- | Lib/codecs.py | 18 | ||||
| -rw-r--r-- | Lib/copy.py | 4 | ||||
| -rw-r--r-- | Lib/test/test_support.py | 2 | ||||
| -rw-r--r-- | Misc/NEWS | 2 | ||||
| -rw-r--r-- | Modules/_codecsmodule.c | 14 | ||||
| -rw-r--r-- | Modules/_tkinter.c | 4 | ||||
| -rw-r--r-- | setup.py | 11 | 
7 files changed, 41 insertions, 14 deletions
diff --git a/Lib/codecs.py b/Lib/codecs.py index b283925e01..b4103fb6e4 100644 --- a/Lib/codecs.py +++ b/Lib/codecs.py @@ -720,11 +720,19 @@ def make_encoding_map(decoding_map):  ### error handlers -strict_errors = lookup_error("strict") -ignore_errors = lookup_error("ignore") -replace_errors = lookup_error("replace") -xmlcharrefreplace_errors = lookup_error("xmlcharrefreplace") -backslashreplace_errors = lookup_error("backslashreplace") +try: +    strict_errors = lookup_error("strict") +    ignore_errors = lookup_error("ignore") +    replace_errors = lookup_error("replace") +    xmlcharrefreplace_errors = lookup_error("xmlcharrefreplace") +    backslashreplace_errors = lookup_error("backslashreplace") +except LookupError: +    # In --disable-unicode builds, these error handler are missing +    strict_errors = None +    ignore_errors = None +    replace_errors = None +    xmlcharrefreplace_errors = None +    backslashreplace_errors = None  # Tell modulefinder that using codecs probably needs the encodings  # package diff --git a/Lib/copy.py b/Lib/copy.py index b216beb336..dbfe2f58a3 100644 --- a/Lib/copy.py +++ b/Lib/copy.py @@ -202,12 +202,12 @@ d[float] = _deepcopy_atomic  d[bool] = _deepcopy_atomic  try:      d[complex] = _deepcopy_atomic -except AttributeError: +except NameError:      pass  d[str] = _deepcopy_atomic  try:      d[unicode] = _deepcopy_atomic -except AttributeError: +except NameError:      pass  try:      d[types.CodeType] = _deepcopy_atomic diff --git a/Lib/test/test_support.py b/Lib/test/test_support.py index 485e9e09f6..a296caf6d0 100644 --- a/Lib/test/test_support.py +++ b/Lib/test/test_support.py @@ -144,7 +144,7 @@ else:              TESTFN_UNICODE_UNENCODEABLE = None          else:              # Japanese characters (I think - from bug 846133) -            TESTFN_UNICODE_UNENCODEABLE = u"@test-\u5171\u6709\u3055\u308c\u308b" +            TESTFN_UNICODE_UNENCODEABLE = eval('u"@test-\u5171\u6709\u3055\u308c\u308b"')              try:                  # XXX - Note - should be using TESTFN_ENCODING here - but for                  # Windows, "mbcs" currently always operates as if in @@ -221,6 +221,8 @@ Library  Build  ----- +- Bug #1158607: Build with --disable-unicode again. +  - spwdmodule.c is built only if either HAVE_GETSPNAM or HAVE_HAVE_GETSPENT is    defined.  Discovered as a result of not being able to build on OS X. diff --git a/Modules/_codecsmodule.c b/Modules/_codecsmodule.c index ccad827586..a6c42b134b 100644 --- a/Modules/_codecsmodule.c +++ b/Modules/_codecsmodule.c @@ -104,8 +104,15 @@ codec_encode(PyObject *self, PyObject *args)      if (!PyArg_ParseTuple(args, "O|ss:encode", &v, &encoding, &errors))          return NULL; +#ifdef Py_USING_UNICODE      if (encoding == NULL)  	encoding = PyUnicode_GetDefaultEncoding(); +#else +    if (encoding == NULL) { +	PyErr_SetString(PyExc_ValueError, "no encoding specified"); +	return NULL; +    } +#endif      /* Encode via the codec registry */      v = PyCodec_Encode(v, encoding, errors); @@ -137,8 +144,15 @@ codec_decode(PyObject *self, PyObject *args)      if (!PyArg_ParseTuple(args, "O|ss:decode", &v, &encoding, &errors))          return NULL; +#ifdef Py_USING_UNICODE      if (encoding == NULL)  	encoding = PyUnicode_GetDefaultEncoding(); +#else +    if (encoding == NULL) { +	PyErr_SetString(PyExc_ValueError, "no encoding specified"); +	return NULL; +    } +#endif      /* Decode via the codec registry */      v = PyCodec_Decode(v, encoding, errors); diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c index 76c2a4485b..632f3d6c9a 100644 --- a/Modules/_tkinter.c +++ b/Modules/_tkinter.c @@ -838,8 +838,10 @@ static PyGetSetDef PyTclObject_getsetlist[] = {  };  static PyMethodDef PyTclObject_methods[] = { +#ifdef Py_USING_UNICODE  	{"__unicode__",	(PyCFunction)PyTclObject_unicode, METH_NOARGS,  	PyTclObject_unicode__doc__}, +#endif  	{0}  }; @@ -991,7 +993,7 @@ FromObj(PyObject* tkapp, Tcl_Obj *value)  			}  		}  #else -		res = PyString_FromStringAndSize(value->bytes, value->length); +		result = PyString_FromStringAndSize(value->bytes, value->length);  #endif  		return result;  	} @@ -799,11 +799,12 @@ class PyBuildExt(build_ext):                                ))          # Hye-Shik Chang's CJKCodecs modules. -        exts.append(Extension('_multibytecodec', -                              ['cjkcodecs/multibytecodec.c'])) -        for loc in ('kr', 'jp', 'cn', 'tw', 'hk', 'iso2022'): -            exts.append(Extension('_codecs_' + loc, -                                  ['cjkcodecs/_codecs_%s.c' % loc])) +        if have_unicode: +            exts.append(Extension('_multibytecodec', +                                  ['cjkcodecs/multibytecodec.c'])) +            for loc in ('kr', 'jp', 'cn', 'tw', 'hk', 'iso2022'): +                exts.append(Extension('_codecs_' + loc, +                                      ['cjkcodecs/_codecs_%s.c' % loc]))          # Dynamic loading module          if sys.maxint == 0x7fffffff:  | 
