Add "varargs" attribute.
diff --git a/Include/methodobject.h b/Include/methodobject.h
index 262208d..e8d795e 100644
--- a/Include/methodobject.h
+++ b/Include/methodobject.h
@@ -30,13 +30,15 @@
 
 typedef object *(*method) FPROTO((object *, object *));
 
-extern object *newmethodobject PROTO((char *, method, object *));
+extern object *newmethodobject PROTO((char *, method, object *, int));
 extern method getmethod PROTO((object *));
 extern object *getself PROTO((object *));
+extern int getvarargs PROTO((object *));
 
 struct methodlist {
-	char *ml_name;
-	method ml_meth;
+	char	*ml_name;
+	method	ml_meth;
+	int	ml_varargs;
 };
 
 extern object *findmethod PROTO((struct methodlist *, object *, char *));
diff --git a/Objects/methodobject.c b/Objects/methodobject.c
index 3ebdb37..98b70a6 100644
--- a/Objects/methodobject.c
+++ b/Objects/methodobject.c
@@ -30,16 +30,18 @@
 
 typedef struct {
 	OB_HEAD
-	char *m_name;
-	method m_meth;
-	object *m_self;
+	char	*m_name;
+	method	m_meth;
+	object	*m_self;
+	int	m_varargs;
 } methodobject;
 
 object *
-newmethodobject(name, meth, self)
+newmethodobject(name, meth, self, varargs)
 	char *name; /* static string */
 	method meth;
 	object *self;
+	int varargs;
 {
 	methodobject *op = NEWOBJ(methodobject, &Methodtype);
 	if (op != NULL) {
@@ -48,6 +50,7 @@
 		if (self != NULL)
 			INCREF(self);
 		op->m_self = self;
+		op->m_varargs = varargs;
 	}
 	return (object *)op;
 }
@@ -74,6 +77,17 @@
 	return ((methodobject *)op) -> m_self;
 }
 
+int
+getvarargs(op)
+	object *op;
+{
+	if (!is_methodobject(op)) {
+		err_badcall();
+		return -1;
+	}
+	return ((methodobject *)op) -> m_varargs;
+}
+
 /* Methods (the standard built-in methods, that is) */
 
 static void
@@ -168,7 +182,8 @@
 		return listmethods(ml);
 	for (; ml->ml_name != NULL; ml++) {
 		if (strcmp(name, ml->ml_name) == 0)
-			return newmethodobject(ml->ml_name, ml->ml_meth, op);
+			return newmethodobject(ml->ml_name, ml->ml_meth,
+					op, ml->ml_varargs);
 	}
 	err_setstr(AttributeError, name);
 	return NULL;
diff --git a/Python/modsupport.c b/Python/modsupport.c
index 5d56241..7deded4 100644
--- a/Python/modsupport.c
+++ b/Python/modsupport.c
@@ -45,7 +45,7 @@
 	for (ml = methods; ml->ml_name != NULL; ml++) {
 		sprintf(namebuf, "%s.%s", name, ml->ml_name);
 		v = newmethodobject(strdup(namebuf), ml->ml_meth,
-						(object *)NULL);
+					(object *)NULL, ml->ml_varargs);
 		/* XXX The strdup'ed memory is never freed */
 		if (v == NULL || dictinsert(d, ml->ml_name, v) != 0) {
 			fprintf(stderr, "initializing module: %s\n", name);