Added support for abort(), ctermid(), tmpfile(), tempnam(), tmpnam(),
and TMP_MAX.

Converted all functions that used PyArg_Parse() or PyArg_NoArgs() to
use PyArg_ParseTuple() and specified all function names using the
:name syntax in the format strings, to allow better error messages
when TypeError is raised for parameter type mismatches.
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index a5ec46d..8979021 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -431,13 +431,14 @@
 /* POSIX generic methods */
 
 static PyObject *
-posix_int(args, func)
+posix_int(args, format, func)
         PyObject *args;
+        char *format;
 	int (*func) Py_FPROTO((int));
 {
 	int fd;
 	int res;
-	if (!PyArg_Parse(args,  "i", &fd))
+	if (!PyArg_ParseTuple(args,  format, &fd))
 		return NULL;
 	Py_BEGIN_ALLOW_THREADS
 	res = (*func)(fd);
@@ -450,13 +451,14 @@
 
 
 static PyObject *
-posix_1str(args, func)
+posix_1str(args, format, func)
 	PyObject *args;
+        char *format;
 	int (*func) Py_FPROTO((const char *));
 {
 	char *path1;
 	int res;
-	if (!PyArg_Parse(args, "s", &path1))
+	if (!PyArg_ParseTuple(args, format, &path1))
 		return NULL;
 	Py_BEGIN_ALLOW_THREADS
 	res = (*func)(path1);
@@ -468,13 +470,14 @@
 }
 
 static PyObject *
-posix_2str(args, func)
+posix_2str(args, format, func)
 	PyObject *args;
+        char *format;
 	int (*func) Py_FPROTO((const char *, const char *));
 {
 	char *path1, *path2;
 	int res;
-	if (!PyArg_Parse(args, "(ss)", &path1, &path2))
+	if (!PyArg_ParseTuple(args, format, &path1, &path2))
 		return NULL;
 	Py_BEGIN_ALLOW_THREADS
 	res = (*func)(path1, path2);
@@ -487,14 +490,15 @@
 }
 
 static PyObject *
-posix_strint(args, func)
+posix_strint(args, format, func)
 	PyObject *args;
+        char *format;
 	int (*func) Py_FPROTO((const char *, int));
 {
 	char *path;
 	int i;
 	int res;
-	if (!PyArg_Parse(args, "(si)", &path, &i))
+	if (!PyArg_ParseTuple(args, format, &path, &i))
 		return NULL;
 	Py_BEGIN_ALLOW_THREADS
 	res = (*func)(path, i);
@@ -506,14 +510,15 @@
 }
 
 static PyObject *
-posix_strintint(args, func)
+posix_strintint(args, format, func)
 	PyObject *args;
+        char *format;
 	int (*func) Py_FPROTO((const char *, int, int));
 {
 	char *path;
 	int i,i2;
 	int res;
-	if (!PyArg_Parse(args, "(sii)", &path, &i, &i2))
+	if (!PyArg_ParseTuple(args, format, &path, &i, &i2))
 		return NULL;
 	Py_BEGIN_ALLOW_THREADS
 	res = (*func)(path, i, i2);
@@ -525,15 +530,16 @@
 }
 
 static PyObject *
-posix_do_stat(self, args, statfunc)
+posix_do_stat(self, args, format, statfunc)
 	PyObject *self;
 	PyObject *args;
+        char *format;
 	int (*statfunc) Py_FPROTO((const char *, struct stat *));
 {
 	struct stat st;
 	char *path;
 	int res;
-	if (!PyArg_Parse(args, "s", &path))
+	if (!PyArg_ParseTuple(args, format, &path))
 		return NULL;
 	Py_BEGIN_ALLOW_THREADS
 	res = (*statfunc)(path, &st);
@@ -583,7 +589,7 @@
 	int mode;
 	int res;
 
-	if (!PyArg_Parse(args, "(si)", &path, &mode))
+	if (!PyArg_ParseTuple(args, "si:access", &path, &mode))
 		return NULL;
 	Py_BEGIN_ALLOW_THREADS
 	res = access(path, mode);
@@ -614,11 +620,10 @@
 	PyObject *self;
 	PyObject *args;
 {
-	PyObject *file;
 	int id;
 	char *ret;
 
-	if (!PyArg_Parse(args, "i", &id))
+	if (!PyArg_ParseTuple(args, "i:ttyname", &id))
 		return NULL;
 
 	ret = ttyname(id);
@@ -628,6 +633,33 @@
 }
 #endif
 
+#ifdef HAVE_CTERMID
+static char posix_ctermid__doc__[] =
+"ctermid() -> String\n\
+Return the name of the controlling terminal for this process.";
+
+static PyObject *
+posix_ctermid(self, args)
+	PyObject *self;
+	PyObject *args;
+{
+        char *ret;
+        char buffer[L_ctermid];
+
+	if (!PyArg_ParseTuple(args, ":ctermid"))
+		return NULL;
+
+#ifdef HAVE_CTERMID_R
+	ret = ctermid_r(buffer);
+#else
+        ret = ctermid(buffer);
+#endif
+	if (ret == NULL)
+		return(posix_error());
+	return(PyString_FromString(buffer));
+}
+#endif
+
 static char posix_chdir__doc__[] =
 "chdir(path) -> None\n\
 Change the current working directory to the specified path.";
@@ -637,7 +669,7 @@
 	PyObject *self;
 	PyObject *args;
 {
-	return posix_1str(args, chdir);
+	return posix_1str(args, "s:chdir", chdir);
 }
 
 
@@ -650,7 +682,7 @@
 	PyObject *self;
 	PyObject *args;
 {
-	return posix_strint(args, chmod);
+	return posix_strint(args, "si:chmod", chmod);
 }
 
 
@@ -664,7 +696,7 @@
        PyObject *self;
        PyObject *args;
 {
-       return posix_int(args, fsync);
+       return posix_int(args, "i:fsync", fsync);
 }
 #endif /* HAVE_FSYNC */
 
@@ -681,7 +713,7 @@
        PyObject *self;
        PyObject *args;
 {
-       return posix_int(args, fdatasync);
+       return posix_int(args, "i:fdatasync", fdatasync);
 }
 #endif /* HAVE_FDATASYNC */
 
@@ -696,7 +728,7 @@
 	PyObject *self;
 	PyObject *args;
 {
-	return posix_strintint(args, chown);
+	return posix_strintint(args, "sii:chown", chown);
 }
 #endif /* HAVE_CHOWN */
 
@@ -713,7 +745,7 @@
 {
 	char buf[1026];
 	char *res;
-	if (!PyArg_NoArgs(args))
+	if (!PyArg_ParseTuple(args, ":getcwd"))
 		return NULL;
 	Py_BEGIN_ALLOW_THREADS
 	res = getcwd(buf, sizeof buf);
@@ -735,7 +767,7 @@
 	PyObject *self;
 	PyObject *args;
 {
-	return posix_2str(args, link);
+	return posix_2str(args, "ss:link", link);
 }
 #endif /* HAVE_LINK */
 
@@ -765,7 +797,7 @@
 	WIN32_FIND_DATA FileData;
 	char namebuf[MAX_PATH+5];
 
-	if (!PyArg_Parse(args, "t#", &name, &len))
+	if (!PyArg_ParseTuple(args, "t#:listdir", &name, &len))
 		return NULL;
 	if (len >= MAX_PATH) {
 		PyErr_SetString(PyExc_ValueError, "path too long");
@@ -826,7 +858,7 @@
 	char namebuf[MAX_PATH+5];
 	struct _find_t ep;
 
-	if (!PyArg_Parse(args, "t#", &name, &len))
+	if (!PyArg_ParseTuple(args, "t#:listdir", &name, &len))
 		return NULL;
 	if (len >= MAX_PATH) {
 		PyErr_SetString(PyExc_ValueError, "path too long");
@@ -891,7 +923,7 @@
     FILEFINDBUF3   ep;
     APIRET rc;
 
-	if (!PyArg_Parse(args, "t#", &name, &len))
+    if (!PyArg_ParseTuple(args, "t#:listdir", &name, &len))
         return NULL;
     if (len >= MAX_PATH) {
 		PyErr_SetString(PyExc_ValueError, "path too long");
@@ -954,7 +986,7 @@
 	PyObject *d, *v;
 	DIR *dirp;
 	struct dirent *ep;
-	if (!PyArg_Parse(args, "s", &name))
+	if (!PyArg_ParseTuple(args, "s:listdir", &name))
 		return NULL;
 	Py_BEGIN_ALLOW_THREADS
 	if ((dirp = opendir(name)) == NULL) {
@@ -1007,7 +1039,7 @@
 	int res;
 	char *path;
 	int mode = 0777;
-	if (!PyArg_ParseTuple(args, "s|i", &path, &mode))
+	if (!PyArg_ParseTuple(args, "s|i:mkdir", &path, &mode))
 		return NULL;
 	Py_BEGIN_ALLOW_THREADS
 #if ( defined(__WATCOMC__) || defined(_MSC_VER) || defined(PYCC_VACPP) ) && !defined(__QNX__)
@@ -1035,7 +1067,7 @@
 {
 	int increment, value;
 
-	if (!PyArg_Parse(args, "i", &increment))
+	if (!PyArg_ParseTuple(args, "i:nice", &increment))
 		return NULL;
 	value = nice(increment);
 	if (value == -1)
@@ -1054,7 +1086,7 @@
 	PyObject *self;
 	PyObject *args;
 {
-	return posix_2str(args, rename);
+	return posix_2str(args, "ss:rename", rename);
 }
 
 
@@ -1067,7 +1099,7 @@
 	PyObject *self;
 	PyObject *args;
 {
-	return posix_1str(args, rmdir);
+	return posix_1str(args, "s:rmdir", rmdir);
 }
 
 
@@ -1080,7 +1112,7 @@
 	PyObject *self;
 	PyObject *args;
 {
-	return posix_do_stat(self, args, stat);
+	return posix_do_stat(self, args, "s:stat", stat);
 }
 
 
@@ -1096,7 +1128,7 @@
 {
 	char *command;
 	long sts;
-	if (!PyArg_Parse(args, "s", &command))
+	if (!PyArg_ParseTuple(args, "s:system", &command))
 		return NULL;
 	Py_BEGIN_ALLOW_THREADS
 	sts = system(command);
@@ -1116,7 +1148,7 @@
 	PyObject *args;
 {
 	int i;
-	if (!PyArg_Parse(args, "i", &i))
+	if (!PyArg_ParseTuple(args, "i:umask", &i))
 		return NULL;
 	i = umask(i);
 	if (i < 0)
@@ -1138,7 +1170,7 @@
 	PyObject *self;
 	PyObject *args;
 {
-	return posix_1str(args, unlink);
+	return posix_1str(args, "s:remove", unlink);
 }
 
 
@@ -1154,7 +1186,7 @@
 {
 	struct utsname u;
 	int res;
-	if (!PyArg_NoArgs(args))
+	if (!PyArg_ParseTuple(args, ":uname"))
 		return NULL;
 	Py_BEGIN_ALLOW_THREADS
 	res = uname(&u);
@@ -1197,7 +1229,7 @@
 #define UTIME_ARG buf
 #endif /* HAVE_UTIME_H */
 
-	if (!PyArg_Parse(args, "(s(ll))", &path, &atime, &mtime))
+	if (!PyArg_ParseTuple(args, "s(ll):utime", &path, &atime, &mtime))
 		return NULL;
 	ATIME = atime;
 	MTIME = mtime;
@@ -1226,7 +1258,7 @@
 	PyObject *args;
 {
 	int sts;
-	if (!PyArg_Parse(args, "i", &sts))
+	if (!PyArg_ParseTuple(args, "i:_exit", &sts))
 		return NULL;
 	_exit(sts);
 	return NULL; /* Make gcc -Wall happy */
@@ -1255,7 +1287,7 @@
 	/* execv has two arguments: (path, argv), where
 	   argv is a list or tuple of strings. */
 
-	if (!PyArg_Parse(args, "(sO)", &path, &argv))
+	if (!PyArg_ParseTuple(args, "sO:execv", &path, &argv))
 		return NULL;
 	if (PyList_Check(argv)) {
 		argc = PyList_Size(argv);
@@ -1320,7 +1352,7 @@
 	   argv is a list or tuple of strings and env is a dictionary
 	   like posix.environ. */
 
-	if (!PyArg_Parse(args, "(sOO)", &path, &argv, &env))
+	if (!PyArg_ParseTuple(args, "sOO:execve", &path, &argv, &env))
 		return NULL;
 	if (PyList_Check(argv)) {
 		argc = PyList_Size(argv);
@@ -1444,7 +1476,7 @@
 	/* spawnv has three arguments: (mode, path, argv), where
 	   argv is a list or tuple of strings. */
 
-	if (!PyArg_Parse(args, "(isO)", &mode, &path, &argv))
+	if (!PyArg_ParseTuple(args, "isO:spawnv", &mode, &path, &argv))
 		return NULL;
 	if (PyList_Check(argv)) {
 		argc = PyList_Size(argv);
@@ -1510,7 +1542,7 @@
 	   argv is a list or tuple of strings and env is a dictionary
 	   like posix.environ. */
 
-	if (!PyArg_Parse(args, "(isOO)", &mode, &path, &argv, &env))
+	if (!PyArg_ParseTuple(args, "isOO:spawnve", &mode, &path, &argv, &env))
 		return NULL;
 	if (PyList_Check(argv)) {
 		argc = PyList_Size(argv);
@@ -1613,7 +1645,7 @@
 	PyObject *args;
 {
 	int pid;
-	if (!PyArg_NoArgs(args))
+	if (!PyArg_ParseTuple(args, ":fork"))
 		return NULL;
 	pid = fork();
 	if (pid == -1)
@@ -1634,7 +1666,7 @@
 	PyObject *self;
 	PyObject *args;
 {
-	if (!PyArg_NoArgs(args))
+	if (!PyArg_ParseTuple(args, ":getegid"))
 		return NULL;
 	return PyInt_FromLong((long)getegid());
 }
@@ -1651,7 +1683,7 @@
 	PyObject *self;
 	PyObject *args;
 {
-	if (!PyArg_NoArgs(args))
+	if (!PyArg_ParseTuple(args, ":geteuid"))
 		return NULL;
 	return PyInt_FromLong((long)geteuid());
 }
@@ -1668,7 +1700,7 @@
 	PyObject *self;
 	PyObject *args;
 {
-	if (!PyArg_NoArgs(args))
+	if (!PyArg_ParseTuple(args, ":getgid"))
 		return NULL;
 	return PyInt_FromLong((long)getgid());
 }
@@ -1684,7 +1716,7 @@
 	PyObject *self;
 	PyObject *args;
 {
-	if (!PyArg_NoArgs(args))
+	if (!PyArg_ParseTuple(args, ":getpid"))
 		return NULL;
 	return PyInt_FromLong((long)getpid());
 }
@@ -1700,7 +1732,7 @@
 	PyObject *self;
 	PyObject *args;
 {
-	if (!PyArg_NoArgs(args))
+	if (!PyArg_ParseTuple(args, ":getpgrp"))
 		return NULL;
 #ifdef GETPGRP_HAVE_ARG
 	return PyInt_FromLong((long)getpgrp(0));
@@ -1721,7 +1753,7 @@
 	PyObject *self;
 	PyObject *args;
 {
-	if (!PyArg_NoArgs(args))
+	if (!PyArg_ParseTuple(args, ":setpgrp"))
 		return NULL;
 #ifdef SETPGRP_HAVE_ARG
 	if (setpgrp(0, 0) < 0)
@@ -1745,7 +1777,7 @@
 	PyObject *self;
 	PyObject *args;
 {
-	if (!PyArg_NoArgs(args))
+	if (!PyArg_ParseTuple(args, ":getppid"))
 		return NULL;
 	return PyInt_FromLong((long)getppid());
 }
@@ -1762,7 +1794,7 @@
 	PyObject *self;
 	PyObject *args;
 {
-	if (!PyArg_NoArgs(args))
+	if (!PyArg_ParseTuple(args, ":getuid"))
 		return NULL;
 	return PyInt_FromLong((long)getuid());
 }
@@ -1780,7 +1812,7 @@
 	PyObject *args;
 {
 	int pid, sig;
-	if (!PyArg_Parse(args, "(ii)", &pid, &sig))
+	if (!PyArg_ParseTuple(args, "ii:kill", &pid, &sig))
 		return NULL;
 #if defined(PYOS_OS2)
     if (sig == XCPT_SIGNAL_INTR || sig == XCPT_SIGNAL_BREAK) {
@@ -1820,7 +1852,7 @@
 	PyObject *args;
 {
 	int op;
-	if (!PyArg_Parse(args, "i", &op))
+	if (!PyArg_ParseTuple(args, "i:plock", &op))
 		return NULL;
 	if (plock(op) == -1)
 		return posix_error();
@@ -1927,7 +1959,7 @@
 	int   err, bufsize = -1;
 	FILE *fp;
 	PyObject *f;
-	if (!PyArg_ParseTuple(args, "s|si", &name, &mode, &bufsize))
+	if (!PyArg_ParseTuple(args, "s|si:popen", &name, &mode, &bufsize))
 		return NULL;
 	Py_BEGIN_ALLOW_THREADS
 	fp = popen(name, mode, (bufsize > 0) ? bufsize : 4096, &err);
@@ -1952,7 +1984,7 @@
 	int bufsize = -1;
 	FILE *fp;
 	PyObject *f;
-	if (!PyArg_ParseTuple(args, "s|si", &name, &mode, &bufsize))
+	if (!PyArg_ParseTuple(args, "s|si:popen", &name, &mode, &bufsize))
 		return NULL;
 	Py_BEGIN_ALLOW_THREADS
 	fp = popen(name, mode);
@@ -1979,7 +2011,7 @@
 	PyObject *args;
 {
 	int uid;
-	if (!PyArg_Parse(args, "i", &uid))
+	if (!PyArg_ParseTuple(args, "i:setuid", &uid))
 		return NULL;
 	if (setuid(uid) < 0)
 		return posix_error();
@@ -2000,7 +2032,7 @@
 	PyObject *args;
 {
 	int gid;
-	if (!PyArg_Parse(args, "i", &gid))
+	if (!PyArg_ParseTuple(args, "i:setgid", &gid))
 		return NULL;
 	if (setgid(gid) < 0)
 		return posix_error();
@@ -2030,7 +2062,7 @@
 #endif
 	status_i = 0;
 
-	if (!PyArg_Parse(args, "(ii)", &pid, &options))
+	if (!PyArg_ParseTuple(args, "ii:waitpid", &pid, &options))
 		return NULL;
 	Py_BEGIN_ALLOW_THREADS
 #ifdef NeXT
@@ -2057,7 +2089,7 @@
 	PyObject *self;
 	PyObject *args;
 {
-	int pid, sts;
+	int pid;
 #ifdef UNION_WAIT
 	union wait status;
 #define status_i (status.w_status)
@@ -2065,6 +2097,8 @@
 	int status;
 #define status_i status
 #endif
+        if (!PyArg_ParseTuple(args, ":wait"))
+                return NULL;
 	status_i = 0;
 	Py_BEGIN_ALLOW_THREADS
 	pid = wait(&status);
@@ -2073,6 +2107,7 @@
 		return posix_error();
 	else
 		return Py_BuildValue("ii", pid, status_i);
+#undef status_i
 }
 #endif
 
@@ -2087,9 +2122,9 @@
 	PyObject *args;
 {
 #ifdef HAVE_LSTAT
-	return posix_do_stat(self, args, lstat);
+	return posix_do_stat(self, args, "s:lstat", lstat);
 #else /* !HAVE_LSTAT */
-	return posix_do_stat(self, args, stat);
+	return posix_do_stat(self, args, "s:lstat", stat);
 #endif /* !HAVE_LSTAT */
 }
 
@@ -2107,7 +2142,7 @@
 	char buf[MAXPATHLEN];
 	char *path;
 	int n;
-	if (!PyArg_Parse(args, "s", &path))
+	if (!PyArg_ParseTuple(args, "s:readlink", &path))
 		return NULL;
 	Py_BEGIN_ALLOW_THREADS
 	n = readlink(path, buf, (int) sizeof buf);
@@ -2129,7 +2164,7 @@
 	PyObject *self;
 	PyObject *args;
 {
-	return posix_2str(args, symlink);
+	return posix_2str(args, "ss:symlink", symlink);
 }
 #endif /* HAVE_SYMLINK */
 
@@ -2157,7 +2192,7 @@
 	PyObject *self;
 	PyObject *args;
 {
-	if (!PyArg_NoArgs(args))
+	if (!PyArg_ParseTuple(args, ":times"))
 		return NULL;
 
     /* Currently Only Uptime is Provided -- Others Later */
@@ -2176,7 +2211,7 @@
 {
 	struct tms t;
 	clock_t c;
-	if (!PyArg_NoArgs(args))
+	if (!PyArg_ParseTuple(args, ":times"))
 		return NULL;
 	errno = 0;
 	c = times(&t);
@@ -2202,7 +2237,7 @@
 {
 	FILETIME create, exit, kernel, user;
 	HANDLE hProc;
-	if (!PyArg_NoArgs(args))
+	if (!PyArg_ParseTuple(args, ":times"))
 		return NULL;
 	hProc = GetCurrentProcess();
 	GetProcessTimes(hProc, &create, &exit, &kernel, &user);
@@ -2240,7 +2275,7 @@
 	PyObject *self;
 	PyObject *args;
 {
-	if (!PyArg_NoArgs(args))
+	if (!PyArg_ParseTuple(args, ":setsid"))
 		return NULL;
 	if (setsid() < 0)
 		return posix_error();
@@ -2260,7 +2295,7 @@
 	PyObject *args;
 {
 	int pid, pgrp;
-	if (!PyArg_Parse(args, "(ii)", &pid, &pgrp))
+	if (!PyArg_ParseTuple(args, "ii:setpgid", &pid, &pgrp))
 		return NULL;
 	if (setpgid(pid, pgrp) < 0)
 		return posix_error();
@@ -2281,7 +2316,7 @@
 	PyObject *args;
 {
 	int fd, pgid;
-	if (!PyArg_Parse(args, "i", &fd))
+	if (!PyArg_ParseTuple(args, "i:tcgetpgrp", &fd))
 		return NULL;
 	pgid = tcgetpgrp(fd);
 	if (pgid < 0)
@@ -2302,7 +2337,7 @@
 	PyObject *args;
 {
 	int fd, pgid;
-	if (!PyArg_Parse(args, "(ii)", &fd, &pgid))
+	if (!PyArg_ParseTuple(args, "ii:tcsetpgrp", &fd, &pgid))
 		return NULL;
 	if (tcsetpgrp(fd, pgid) < 0)
 		return posix_error();
@@ -2348,7 +2383,7 @@
 	PyObject *args;
 {
 	int fd, res;
-	if (!PyArg_Parse(args, "i", &fd))
+	if (!PyArg_ParseTuple(args, "i:close", &fd))
 		return NULL;
 	Py_BEGIN_ALLOW_THREADS
 	res = close(fd);
@@ -2370,7 +2405,7 @@
 	PyObject *args;
 {
 	int fd;
-	if (!PyArg_Parse(args, "i", &fd))
+	if (!PyArg_ParseTuple(args, "i:dup", &fd))
 		return NULL;
 	Py_BEGIN_ALLOW_THREADS
 	fd = dup(fd);
@@ -2391,7 +2426,7 @@
 	PyObject *args;
 {
 	int fd, fd2, res;
-	if (!PyArg_Parse(args, "(ii)", &fd, &fd2))
+	if (!PyArg_ParseTuple(args, "ii:dup2", &fd, &fd2))
 		return NULL;
 	Py_BEGIN_ALLOW_THREADS
 	res = dup2(fd, fd2);
@@ -2415,7 +2450,7 @@
 	int fd, how;
 	off_t pos, res;
 	PyObject *posobj;
-	if (!PyArg_Parse(args, "(iOi)", &fd, &posobj, &how))
+	if (!PyArg_ParseTuple(args, "iOi:lseek", &fd, &posobj, &how))
 		return NULL;
 #ifdef SEEK_SET
 	/* Turn 0, 1, 2 into SEEK_{SET,CUR,END} */
@@ -2460,7 +2495,7 @@
 {
 	int fd, size, n;
 	PyObject *buffer;
-	if (!PyArg_Parse(args, "(ii)", &fd, &size))
+	if (!PyArg_ParseTuple(args, "ii:read", &fd, &size))
 		return NULL;
 	buffer = PyString_FromStringAndSize((char *)NULL, size);
 	if (buffer == NULL)
@@ -2489,7 +2524,7 @@
 {
 	int fd, size;
 	char *buffer;
-	if (!PyArg_Parse(args, "(is#)", &fd, &buffer, &size))
+	if (!PyArg_ParseTuple(args, "is#:write", &fd, &buffer, &size))
 		return NULL;
 	Py_BEGIN_ALLOW_THREADS
 	size = write(fd, buffer, size);
@@ -2512,7 +2547,7 @@
 	int fd;
 	struct stat st;
 	int res;
-	if (!PyArg_Parse(args, "i", &fd))
+	if (!PyArg_ParseTuple(args, "i:fstat", &fd))
 		return NULL;
 	Py_BEGIN_ALLOW_THREADS
 	res = fstat(fd, &st);
@@ -2591,7 +2626,7 @@
     HFILE read, write;
     APIRET rc;
 
-    if (!PyArg_Parse(args, ""))
+    if (!PyArg_ParseTuple(args, ":pipe"))
         return NULL;
 
 	Py_BEGIN_ALLOW_THREADS
@@ -2605,7 +2640,7 @@
 #if !defined(MS_WIN32)
 	int fds[2];
 	int res;
-	if (!PyArg_Parse(args, ""))
+	if (!PyArg_ParseTuple(args, ":pipe"))
 		return NULL;
 	Py_BEGIN_ALLOW_THREADS
 	res = pipe(fds);
@@ -2617,7 +2652,7 @@
 	HANDLE read, write;
 	int read_fd, write_fd;
 	BOOL ok;
-	if (!PyArg_Parse(args, ""))
+	if (!PyArg_ParseTuple(args, ":pipe"))
 		return NULL;
 	Py_BEGIN_ALLOW_THREADS
 	ok = CreatePipe(&read, &write, NULL, 0);
@@ -2646,7 +2681,7 @@
 	char *file;
 	int mode = 0666;
 	int res;
-	if (!PyArg_ParseTuple(args, "s|i", &file, &mode))
+	if (!PyArg_ParseTuple(args, "s|i:mkfifo", &file, &mode))
 		return NULL;
 	Py_BEGIN_ALLOW_THREADS
 	res = mkfifo(file, mode);
@@ -2674,7 +2709,7 @@
 	int res;
 	PyObject *lenobj;
 
-	if (!PyArg_Parse(args, "(iO)", &fd, &lenobj))
+	if (!PyArg_ParseTuple(args, "iO:ftruncate", &fd, &lenobj))
 		return NULL;
 
 #if !defined(HAVE_LARGEFILE_SUPPORT)
@@ -2800,7 +2835,7 @@
         char *new;
 	PyObject *newstr;
 
-	if (!PyArg_ParseTuple(args, "ss", &s1, &s2))
+	if (!PyArg_ParseTuple(args, "ss:putenv", &s1, &s2))
 		return NULL;
 
 #if defined(PYOS_OS2)
@@ -2869,7 +2904,7 @@
 {
 	int code;
 	char *message;
-	if (!PyArg_ParseTuple(args, "i", &code))
+	if (!PyArg_ParseTuple(args, "i:strerror", &code))
 		return NULL;
 	message = strerror(code);
 	if (message == NULL) {
@@ -2903,12 +2938,13 @@
 #endif
 	status_i = 0;
    
-	if (!PyArg_Parse(args, "i", &status_i))
+	if (!PyArg_ParseTuple(args, "i:WIFSTOPPED", &status_i))
 	{
 		return NULL;
 	}
    
 	return Py_BuildValue("i", WIFSTOPPED(status));
+#undef status_i
 }
 #endif /* WIFSTOPPED */
 
@@ -2931,12 +2967,13 @@
 #endif
 	status_i = 0;
    
-	if (!PyArg_Parse(args, "i", &status_i))
+	if (!PyArg_ParseTuple(args, "i:WIFSIGNALED", &status_i))
 	{
 		return NULL;
 	}
    
 	return Py_BuildValue("i", WIFSIGNALED(status));
+#undef status_i
 }
 #endif /* WIFSIGNALED */
 
@@ -2960,12 +2997,13 @@
 #endif
 	status_i = 0;
    
-	if (!PyArg_Parse(args, "i", &status_i))
+	if (!PyArg_ParseTuple(args, "i:WIFEXITED", &status_i))
 	{
 		return NULL;
 	}
    
 	return Py_BuildValue("i", WIFEXITED(status));
+#undef status_i
 }
 #endif /* WIFEXITED */
 
@@ -2988,12 +3026,13 @@
 #endif
 	status_i = 0;
    
-	if (!PyArg_Parse(args, "i", &status_i))
+	if (!PyArg_ParseTuple(args, "i:WEXITSTATUS", &status_i))
 	{
 		return NULL;
 	}
    
 	return Py_BuildValue("i", WEXITSTATUS(status));
+#undef status_i
 }
 #endif /* WEXITSTATUS */
 
@@ -3017,12 +3056,13 @@
 #endif
 	status_i = 0;
    
-	if (!PyArg_Parse(args, "i", &status_i))
+	if (!PyArg_ParseTuple(args, "i:WTERMSIG", &status_i))
 	{
 		return NULL;
 	}
    
 	return Py_BuildValue("i", WTERMSIG(status));
+#undef status_i
 }
 #endif /* WTERMSIG */
 
@@ -3045,12 +3085,13 @@
 #endif
 	status_i = 0;
    
-	if (!PyArg_Parse(args, "i", &status_i))
+	if (!PyArg_ParseTuple(args, "i:WSTOPSIG", &status_i))
 	{
 		return NULL;
 	}
    
 	return Py_BuildValue("i", WSTOPSIG(status));
+#undef status_i
 }
 #endif /* WSTOPSIG */
 
@@ -3077,7 +3118,7 @@
 {
 	int fd, res;
 	struct statvfs st;
-	if (!PyArg_ParseTuple(args, "i", &fd))
+	if (!PyArg_ParseTuple(args, "i:fstatvfs", &fd))
 		return NULL;
 	Py_BEGIN_ALLOW_THREADS
 	res = fstatvfs(fd, &st);
@@ -3129,7 +3170,7 @@
 	char *path;
 	int res;
 	struct statvfs st;
-	if (!PyArg_ParseTuple(args, "s", &path))
+	if (!PyArg_ParseTuple(args, "s:statvfs", &path))
 		return NULL;
 	Py_BEGIN_ALLOW_THREADS
 	res = statvfs(path, &st);
@@ -3165,173 +3206,292 @@
 #endif /* HAVE_STATVFS */
 
 
-static PyMethodDef posix_methods[] = {
-	{"access",	posix_access, 0, posix_access__doc__},
-#ifdef HAVE_TTYNAME
-	{"ttyname",	posix_ttyname, 0, posix_ttyname__doc__},
+#ifdef HAVE_TEMPNAM
+static char posix_tempnam__doc__[] = "\
+tempnam([dir[, prefix]]) -> string\n\
+Return a unique name for a temporary file.\n\
+The directory and a short may be specified as strings; they may be omitted\n\
+or None if not needed.";
+
+static PyObject *
+posix_tempnam(self, args)
+     PyObject *self;
+     PyObject *args;
+{
+    PyObject *result = NULL;
+    char *dir = NULL;
+    char *pfx = NULL;
+    char *name;
+
+    if (!PyArg_ParseTuple(args, "|zz:tempnam", &dir, &pfx))
+        return NULL;
+    name = tempnam(dir, pfx);
+    if (name == NULL)
+        return PyErr_NoMemory();
+    result = PyString_FromString(name);
+    free(name);
+    return result;
+}
 #endif
-	{"chdir",	posix_chdir, 0, posix_chdir__doc__},
-	{"chmod",	posix_chmod, 0, posix_chmod__doc__},
+
+
+#ifdef HAVE_TMPFILE
+static char posix_tmpfile__doc__[] = "\
+tmpfile() -> file object\n\
+Create a temporary file with no directory entries.";
+
+static PyObject *
+posix_tmpfile(self, args)
+     PyObject *self;
+     PyObject *args;
+{
+    FILE *fp;
+
+    if (!PyArg_ParseTuple(args, ":tmpfile"))
+        return NULL;
+    fp = tmpfile();
+    if (fp == NULL)
+        return posix_error();
+    return PyFile_FromFile(fp, "<tmpfile>", "w+", fclose);
+}
+#endif
+
+
+#ifdef HAVE_TMPNAM
+static char posix_tmpnam__doc__[] = "\
+tmpnam() -> string\n\
+Return a unique name for a temporary file.";
+
+static PyObject *
+posix_tmpnam(self, args)
+     PyObject *self;
+     PyObject *args;
+{
+    char buffer[L_tmpnam];
+    char *name;
+
+    if (!PyArg_ParseTuple(args, ":tmpnam"))
+        return NULL;
+#ifdef HAVE_TMPNAM_R
+    name = tmpnam_r(buffer);
+#else
+    name = tmpnam(buffer);
+#endif
+    if (name == NULL) {
+        PyErr_SetObject(PyExc_OSError,
+                        Py_BuildValue("is", 0,
+#ifdef HAVE_TMPNAM_R
+                                      "unexpected NULL from tmpnam_r"
+#else
+                                      "unexpected NULL from tmpnam"
+#endif
+                                      ));
+        return NULL;
+    }
+    return PyString_FromString(buffer);
+}
+#endif
+
+
+static char posix_abort__doc__[] = "\
+abort() -> does not return!\n\
+Abort the interpreter immediately.  This 'dumps core' or otherwise fails\n\
+in the hardest way possible on the hosting operating system.";
+
+static PyObject *
+posix_abort(self, args)
+     PyObject *self;
+     PyObject *args;
+{
+    if (!PyArg_ParseTuple(args, ":abort"))
+        return NULL;
+    abort();
+    /*NOTREACHED*/
+    Py_FatalError("abort() called from Python code didn't abort!");
+    return NULL;
+}
+                
+
+static PyMethodDef posix_methods[] = {
+	{"access",	posix_access, METH_VARARGS, posix_access__doc__},
+#ifdef HAVE_TTYNAME
+	{"ttyname",	posix_ttyname, METH_VARARGS, posix_ttyname__doc__},
+#endif
+	{"chdir",	posix_chdir, METH_VARARGS, posix_chdir__doc__},
+	{"chmod",	posix_chmod, METH_VARARGS, posix_chmod__doc__},
 #ifdef HAVE_CHOWN
-	{"chown",	posix_chown, 0, posix_chown__doc__},
+	{"chown",	posix_chown, METH_VARARGS, posix_chown__doc__},
 #endif /* HAVE_CHOWN */
+#ifdef HAVE_CTERMID
+	{"ctermid",	posix_ctermid, METH_VARARGS, posix_ctermid__doc__},
+#endif
 #ifdef HAVE_GETCWD
-	{"getcwd",	posix_getcwd, 0, posix_getcwd__doc__},
+	{"getcwd",	posix_getcwd, METH_VARARGS, posix_getcwd__doc__},
 #endif
 #ifdef HAVE_LINK
-	{"link",	posix_link, 0, posix_link__doc__},
+	{"link",	posix_link, METH_VARARGS, posix_link__doc__},
 #endif /* HAVE_LINK */
-	{"listdir",	posix_listdir, 0, posix_listdir__doc__},
-	{"lstat",	posix_lstat, 0, posix_lstat__doc__},
-	{"mkdir",	posix_mkdir, 1, posix_mkdir__doc__},
+	{"listdir",	posix_listdir, METH_VARARGS, posix_listdir__doc__},
+	{"lstat",	posix_lstat, METH_VARARGS, posix_lstat__doc__},
+	{"mkdir",	posix_mkdir, METH_VARARGS, posix_mkdir__doc__},
 #ifdef HAVE_NICE
-	{"nice",	posix_nice, 0, posix_nice__doc__},
+	{"nice",	posix_nice, METH_VARARGS, posix_nice__doc__},
 #endif /* HAVE_NICE */
 #ifdef HAVE_READLINK
-	{"readlink",	posix_readlink, 0, posix_readlink__doc__},
+	{"readlink",	posix_readlink, METH_VARARGS, posix_readlink__doc__},
 #endif /* HAVE_READLINK */
-	{"rename",	posix_rename, 0, posix_rename__doc__},
-	{"rmdir",	posix_rmdir, 0, posix_rmdir__doc__},
-	{"stat",	posix_stat, 0, posix_stat__doc__},
+	{"rename",	posix_rename, METH_VARARGS, posix_rename__doc__},
+	{"rmdir",	posix_rmdir, METH_VARARGS, posix_rmdir__doc__},
+	{"stat",	posix_stat, METH_VARARGS, posix_stat__doc__},
 #ifdef HAVE_SYMLINK
-	{"symlink",	posix_symlink, 0, posix_symlink__doc__},
+	{"symlink",	posix_symlink, METH_VARARGS, posix_symlink__doc__},
 #endif /* HAVE_SYMLINK */
 #ifdef HAVE_SYSTEM
-	{"system",	posix_system, 0, posix_system__doc__},
+	{"system",	posix_system, METH_VARARGS, posix_system__doc__},
 #endif
-	{"umask",	posix_umask, 0, posix_umask__doc__},
+	{"umask",	posix_umask, METH_VARARGS, posix_umask__doc__},
 #ifdef HAVE_UNAME
-	{"uname",	posix_uname, 0, posix_uname__doc__},
+	{"uname",	posix_uname, METH_VARARGS, posix_uname__doc__},
 #endif /* HAVE_UNAME */
-	{"unlink",	posix_unlink, 0, posix_unlink__doc__},
-	{"remove",	posix_unlink, 0, posix_remove__doc__},
-	{"utime",	posix_utime, 0, posix_utime__doc__},
+	{"unlink",	posix_unlink, METH_VARARGS, posix_unlink__doc__},
+	{"remove",	posix_unlink, METH_VARARGS, posix_remove__doc__},
+	{"utime",	posix_utime, METH_VARARGS, posix_utime__doc__},
 #ifdef HAVE_TIMES
-	{"times",	posix_times, 0, posix_times__doc__},
+	{"times",	posix_times, METH_VARARGS, posix_times__doc__},
 #endif /* HAVE_TIMES */
-	{"_exit",	posix__exit, 0, posix__exit__doc__},
+	{"_exit",	posix__exit, METH_VARARGS, posix__exit__doc__},
 #ifdef HAVE_EXECV
-	{"execv",	posix_execv, 0, posix_execv__doc__},
-	{"execve",	posix_execve, 0, posix_execve__doc__},
+	{"execv",	posix_execv, METH_VARARGS, posix_execv__doc__},
+	{"execve",	posix_execve, METH_VARARGS, posix_execve__doc__},
 #endif /* HAVE_EXECV */
 #ifdef HAVE_SPAWNV
-	{"spawnv",	posix_spawnv, 0, posix_spawnv__doc__},
-	{"spawnve",	posix_spawnve, 0, posix_spawnve__doc__},
+	{"spawnv",	posix_spawnv, METH_VARARGS, posix_spawnv__doc__},
+	{"spawnve",	posix_spawnve, METH_VARARGS, posix_spawnve__doc__},
 #endif /* HAVE_SPAWNV */
 #ifdef HAVE_FORK
-	{"fork",	posix_fork, 0, posix_fork__doc__},
+	{"fork",	posix_fork, METH_VARARGS, posix_fork__doc__},
 #endif /* HAVE_FORK */
 #ifdef HAVE_GETEGID
-	{"getegid",	posix_getegid, 0, posix_getegid__doc__},
+	{"getegid",	posix_getegid, METH_VARARGS, posix_getegid__doc__},
 #endif /* HAVE_GETEGID */
 #ifdef HAVE_GETEUID
-	{"geteuid",	posix_geteuid, 0, posix_geteuid__doc__},
+	{"geteuid",	posix_geteuid, METH_VARARGS, posix_geteuid__doc__},
 #endif /* HAVE_GETEUID */
 #ifdef HAVE_GETGID
-	{"getgid",	posix_getgid, 0, posix_getgid__doc__},
+	{"getgid",	posix_getgid, METH_VARARGS, posix_getgid__doc__},
 #endif /* HAVE_GETGID */
-	{"getpid",	posix_getpid, 0, posix_getpid__doc__},
+	{"getpid",	posix_getpid, METH_VARARGS, posix_getpid__doc__},
 #ifdef HAVE_GETPGRP
-	{"getpgrp",	posix_getpgrp, 0, posix_getpgrp__doc__},
+	{"getpgrp",	posix_getpgrp, METH_VARARGS, posix_getpgrp__doc__},
 #endif /* HAVE_GETPGRP */
 #ifdef HAVE_GETPPID
-	{"getppid",	posix_getppid, 0, posix_getppid__doc__},
+	{"getppid",	posix_getppid, METH_VARARGS, posix_getppid__doc__},
 #endif /* HAVE_GETPPID */
 #ifdef HAVE_GETUID
-	{"getuid",	posix_getuid, 0, posix_getuid__doc__},
+	{"getuid",	posix_getuid, METH_VARARGS, posix_getuid__doc__},
 #endif /* HAVE_GETUID */
 #ifdef HAVE_KILL
-	{"kill",	posix_kill, 0, posix_kill__doc__},
+	{"kill",	posix_kill, METH_VARARGS, posix_kill__doc__},
 #endif /* HAVE_KILL */
 #ifdef HAVE_PLOCK
-	{"plock",	posix_plock, 0, posix_plock__doc__},
+	{"plock",	posix_plock, METH_VARARGS, posix_plock__doc__},
 #endif /* HAVE_PLOCK */
 #ifdef HAVE_POPEN
-	{"popen",	posix_popen, 1, posix_popen__doc__},
+	{"popen",	posix_popen, METH_VARARGS, posix_popen__doc__},
 #endif /* HAVE_POPEN */
 #ifdef HAVE_SETUID
-	{"setuid",	posix_setuid, 0, posix_setuid__doc__},
+	{"setuid",	posix_setuid, METH_VARARGS, posix_setuid__doc__},
 #endif /* HAVE_SETUID */
 #ifdef HAVE_SETGID
-	{"setgid",	posix_setgid, 0, posix_setgid__doc__},
+	{"setgid",	posix_setgid, METH_VARARGS, posix_setgid__doc__},
 #endif /* HAVE_SETGID */
 #ifdef HAVE_SETPGRP
-	{"setpgrp",	posix_setpgrp, 0, posix_setpgrp__doc__},
+	{"setpgrp",	posix_setpgrp, METH_VARARGS, posix_setpgrp__doc__},
 #endif /* HAVE_SETPGRP */
 #ifdef HAVE_WAIT
-	{"wait",	posix_wait, 0, posix_wait__doc__},
+	{"wait",	posix_wait, METH_VARARGS, posix_wait__doc__},
 #endif /* HAVE_WAIT */
 #ifdef HAVE_WAITPID
-	{"waitpid",	posix_waitpid, 0, posix_waitpid__doc__},
+	{"waitpid",	posix_waitpid, METH_VARARGS, posix_waitpid__doc__},
 #endif /* HAVE_WAITPID */
 #ifdef HAVE_SETSID
-	{"setsid",	posix_setsid, 0, posix_setsid__doc__},
+	{"setsid",	posix_setsid, METH_VARARGS, posix_setsid__doc__},
 #endif /* HAVE_SETSID */
 #ifdef HAVE_SETPGID
-	{"setpgid",	posix_setpgid, 0, posix_setpgid__doc__},
+	{"setpgid",	posix_setpgid, METH_VARARGS, posix_setpgid__doc__},
 #endif /* HAVE_SETPGID */
 #ifdef HAVE_TCGETPGRP
-	{"tcgetpgrp",	posix_tcgetpgrp, 0, posix_tcgetpgrp__doc__},
+	{"tcgetpgrp",	posix_tcgetpgrp, METH_VARARGS, posix_tcgetpgrp__doc__},
 #endif /* HAVE_TCGETPGRP */
 #ifdef HAVE_TCSETPGRP
-	{"tcsetpgrp",	posix_tcsetpgrp, 0, posix_tcsetpgrp__doc__},
+	{"tcsetpgrp",	posix_tcsetpgrp, METH_VARARGS, posix_tcsetpgrp__doc__},
 #endif /* HAVE_TCSETPGRP */
-	{"open",	posix_open, 1, posix_open__doc__},
-	{"close",	posix_close, 0, posix_close__doc__},
-	{"dup",		posix_dup, 0, posix_dup__doc__},
-	{"dup2",	posix_dup2, 0, posix_dup2__doc__},
-	{"lseek",	posix_lseek, 0, posix_lseek__doc__},
-	{"read",	posix_read, 0, posix_read__doc__},
-	{"write",	posix_write, 0, posix_write__doc__},
-	{"fstat",	posix_fstat, 0, posix_fstat__doc__},
-	{"fdopen",	posix_fdopen,	1, posix_fdopen__doc__},
+	{"open",	posix_open, METH_VARARGS, posix_open__doc__},
+	{"close",	posix_close, METH_VARARGS, posix_close__doc__},
+	{"dup",		posix_dup, METH_VARARGS, posix_dup__doc__},
+	{"dup2",	posix_dup2, METH_VARARGS, posix_dup2__doc__},
+	{"lseek",	posix_lseek, METH_VARARGS, posix_lseek__doc__},
+	{"read",	posix_read, METH_VARARGS, posix_read__doc__},
+	{"write",	posix_write, METH_VARARGS, posix_write__doc__},
+	{"fstat",	posix_fstat, METH_VARARGS, posix_fstat__doc__},
+	{"fdopen",	posix_fdopen, METH_VARARGS, posix_fdopen__doc__},
 #ifdef HAVE_PIPE
-	{"pipe",	posix_pipe, 0, posix_pipe__doc__},
+	{"pipe",	posix_pipe, METH_VARARGS, posix_pipe__doc__},
 #endif
 #ifdef HAVE_MKFIFO
-	{"mkfifo",	posix_mkfifo, 1, posix_mkfifo__doc__},
+	{"mkfifo",	posix_mkfifo, METH_VARARGS, posix_mkfifo__doc__},
 #endif
 #ifdef HAVE_FTRUNCATE
-	{"ftruncate",	posix_ftruncate, 1, posix_ftruncate__doc__},
+	{"ftruncate",	posix_ftruncate, METH_VARARGS, posix_ftruncate__doc__},
 #endif
 #ifdef HAVE_PUTENV
-	{"putenv",	posix_putenv, 1, posix_putenv__doc__},
+	{"putenv",	posix_putenv, METH_VARARGS, posix_putenv__doc__},
 #endif
 #ifdef HAVE_STRERROR
-	{"strerror",	posix_strerror, 1, posix_strerror__doc__},
+	{"strerror",	posix_strerror, METH_VARARGS, posix_strerror__doc__},
 #endif
 #ifdef HAVE_FSYNC
-	{"fsync",       posix_fsync, 0, posix_fsync__doc__},
+	{"fsync",       posix_fsync, METH_VARARGS, posix_fsync__doc__},
 #endif
 #ifdef HAVE_FDATASYNC
-	{"fdatasync",   posix_fdatasync,  0, posix_fdatasync__doc__},
+	{"fdatasync",   posix_fdatasync,  METH_VARARGS, posix_fdatasync__doc__},
 #endif
 #ifdef HAVE_SYS_WAIT_H
 #ifdef WIFSTOPPED
-        {"WIFSTOPPED",	posix_WIFSTOPPED, 0, posix_WIFSTOPPED__doc__},
+        {"WIFSTOPPED",	posix_WIFSTOPPED, METH_VARARGS, posix_WIFSTOPPED__doc__},
 #endif /* WIFSTOPPED */
 #ifdef WIFSIGNALED
-        {"WIFSIGNALED",	posix_WIFSIGNALED, 0, posix_WIFSIGNALED__doc__},
+        {"WIFSIGNALED",	posix_WIFSIGNALED, METH_VARARGS, posix_WIFSIGNALED__doc__},
 #endif /* WIFSIGNALED */
 #ifdef WIFEXITED
-        {"WIFEXITED",	posix_WIFEXITED, 0, posix_WIFEXITED__doc__},
+        {"WIFEXITED",	posix_WIFEXITED, METH_VARARGS, posix_WIFEXITED__doc__},
 #endif /* WIFEXITED */
 #ifdef WEXITSTATUS
-        {"WEXITSTATUS",	posix_WEXITSTATUS, 0, posix_WEXITSTATUS__doc__},
+        {"WEXITSTATUS",	posix_WEXITSTATUS, METH_VARARGS, posix_WEXITSTATUS__doc__},
 #endif /* WEXITSTATUS */
 #ifdef WTERMSIG
-        {"WTERMSIG",	posix_WTERMSIG, 0, posix_WTERMSIG__doc__},
+        {"WTERMSIG",	posix_WTERMSIG, METH_VARARGS, posix_WTERMSIG__doc__},
 #endif /* WTERMSIG */
 #ifdef WSTOPSIG
-        {"WSTOPSIG",	posix_WSTOPSIG, 0, posix_WSTOPSIG__doc__},
+        {"WSTOPSIG",	posix_WSTOPSIG, METH_VARARGS, posix_WSTOPSIG__doc__},
 #endif /* WSTOPSIG */
 #endif /* HAVE_SYS_WAIT_H */
 #ifdef HAVE_FSTATVFS
-	{"fstatvfs",	posix_fstatvfs, 1, posix_fstatvfs__doc__},
+	{"fstatvfs",	posix_fstatvfs, METH_VARARGS, posix_fstatvfs__doc__},
 #endif
 #ifdef HAVE_STATVFS
-	{"statvfs",	posix_statvfs, 1, posix_statvfs__doc__},
+	{"statvfs",	posix_statvfs, METH_VARARGS, posix_statvfs__doc__},
 #endif
+#ifdef HAVE_TMPNAM
+	{"tmpfile",	posix_tmpfile, METH_VARARGS, posix_tmpfile__doc__},
+#endif
+#ifdef HAVE_TEMPNAM
+	{"tempnam",	posix_tempnam, METH_VARARGS, posix_tempnam__doc__},
+#endif
+#ifdef HAVE_TMPNAM
+	{"tmpnam",	posix_tmpnam, METH_VARARGS, posix_tmpnam__doc__},
+#endif
+	{"abort",	posix_abort, METH_VARARGS, posix_abort__doc__},
 	{NULL,		NULL}		 /* Sentinel */
 };
 
@@ -3425,6 +3585,9 @@
 #ifdef X_OK
         if (ins(d, "X_OK", (long)X_OK)) return -1;
 #endif        
+#ifdef TMP_MAX
+        if (ins(d, "TMP_MAX", (long)TMP_MAX)) return -1;
+#endif
 #ifdef WNOHANG
         if (ins(d, "WNOHANG", (long)WNOHANG)) return -1;
 #endif