Change PyBuffer to Py_buffer to be consistent with other non-object structures like Py_complex.  Add some more functionality to the memoryview object.
diff --git a/Python/getargs.c b/Python/getargs.c
index 8608684..dc1bae0 100644
--- a/Python/getargs.c
+++ b/Python/getargs.c
@@ -1211,7 +1211,7 @@
 		PyBufferProcs *pb = arg->ob_type->tp_as_buffer;
 		int count;
                 int temp=-1;
-                PyBuffer view;
+                Py_buffer view;
 			
 		if (pb == NULL || 
 		    pb->bf_getbuffer == NULL ||
@@ -1242,7 +1242,7 @@
 		char **p = va_arg(*p_va, char **);
 		PyBufferProcs *pb = arg->ob_type->tp_as_buffer;
 		int count;
-                PyBuffer view;
+                Py_buffer view;
 		
 		if (*format++ != '#')
 			return converterr(
@@ -1286,7 +1286,7 @@
 {
 	PyBufferProcs *pb = arg->ob_type->tp_as_buffer;
 	Py_ssize_t count;
-        PyBuffer view;
+        Py_buffer view;
 
         *errmsg = NULL;
         *p = NULL;
diff --git a/Python/marshal.c b/Python/marshal.c
index 1ec33bd..c488f27 100644
--- a/Python/marshal.c
+++ b/Python/marshal.c
@@ -367,7 +367,7 @@
 		/* Write unknown buffer-style objects as a string */
 		char *s;
 		PyBufferProcs *pb = v->ob_type->tp_as_buffer;
-                PyBuffer view;
+                Py_buffer view;
 		if ((*pb->bf_getbuffer)(v, &view, PyBUF_SIMPLE) != 0) {
                         w_byte(TYPE_UNKNOWN, p);
                         p->error = 1;