summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexandre Vassalotti <alexandre@peadrop.com>2007-10-14 02:05:51 (GMT)
committerAlexandre Vassalotti <alexandre@peadrop.com>2007-10-14 02:05:51 (GMT)
commit70a237179f1213b0c180898b6e1f0b6c4e9cd11c (patch)
treea0d454e61877a808e682ab90d2cc268d4ce5f23c
parent659e7f44e2f0bc92db8b4e33fb6bae429dcbd205 (diff)
downloadcpython-70a237179f1213b0c180898b6e1f0b6c4e9cd11c.zip
cpython-70a237179f1213b0c180898b6e1f0b6c4e9cd11c.tar.gz
cpython-70a237179f1213b0c180898b6e1f0b6c4e9cd11c.tar.bz2
Remove the buffer API from PyUnicode as specified by PEP 3137. Also,
fix the error message of the 't' format unit, in getargs.c, so that it asks for bytes, instead of string.
-rw-r--r--Modules/_sre.c9
-rw-r--r--Modules/posixmodule.c3
-rw-r--r--Objects/unicodeobject.c16
-rw-r--r--Python/getargs.c2
4 files changed, 13 insertions, 17 deletions
diff --git a/Modules/_sre.c b/Modules/_sre.c
index 1868657..f4cd1fe 100644
--- a/Modules/_sre.c
+++ b/Modules/_sre.c
@@ -1674,6 +1674,15 @@ getstring(PyObject* string, Py_ssize_t* p_length, int* p_charsize)
void* ptr;
Py_buffer view;
+ /* Unicode objects do not support the buffer API. So, get the data
+ directly instead. */
+ if (PyUnicode_Check(string)) {
+ ptr = (void *)PyUnicode_AS_DATA(string);
+ *p_length = PyUnicode_GET_SIZE(string);
+ *p_charsize = sizeof(Py_UNICODE);
+ return ptr;
+ }
+
/* get pointer to string buffer */
view.len = -1;
buffer = Py_Type(string)->tp_as_buffer;
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 75ce991..2fe2b63 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -2135,7 +2135,8 @@ posix_listdir(PyObject *self, PyObject *args)
FILEFINDBUF3 ep;
APIRET rc;
- if (!PyArg_ParseTuple(args, "t#:listdir", &name, &len))
+ if (!PyArg_ParseTuple(args, "et#:listdir",
+ Py_FileSystemDefaultEncoding, &name, &len))
return NULL;
if (len >= MAX_PATH) {
PyErr_SetString(PyExc_ValueError, "path too long");
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index 73aeec4..def9011 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -8113,15 +8113,6 @@ static PyMappingMethods unicode_as_mapping = {
};
-static int
-unicode_buffer_getbuffer(PyUnicodeObject *self, Py_buffer *view, int flags)
-{
-
- return PyBuffer_FillInfo(view, (void *)self->str,
- PyUnicode_GET_DATA_SIZE(self), 1, flags);
-}
-
-
/* Helpers for PyUnicode_Format() */
static PyObject *
@@ -8815,11 +8806,6 @@ PyObject *PyUnicode_Format(PyObject *format,
return NULL;
}
-static PyBufferProcs unicode_as_buffer = {
- (getbufferproc) unicode_buffer_getbuffer,
- NULL,
-};
-
static PyObject *
unicode_subtype_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
@@ -8903,7 +8889,7 @@ PyTypeObject PyUnicode_Type = {
(reprfunc) unicode_str, /* tp_str */
PyObject_GenericGetAttr, /* tp_getattro */
0, /* tp_setattro */
- &unicode_as_buffer, /* tp_as_buffer */
+ 0, /* tp_as_buffer */
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE |
Py_TPFLAGS_UNICODE_SUBCLASS, /* tp_flags */
unicode_doc, /* tp_doc */
diff --git a/Python/getargs.c b/Python/getargs.c
index de9cc93..4bcc175 100644
--- a/Python/getargs.c
+++ b/Python/getargs.c
@@ -1252,7 +1252,7 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
arg, msgbuf, bufsize);
if (pb == NULL || pb->bf_getbuffer == NULL)
return converterr(
- "string or read-only character buffer",
+ "bytes or read-only character buffer",
arg, msgbuf, bufsize);
if ((*pb->bf_getbuffer)(arg, &view, PyBUF_SIMPLE) != 0)