This reverts r63675 based on the discussion in this thread:

 http://mail.python.org/pipermail/python-dev/2008-June/079988.html

Python 2.6 should stick with PyString_* in its codebase.  The PyBytes_* names
in the spirit of 3.0 are available via a #define only.  See the email thread.
diff --git a/Modules/_struct.c b/Modules/_struct.c
index b0351f1..e5fe211 100644
--- a/Modules/_struct.c
+++ b/Modules/_struct.c
@@ -413,7 +413,7 @@
 		if (msg == NULL)
 			return -1;
 		rval = PyErr_WarnEx(PyExc_DeprecationWarning,
-				    PyBytes_AS_STRING(msg), 2);
+				    PyString_AS_STRING(msg), 2);
 		Py_DECREF(msg);
 		if (rval == 0)
 			return 0;
@@ -446,7 +446,7 @@
 static PyObject *
 nu_char(const char *p, const formatdef *f)
 {
-	return PyBytes_FromStringAndSize(p, 1);
+	return PyString_FromStringAndSize(p, 1);
 }
 
 static PyObject *
@@ -610,12 +610,12 @@
 static int
 np_char(char *p, PyObject *v, const formatdef *f)
 {
-	if (!PyBytes_Check(v) || PyBytes_Size(v) != 1) {
+	if (!PyString_Check(v) || PyString_Size(v) != 1) {
 		PyErr_SetString(StructError,
 				"char format require string of length 1");
 		return -1;
 	}
-	*p = *PyBytes_AsString(v);
+	*p = *PyString_AsString(v);
 	return 0;
 }
 
@@ -1335,7 +1335,7 @@
 	char c;
 	Py_ssize_t size, len, num, itemsize, x;
 
-	fmt = PyBytes_AS_STRING(self->s_format);
+	fmt = PyString_AS_STRING(self->s_format);
 
 	f = whichtable((char **)&fmt);
 
@@ -1503,12 +1503,12 @@
 		const formatdef *e = code->fmtdef;
 		const char *res = startfrom + code->offset;
 		if (e->format == 's') {
-			v = PyBytes_FromStringAndSize(res, code->size);
+			v = PyString_FromStringAndSize(res, code->size);
 		} else if (e->format == 'p') {
 			Py_ssize_t n = *(unsigned char*)res;
 			if (n >= code->size)
 				n = code->size - 1;
-			v = PyBytes_FromStringAndSize(res + 1, n);
+			v = PyString_FromStringAndSize(res + 1, n);
 		} else {
 			v = e->unpack(res, e);
 		}
@@ -1542,9 +1542,9 @@
 	assert(soself->s_codes != NULL);
 	if (inputstr == NULL)
 		goto fail;
-	if (PyBytes_Check(inputstr) &&
-		PyBytes_GET_SIZE(inputstr) == soself->s_size) {
-			return s_unpack_internal(soself, PyBytes_AS_STRING(inputstr));
+	if (PyString_Check(inputstr) &&
+		PyString_GET_SIZE(inputstr) == soself->s_size) {
+			return s_unpack_internal(soself, PyString_AS_STRING(inputstr));
 	}
 	args = PyTuple_Pack(1, inputstr);
 	if (args == NULL)
@@ -1637,27 +1637,27 @@
 		const formatdef *e = code->fmtdef;
 		char *res = buf + code->offset;
 		if (e->format == 's') {
-			if (!PyBytes_Check(v)) {
+			if (!PyString_Check(v)) {
 				PyErr_SetString(StructError,
 						"argument for 's' must be a string");
 				return -1;
 			}
-			n = PyBytes_GET_SIZE(v);
+			n = PyString_GET_SIZE(v);
 			if (n > code->size)
 				n = code->size;
 			if (n > 0)
-				memcpy(res, PyBytes_AS_STRING(v), n);
+				memcpy(res, PyString_AS_STRING(v), n);
 		} else if (e->format == 'p') {
-			if (!PyBytes_Check(v)) {
+			if (!PyString_Check(v)) {
 				PyErr_SetString(StructError,
 						"argument for 'p' must be a string");
 				return -1;
 			}
-			n = PyBytes_GET_SIZE(v);
+			n = PyString_GET_SIZE(v);
 			if (n > (code->size - 1))
 				n = code->size - 1;
 			if (n > 0)
-				memcpy(res + 1, PyBytes_AS_STRING(v), n);
+				memcpy(res + 1, PyString_AS_STRING(v), n);
 			if (n > 255)
 				n = 255;
 			*res = Py_SAFE_DOWNCAST(n, Py_ssize_t, unsigned char);
@@ -1700,12 +1700,12 @@
 	}
 
 	/* Allocate a new string */
-	result = PyBytes_FromStringAndSize((char *)NULL, soself->s_size);
+	result = PyString_FromStringAndSize((char *)NULL, soself->s_size);
 	if (result == NULL)
 		return NULL;
 
 	/* Call the guts */
-	if ( s_pack_internal(soself, args, 0, PyBytes_AS_STRING(result)) != 0 ) {
+	if ( s_pack_internal(soself, args, 0, PyString_AS_STRING(result)) != 0 ) {
 		Py_DECREF(result);
 		return NULL;
 	}
@@ -2061,7 +2061,7 @@
 {
 	PyObject *ver, *m;
 
-	ver = PyBytes_FromString("0.2");
+	ver = PyString_FromString("0.2");
 	if (ver == NULL)
 		return;