Enable putenv and waitpid (== wait4) for NeXT.
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 7307743..5ce985f 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -123,6 +123,7 @@
 /* NeXT's <unistd.h> and <utime.h> aren't worth much */
 #undef HAVE_UNISTD_H
 #undef HAVE_UTIME_H
+#define HAVE_WAITPID
 /* #undef HAVE_GETCWD */
 #endif
 
@@ -1168,7 +1169,11 @@
 	if (!PyArg_Parse(args, "(ii)", &pid, &options))
 		return NULL;
 	Py_BEGIN_ALLOW_THREADS
+#ifdef NeXT
+	pid = wait4(pid, (union wait *)&sts, options, NULL);
+#else
 	pid = waitpid(pid, &sts, options);
+#endif
 	Py_END_ALLOW_THREADS
 	if (pid == -1)
 		return posix_error();
@@ -1185,7 +1190,11 @@
 {
 	int pid, sts;
 	Py_BEGIN_ALLOW_THREADS
+#ifdef NeXT
+	pid = wait((union wait *)&sts);
+#else
 	pid = wait(&sts);
+#endif
 	Py_END_ALLOW_THREADS
 	if (pid == -1)
 		return posix_error();
@@ -1616,6 +1625,84 @@
 }
 #endif
 
+#ifdef NeXT
+#define HAVE_PUTENV
+/* Steve Spicklemire got this putenv from NeXTAnswers */
+static int
+putenv(char *newval)
+{
+	extern char **environ;
+
+	static int firstTime = 1;
+	char **ep;
+	char *cp;
+	int esiz;
+	char *np;
+
+	if (!(np = strchr(newval, '=')))
+		return 1;
+	*np = '\0';
+
+	/* look it up */
+	for (ep=environ ; *ep ; ep++)
+	{
+		/* this should always be true... */
+		if (cp = strchr(*ep, '='))
+		{
+			*cp = '\0';
+			if (!strcmp(*ep, newval))
+			{
+				/* got it! */
+				*cp = '=';
+				break;
+			}
+			*cp = '=';
+		}
+		else
+		{
+			*np = '=';
+			return 1;
+		}
+	}
+
+	*np = '=';
+	if (*ep)
+	{
+		/* the string was already there:
+		   just replace it with the new one */
+		*ep = newval;
+		return 0;
+	}
+
+	/* expand environ by one */
+	for (esiz=2, ep=environ ; *ep ; ep++)
+		esiz++;
+	if (firstTime)
+	{
+		char **epp;
+		char **newenv;
+		if (!(newenv = malloc(esiz * sizeof(char *))))
+			return 1;
+   
+		for (ep=environ, epp=newenv ; *ep ;)
+			*epp++ = *ep++;
+		*epp++ = newval;
+		*epp = (char *) 0;
+		environ = newenv;
+	}
+	else
+	{
+		if (!(environ = realloc(environ, esiz * sizeof(char *))))
+			return 1;
+		environ[esiz - 2] = newval;
+		environ[esiz - 1] = (char *) 0;
+		firstTime = 0;
+	}
+
+	return 0;
+}
+#endif NeXT
+
 #ifdef HAVE_PUTENV
 static PyObject * 
 posix_putenv(self,args)