summaryrefslogtreecommitdiffstats
path: root/Objects
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2007-04-27 23:53:51 (GMT)
committerGuido van Rossum <guido@python.org>2007-04-27 23:53:51 (GMT)
commit572dbf8f1320c0b34b9c786e5c30ba4a4b61b292 (patch)
tree27763a28b40b577302161008a00539649e2a536d /Objects
parentd4617f24caa1827106f5ca5e74655adf919ea499 (diff)
downloadcpython-572dbf8f1320c0b34b9c786e5c30ba4a4b61b292.zip
cpython-572dbf8f1320c0b34b9c786e5c30ba4a4b61b292.tar.gz
cpython-572dbf8f1320c0b34b9c786e5c30ba4a4b61b292.tar.bz2
Checkpoint. Manipulated things so that string literals are always
unicode, and a few other compensating changes, e.g. str <- unicode, chr <- unichr, and repr() of a unicode string no longer starts with 'u'. Lots of unit tests are broken, but some basic things work, in particular distutils works so the extensions can be built, and test_builtin.py works.
Diffstat (limited to 'Objects')
-rw-r--r--Objects/moduleobject.c5
-rw-r--r--Objects/unicodeobject.c5
2 files changed, 6 insertions, 4 deletions
diff --git a/Objects/moduleobject.c b/Objects/moduleobject.c
index e454fcf..18914d8 100644
--- a/Objects/moduleobject.c
+++ b/Objects/moduleobject.c
@@ -59,6 +59,7 @@ PyModule_GetName(PyObject *m)
{
PyObject *d;
PyObject *nameobj;
+ char *s;
if (!PyModule_Check(m)) {
PyErr_BadArgument();
return NULL;
@@ -66,11 +67,13 @@ PyModule_GetName(PyObject *m)
d = ((PyModuleObject *)m)->md_dict;
if (d == NULL ||
(nameobj = PyDict_GetItemString(d, "__name__")) == NULL ||
- !PyString_Check(nameobj))
+ !(PyString_Check(nameobj) || PyUnicode_Check(nameobj)))
{
PyErr_SetString(PyExc_SystemError, "nameless module");
return NULL;
}
+ if (PyUnicode_Check(nameobj))
+ nameobj = _PyUnicode_AsDefaultEncodedString(nameobj, "replace");
return PyString_AsString(nameobj);
}
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index ce28692..e2f1b2f 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -2072,7 +2072,6 @@ PyObject *unicodeescape_string(const Py_UNICODE *s,
p = PyString_AS_STRING(repr);
if (quotes) {
- *p++ = 'u';
*p++ = (findchar(s, size, '\'') &&
!findchar(s, size, '"')) ? '"' : '\'';
}
@@ -2081,7 +2080,7 @@ PyObject *unicodeescape_string(const Py_UNICODE *s,
/* Escape quotes and backslashes */
if ((quotes &&
- ch == (Py_UNICODE) PyString_AS_STRING(repr)[1]) || ch == '\\') {
+ ch == (Py_UNICODE) PyString_AS_STRING(repr)[0]) || ch == '\\') {
*p++ = '\\';
*p++ = (char) ch;
continue;
@@ -2167,7 +2166,7 @@ PyObject *unicodeescape_string(const Py_UNICODE *s,
*p++ = (char) ch;
}
if (quotes)
- *p++ = PyString_AS_STRING(repr)[1];
+ *p++ = PyString_AS_STRING(repr)[0];
*p = '\0';
_PyString_Resize(&repr, p - PyString_AS_STRING(repr));