Added 'softspace' interface to replace 'needspace' printing hack.
diff --git a/Objects/fileobject.c b/Objects/fileobject.c
index f038327..255b23e 100644
--- a/Objects/fileobject.c
+++ b/Objects/fileobject.c
@@ -44,7 +44,7 @@
 	FILE *f_fp;
 	object *f_name;
 	object *f_mode;
-	/* XXX Should move the 'need space' on printing flag here */
+	int f_softspace; /* Flag used by 'print' command */
 } fileobject;
 
 FILE *
@@ -70,6 +70,7 @@
 	f->f_fp = NULL;
 	f->f_name = newstringobject(name);
 	f->f_mode = newstringobject(mode);
+	f->f_softspace = 0;
 	if (f->f_name == NULL || f->f_mode == NULL) {
 		DECREF(f);
 		return NULL;
@@ -387,6 +388,7 @@
 		err_badarg();
 		return NULL;
 	}
+	f->f_softspace = 0;
 	errno = 0;
 	n2 = fwrite(getstringvalue(args), 1, n = getstringsize(args), f->f_fp);
 	if (n2 != n) {
@@ -432,3 +434,18 @@
 	0,		/*tp_compare*/
 	file_repr,	/*tp_repr*/
 };
+
+/* Interface for the 'soft space' between print items. */
+
+int
+softspace(f, newflag)
+	object *f;
+	int newflag;
+{
+	int oldflag = 0;
+	if (f != NULL && is_fileobject(f)) {
+		oldflag = ((fileobject *)f)->f_softspace;
+		((fileobject *)f)->f_softspace = newflag;
+	}
+	return oldflag;
+}