Marc-Andre Lemburg: support for Unicode strings; 'U' expects a Unicode
object.
diff --git a/Python/getargs.c b/Python/getargs.c
index 2d9e2b7..4617d05 100644
--- a/Python/getargs.c
+++ b/Python/getargs.c
@@ -585,7 +585,13 @@
 			        char **p = va_arg(*p_va, char **);
 			
 			        if (PyString_Check(arg))
-				  *p = PyString_AsString(arg);
+				    *p = PyString_AS_STRING(arg);
+				else if (PyUnicode_Check(arg)) {
+				    arg = PyUnicode_AsUTF8String(arg);
+				    if (arg == NULL)
+					return "unicode conversion error";
+				    *p = PyString_AS_STRING(arg);
+				}
 				else
 				  return "string";
 				if ((int)strlen(*p) != PyString_Size(arg))
@@ -625,6 +631,12 @@
 				  *p = 0;
 				else if (PyString_Check(arg))
 				  *p = PyString_AsString(arg);
+				else if (PyUnicode_Check(arg)) {
+				  arg = PyUnicode_AsUTF8String(arg);
+				  if (arg == NULL)
+				      return "unicode conversion error";
+				  *p = PyString_AS_STRING(arg);
+				}
 				else
 				  return "None or string";
 				if (*format == '#') {
@@ -652,6 +664,16 @@
 			break;
 		}
 	
+	case 'U': /* Unicode object */
+		{
+			PyObject **p = va_arg(*p_va, PyObject **);
+			if (PyUnicode_Check(arg))
+				*p = arg;
+			else
+				return "unicode";
+			break;
+		}
+	
 	case 'O': /* object */
 		{
 			PyTypeObject *type;