Added doc strings (Neil Schemenauer).
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 5ce985f..9019e0c 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -40,6 +40,14 @@
 
 /* See also ../Dos/dosmodule.c */
 
+static char posix__doc__ [] =
+"This module provides access to operating system functionality that is\n\
+standardized by the C Standard and the POSIX standard (a thinly\n\
+disguised Unix interface).  Refer to the library manual and\n\
+corresponding Unix manual entries for more information on calls.";
+
+
+
 #include "Python.h"
 
 #include <sys/types.h>
@@ -377,6 +385,10 @@
 
 /* POSIX methods */
 
+static char posix_chdir__doc__[] =
+"chdir(path) -> None\n\
+Change the current working directory to the specified path.";
+
 static PyObject *
 posix_chdir(self, args)
 	PyObject *self;
@@ -385,6 +397,11 @@
 	return posix_1str(args, chdir);
 }
 
+
+static char posix_chmod__doc__[] =
+"chmod(path, mode) -> None\n\
+Change the access permissions of a file.";
+
 static PyObject *
 posix_chmod(self, args)
 	PyObject *self;
@@ -393,7 +410,12 @@
 	return posix_strint(args, chmod);
 }
 
+
 #ifdef HAVE_CHOWN
+static char posix_chown__doc__[] =
+"chown(path, uid, gid) -> None\n\
+Change the owner and group id of path to the numeric uid and gid.";
+
 static PyObject *
 posix_chown(self, args)
 	PyObject *self;
@@ -403,7 +425,12 @@
 }
 #endif /* HAVE_CHOWN */
 
+
 #ifdef HAVE_GETCWD
+static char posix_getcwd__doc__[] =
+"getcwd() -> path\n\
+Return a string representing the current working directory.";
+
 static PyObject *
 posix_getcwd(self, args)
 	PyObject *self;
@@ -422,7 +449,12 @@
 }
 #endif
 
+
 #ifdef HAVE_LINK
+static char posix_link__doc__[] =
+"link(src, dst) -> None\n\
+Create a hard link to a file.";
+
 static PyObject *
 posix_link(self, args)
 	PyObject *self;
@@ -432,6 +464,16 @@
 }
 #endif /* HAVE_LINK */
 
+
+static char posix_listdir__doc__[] =
+"listdir(path) -> list_of_strings\n\
+Return a list containing the names of the entries in the directory.\n\
+\n\
+	path: path of directory to list\n\
+\n\
+The list is in arbitrary order.  It does not include the special\n\
+entries '.' and '..' even if they are present in the directory.";
+
 static PyObject *
 posix_listdir(self, args)
 	PyObject *self;
@@ -601,6 +643,10 @@
 #endif /* !MS_WIN32 */
 }
 
+static char posix_mkdir__doc__[] =
+"mkdir(path [, mode=0777]) -> None\n\
+Create a directory.";
+
 static PyObject *
 posix_mkdir(self, args)
 	PyObject *self;
@@ -624,7 +670,12 @@
 	return Py_None;
 }
 
+
 #ifdef HAVE_NICE
+static char posix_nice__doc__[] =
+"nice(inc) -> new_priority\n\
+Decrease the priority of process and return new priority.";
+
 static PyObject *
 posix_nice(self, args)
 	PyObject *self;
@@ -641,6 +692,11 @@
 }
 #endif /* HAVE_NICE */
 
+
+static char posix_rename__doc__[] =
+"rename(old, new) -> None\n\
+Rename a file or directory.";
+
 static PyObject *
 posix_rename(self, args)
 	PyObject *self;
@@ -649,6 +705,11 @@
 	return posix_2str(args, rename);
 }
 
+
+static char posix_rmdir__doc__[] =
+"rmdir(path) -> None\n\
+Remove a directory.";
+
 static PyObject *
 posix_rmdir(self, args)
 	PyObject *self;
@@ -657,6 +718,11 @@
 	return posix_1str(args, rmdir);
 }
 
+
+static char posix_stat__doc__[] =
+"stat(path) -> (mode,ino,dev,nlink,uid,gid,size,atime,mtime,ctime)\n\
+Perform a stat system call on the given path.";
+
 static PyObject *
 posix_stat(self, args)
 	PyObject *self;
@@ -665,7 +731,12 @@
 	return posix_do_stat(self, args, stat);
 }
 
+
 #ifdef HAVE_SYSTEM
+static char posix_system__doc__[] =
+"system(command) -> exit_status\n\
+Execute the command (a string) in a subshell.";
+
 static PyObject *
 posix_system(self, args)
 	PyObject *self;
@@ -682,6 +753,11 @@
 }
 #endif
 
+
+static char posix_umask__doc__[] =
+"umask(new_mask) -> old_mask\n\
+Set the current numeric umask and return the previous umask.";
+
 static PyObject *
 posix_umask(self, args)
 	PyObject *self;
@@ -696,6 +772,15 @@
 	return PyInt_FromLong((long)i);
 }
 
+
+static char posix_unlink__doc__[] =
+"unlink(path) -> None\n\
+Remove a file (same as remove(path)).";
+
+static char posix_remove__doc__[] =
+"remove(path) -> None\n\
+Remove a file (same as unlink(path)).";
+
 static PyObject *
 posix_unlink(self, args)
 	PyObject *self;
@@ -704,7 +789,12 @@
 	return posix_1str(args, unlink);
 }
 
+
 #ifdef HAVE_UNAME
+static char posix_uname__doc__[] =
+"uname() -> (sysname, nodename, release, version, machine)\n\
+Return a tuple identifying the current operating system.";
+
 static PyObject *
 posix_uname(self, args)
 	PyObject *self;
@@ -728,6 +818,11 @@
 }
 #endif /* HAVE_UNAME */
 
+
+static char posix_utime__doc__[] =
+"utime(path, (atime, utime)) -> None\n\
+Set the access and modified time of the file to the given values.";
+
 static PyObject *
 posix_utime(self, args)
 	PyObject *self;
@@ -768,6 +863,10 @@
 
 /* Process operations */
 
+static char posix__exit__doc__[] =
+"_exit(status)\n\
+Exit to the system with specified status, without normal exit processing.";
+
 static PyObject *
 posix__exit(self, args)
 	PyObject *self;
@@ -780,7 +879,15 @@
 	return NULL; /* Make gcc -Wall happy */
 }
 
+
 #ifdef HAVE_EXECV
+static char posix_execv__doc__[] =
+"execv(path, args)\n\
+Execute an executable path with arguments, replacing current process.\n\
+\n\
+	path: path of executable file\n\
+	args: tuple or list of strings";
+
 static PyObject *
 posix_execv(self, args)
 	PyObject *self;
@@ -834,6 +941,15 @@
 	return posix_error();
 }
 
+
+static char posix_execve__doc__[] =
+"execve(path, args, env)\n\
+Execute a path with arguments and environment, replacing current process.\n\
+\n\
+	path: path of executable file\n\
+	args: tuple or list of arguments\n\
+	env: dictonary of strings mapping to strings";
+
 static PyObject *
 posix_execve(self, args)
 	PyObject *self;
@@ -943,7 +1059,14 @@
 }
 #endif /* HAVE_EXECV */
 
+
 #ifdef HAVE_FORK
+static char posix_fork__doc__[] =
+"fork() -> pid\n\
+Fork a child process.\n\
+\n\
+Return 0 to child process and PID of child to parent process.";
+
 static PyObject *
 posix_fork(self, args)
 	PyObject *self;
@@ -959,7 +1082,12 @@
 }
 #endif
 
+
 #ifdef HAVE_GETEGID
+static char posix_getegid__doc__[] =
+"getegid() -> egid\n\
+Return the current process's effective group id.";
+
 static PyObject *
 posix_getegid(self, args)
 	PyObject *self;
@@ -971,7 +1099,12 @@
 }
 #endif
 
+
 #ifdef HAVE_GETEUID
+static char posix_geteuid__doc__[] =
+"geteuid() -> euid\n\
+Return the current process's effective user id.";
+
 static PyObject *
 posix_geteuid(self, args)
 	PyObject *self;
@@ -983,7 +1116,12 @@
 }
 #endif
 
+
 #ifdef HAVE_GETGID
+static char posix_getgid__doc__[] =
+"getgid() -> gid\n\
+Return the current process's group id.";
+
 static PyObject *
 posix_getgid(self, args)
 	PyObject *self;
@@ -995,6 +1133,11 @@
 }
 #endif
 
+
+static char posix_getpid__doc__[] =
+"getpid() -> pid\n\
+Return the current process id";
+
 static PyObject *
 posix_getpid(self, args)
 	PyObject *self;
@@ -1005,7 +1148,12 @@
 	return PyInt_FromLong((long)getpid());
 }
 
+
 #ifdef HAVE_GETPGRP
+static char posix_getpgrp__doc__[] =
+"getpgrp() -> pgrp\n\
+Return the current process group id.";
+
 static PyObject *
 posix_getpgrp(self, args)
 	PyObject *self;
@@ -1021,7 +1169,12 @@
 }
 #endif /* HAVE_GETPGRP */
 
+
 #ifdef HAVE_SETPGRP
+static char posix_setpgrp__doc__[] =
+"setpgrp() -> None\n\
+Make this process a session leader.";
+
 static PyObject *
 posix_setpgrp(self, args)
 	PyObject *self;
@@ -1042,6 +1195,10 @@
 #endif /* HAVE_SETPGRP */
 
 #ifdef HAVE_GETPPID
+static char posix_getppid__doc__[] =
+"getppid() -> ppid\n\
+Return the parent's process id.";
+
 static PyObject *
 posix_getppid(self, args)
 	PyObject *self;
@@ -1053,7 +1210,12 @@
 }
 #endif
 
+
 #ifdef HAVE_GETUID
+static char posix_getuid__doc__[] =
+"getuid() -> uid\n\
+Return the current process's user id.";
+
 static PyObject *
 posix_getuid(self, args)
 	PyObject *self;
@@ -1065,7 +1227,12 @@
 }
 #endif
 
+
 #ifdef HAVE_KILL
+static char posix_kill__doc__[] =
+"kill(pid, sig) -> None\n\
+Kill a process with a signal.";
+
 static PyObject *
 posix_kill(self, args)
 	PyObject *self;
@@ -1087,6 +1254,10 @@
 #include <sys/lock.h>
 #endif
 
+static char posix_plock__doc__[] =
+"plock(op) -> None\n\
+Lock program segments into memory.";
+
 static PyObject *
 posix_plock(self, args)
 	PyObject *self;
@@ -1102,7 +1273,12 @@
 }
 #endif
 
+
 #ifdef HAVE_POPEN
+static char posix_popen__doc__[] =
+"popen(command [, mode='r' [, bufsize]]) -> pipe\n\
+Open a pipe to/from a command returning a file object.";
+
 static PyObject *
 posix_popen(self, args)
 	PyObject *self;
@@ -1127,7 +1303,11 @@
 }
 #endif /* HAVE_POPEN */
 
+
 #ifdef HAVE_SETUID
+static char posix_setuid__doc__[] =
+"setuid(uid) -> None\n\
+Set the current process's user id.";
 static PyObject *
 posix_setuid(self, args)
 	PyObject *self;
@@ -1143,7 +1323,12 @@
 }
 #endif /* HAVE_SETUID */
 
+
 #ifdef HAVE_SETGID
+static char posix_setgid__doc__[] =
+"setgid(gid) -> None\n\
+Set the current process's group id.";
+
 static PyObject *
 posix_setgid(self, args)
 	PyObject *self;
@@ -1159,7 +1344,12 @@
 }
 #endif /* HAVE_SETGID */
 
+
 #ifdef HAVE_WAITPID
+static char posix_waitpid__doc__[] =
+"waitpid(pid, options) -> (pid, status)\n\
+Wait for completion of a give child process.";
+
 static PyObject *
 posix_waitpid(self, args)
 	PyObject *self;
@@ -1182,7 +1372,12 @@
 }
 #endif /* HAVE_WAITPID */
 
+
 #ifdef HAVE_WAIT
+static char posix_wait__doc__[] =
+"wait() -> (pid, status)\n\
+Wait for completion of a child process.";
+
 static PyObject *
 posix_wait(self, args)
 	PyObject *self;
@@ -1203,6 +1398,11 @@
 }
 #endif
 
+
+static char posix_lstat__doc__[] =
+"lstat(path) -> (mode,ino,dev,nlink,uid,gid,size,atime,mtime,ctime)\n\
+Like stat(path), but do not follow symbolic links.";
+
 static PyObject *
 posix_lstat(self, args)
 	PyObject *self;
@@ -1215,7 +1415,12 @@
 #endif /* !HAVE_LSTAT */
 }
 
+
 #ifdef HAVE_READLINK
+static char posix_readlink__doc__[] =
+"readlink(path) -> path\n\
+Return a string representing the path to which the symbolic link points.";
+
 static PyObject *
 posix_readlink(self, args)
 	PyObject *self;
@@ -1235,7 +1440,12 @@
 }
 #endif /* HAVE_READLINK */
 
+
 #ifdef HAVE_SYMLINK
+static char posix_symlink__doc__[] =
+"symlink(src, dst) -> None\n\
+Create a symbolic link.";
+
 static PyObject *
 posix_symlink(self, args)
 	PyObject *self;
@@ -1249,6 +1459,10 @@
 #ifndef HZ
 #define HZ 60 /* Universal constant :-) */
 #endif /* HZ */
+static char posix_times__doc__[] =
+"times() -> (utime, stime, cutime, cstime, elapsed_time)\n\
+Return a tuple of floating point numbers indicating process times.";
+	
 static PyObject *
 posix_times(self, args)
 	PyObject *self;
@@ -1293,7 +1507,12 @@
 }
 #endif /* MS_WIN32 */
 
+
 #ifdef HAVE_SETSID
+static char posix_setsid__doc__[] =
+"setsid() -> None\n\
+Call the system call setsid().";
+
 static PyObject *
 posix_setsid(self, args)
 	PyObject *self;
@@ -1309,6 +1528,10 @@
 #endif /* HAVE_SETSID */
 
 #ifdef HAVE_SETPGID
+static char posix_setpgid__doc__[] =
+"setpgid(pid, pgrp) -> None\n\
+Call the system call setpgid().";
+
 static PyObject *
 posix_setpgid(self, args)
 	PyObject *self;
@@ -1324,7 +1547,12 @@
 }
 #endif /* HAVE_SETPGID */
 
+
 #ifdef HAVE_TCGETPGRP
+static char posix_tcgetpgrp__doc__[] =
+"tcgetpgrp(fd) -> pgid\n\
+Return the process group associated with the terminal given by a fd.";
+
 static PyObject *
 posix_tcgetpgrp(self, args)
 	PyObject *self;
@@ -1340,7 +1568,12 @@
 }
 #endif /* HAVE_TCGETPGRP */
 
+
 #ifdef HAVE_TCSETPGRP
+static char posix_tcsetpgrp__doc__[] =
+"tcsetpgrp(fd, pgid) -> None\n\
+Set the process group associated with the terminal given by a fd.";
+
 static PyObject *
 posix_tcsetpgrp(self, args)
 	PyObject *self;
@@ -1358,6 +1591,10 @@
 
 /* Functions acting on file descriptors */
 
+static char posix_open__doc__[] =
+"open(filename, flag [, mode=0777]) -> fd\n\
+Open a file (for low level IO).";
+
 static PyObject *
 posix_open(self, args)
 	PyObject *self;
@@ -1378,6 +1615,11 @@
 	return PyInt_FromLong((long)fd);
 }
 
+
+static char posix_close__doc__[] =
+"close(fd) -> None\n\
+Close a file descriptor (for low level IO).";
+
 static PyObject *
 posix_close(self, args)
 	PyObject *self;
@@ -1395,6 +1637,11 @@
 	return Py_None;
 }
 
+
+static char posix_dup__doc__[] =
+"dup(fd) -> fd2\n\
+Return a duplicate of a file descriptor.";
+
 static PyObject *
 posix_dup(self, args)
 	PyObject *self;
@@ -1411,6 +1658,11 @@
 	return PyInt_FromLong((long)fd);
 }
 
+
+static char posix_dup2__doc__[] =
+"dup2(fd, fd2) -> None\n\
+Duplicate file descriptor.";
+
 static PyObject *
 posix_dup2(self, args)
 	PyObject *self;
@@ -1428,6 +1680,11 @@
 	return Py_None;
 }
 
+
+static char posix_lseek__doc__[] =
+"lseek(fd, pos, how) -> newpos\n\
+Set the current position of a file descriptor.";
+
 static PyObject *
 posix_lseek(self, args)
 	PyObject *self;
@@ -1453,6 +1710,11 @@
 	return PyInt_FromLong(res);
 }
 
+
+static char posix_read__doc__[] =
+"read(fd, buffersize) -> string\n\
+Read a file descriptor.";
+
 static PyObject *
 posix_read(self, args)
 	PyObject *self;
@@ -1477,6 +1739,11 @@
 	return buffer;
 }
 
+
+static char posix_write__doc__[] =
+"write(fd, string) -> byteswritten\n\
+Write a string to a file descriptor.";
+
 static PyObject *
 posix_write(self, args)
 	PyObject *self;
@@ -1494,6 +1761,11 @@
 	return PyInt_FromLong((long)size);
 }
 
+
+static char posix_fstat__doc__[]=
+"fstat(fd) -> (mode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime)\n\
+Like stat(), but for an open file descriptor.";
+
 static PyObject *
 posix_fstat(self, args)
 	PyObject *self;
@@ -1522,6 +1794,11 @@
 			     (long)st.st_ctime);
 }
 
+
+static char posix_fdopen__doc__[] =
+"fdopen(fd, [, mode='r' [, bufsize]]) -> file_object\n\
+Return an open file object connected to a file descriptor.";
+
 static PyObject *
 posix_fdopen(self, args)
 	PyObject *self;
@@ -1547,7 +1824,12 @@
 	return f;
 }
 
+
 #ifdef HAVE_PIPE
+static char posix_pipe__doc__[] =
+"pipe() -> (read_end, write_end)\n\
+Create a pipe.";
+
 static PyObject *
 posix_pipe(self, args)
 	PyObject *self;
@@ -1579,7 +1861,12 @@
 }
 #endif  /* HAVE_PIPE */
 
+
 #ifdef HAVE_MKFIFO
+static char posix_mkfifo__doc__[] =
+"mkfifo(file, [, mode=0666]) -> None\n\
+Create a FIFO (a POSIX named pipe).";
+
 static PyObject *
 posix_mkfifo(self, args)
 	PyObject *self;
@@ -1600,7 +1887,12 @@
 }
 #endif
 
+
 #ifdef HAVE_FTRUNCATE
+static char posix_ftruncate__doc__[] =
+"ftruncate(fd, length) -> None\n\
+Truncate a file to a specified length.";
+
 static PyObject *
 posix_ftruncate(self, args)
 	PyObject *self; /* Not used */
@@ -1703,7 +1995,12 @@
 }
 #endif NeXT
 
+
 #ifdef HAVE_PUTENV
+static char posix_putenv__doc__[] =
+"putenv(key, value) -> None\n\
+Change or add an environment variable.";
+
 static PyObject * 
 posix_putenv(self,args)
 	PyObject *self;
@@ -1728,128 +2025,128 @@
 #endif
 
 static PyMethodDef posix_methods[] = {
-	{"chdir",	posix_chdir},
-	{"chmod",	posix_chmod},
+	{"chdir",	posix_chdir, 0, posix_chdir__doc__},
+	{"chmod",	posix_chmod, 0, posix_chmod__doc__},
 #ifdef HAVE_CHOWN
-	{"chown",	posix_chown},
+	{"chown",	posix_chown, 0, posix_chown__doc__},
 #endif /* HAVE_CHOWN */
 #ifdef HAVE_GETCWD
-	{"getcwd",	posix_getcwd},
+	{"getcwd",	posix_getcwd, 0, posix_getcwd__doc__},
 #endif
 #ifdef HAVE_LINK
-	{"link",	posix_link},
+	{"link",	posix_link, 0, posix_link__doc__},
 #endif /* HAVE_LINK */
-	{"listdir",	posix_listdir},
-	{"lstat",	posix_lstat},
-	{"mkdir",	posix_mkdir, 1},
+	{"listdir",	posix_listdir, 0, posix_listdir__doc__},
+	{"lstat",	posix_lstat, 0, posix_lstat__doc__},
+	{"mkdir",	posix_mkdir, 1, posix_mkdir__doc__},
 #ifdef HAVE_NICE
-	{"nice",	posix_nice},
+	{"nice",	posix_nice, 0, posix_nice__doc__},
 #endif /* HAVE_NICE */
 #ifdef HAVE_READLINK
-	{"readlink",	posix_readlink},
+	{"readlink",	posix_readlink, 0, posix_readlink__doc__},
 #endif /* HAVE_READLINK */
-	{"rename",	posix_rename},
-	{"rmdir",	posix_rmdir},
-	{"stat",	posix_stat},
+	{"rename",	posix_rename, 0, posix_rename__doc__},
+	{"rmdir",	posix_rmdir, 0, posix_rmdir__doc__},
+	{"stat",	posix_stat, 0, posix_stat__doc__},
 #ifdef HAVE_SYMLINK
-	{"symlink",	posix_symlink},
+	{"symlink",	posix_symlink, 0, posix_symlink__doc__},
 #endif /* HAVE_SYMLINK */
 #ifdef HAVE_SYSTEM
-	{"system",	posix_system},
+	{"system",	posix_system, 0, posix_system__doc__},
 #endif
-	{"umask",	posix_umask},
+	{"umask",	posix_umask, 0, posix_umask__doc__},
 #ifdef HAVE_UNAME
-	{"uname",	posix_uname},
+	{"uname",	posix_uname, 0, posix_uname__doc__},
 #endif /* HAVE_UNAME */
-	{"unlink",	posix_unlink},
-	{"remove",	posix_unlink},
-	{"utime",	posix_utime},
+	{"unlink",	posix_unlink, 0, posix_unlink__doc__},
+	{"remove",	posix_unlink, 0, posix_remove__doc__},
+	{"utime",	posix_utime, 0, posix_utime__doc__},
 #ifdef HAVE_TIMES
-	{"times",	posix_times},
+	{"times",	posix_times, 0, posix_times__doc__},
 #endif /* HAVE_TIMES */
-	{"_exit",	posix__exit},
+	{"_exit",	posix__exit, 0, posix__exit__doc__},
 #ifdef HAVE_EXECV
-	{"execv",	posix_execv},
-	{"execve",	posix_execve},
+	{"execv",	posix_execv, 0, posix_execv__doc__},
+	{"execve",	posix_execve, 0, posix_execve__doc__},
 #endif /* HAVE_EXECV */
 #ifdef HAVE_FORK
-	{"fork",	posix_fork},
+	{"fork",	posix_fork, 0, posix_fork__doc__},
 #endif /* HAVE_FORK */
 #ifdef HAVE_GETEGID
-	{"getegid",	posix_getegid},
+	{"getegid",	posix_getegid, 0, posix_getegid__doc__},
 #endif /* HAVE_GETEGID */
 #ifdef HAVE_GETEUID
-	{"geteuid",	posix_geteuid},
+	{"geteuid",	posix_geteuid, 0, posix_geteuid__doc__},
 #endif /* HAVE_GETEUID */
 #ifdef HAVE_GETGID
-	{"getgid",	posix_getgid},
+	{"getgid",	posix_getgid, 0, posix_getgid__doc__},
 #endif /* HAVE_GETGID */
-	{"getpid",	posix_getpid},
+	{"getpid",	posix_getpid, 0, posix_getpid__doc__},
 #ifdef HAVE_GETPGRP
-	{"getpgrp",	posix_getpgrp},
+	{"getpgrp",	posix_getpgrp, 0, posix_getpgrp__doc__},
 #endif /* HAVE_GETPGRP */
 #ifdef HAVE_GETPPID
-	{"getppid",	posix_getppid},
+	{"getppid",	posix_getppid, 0, posix_getppid__doc__},
 #endif /* HAVE_GETPPID */
 #ifdef HAVE_GETUID
-	{"getuid",	posix_getuid},
+	{"getuid",	posix_getuid, 0, posix_getuid__doc__},
 #endif /* HAVE_GETUID */
 #ifdef HAVE_KILL
-	{"kill",	posix_kill},
+	{"kill",	posix_kill, 0, posix_kill__doc__},
 #endif /* HAVE_KILL */
 #ifdef HAVE_PLOCK
-	{"plock",	posix_plock},
+	{"plock",	posix_plock, 0, posix_plock__doc__},
 #endif /* HAVE_PLOCK */
 #ifdef HAVE_POPEN
-	{"popen",	posix_popen,	1},
+	{"popen",	posix_popen, 1, posix_popen__doc__},
 #endif /* HAVE_POPEN */
 #ifdef HAVE_SETUID
-	{"setuid",	posix_setuid},
+	{"setuid",	posix_setuid, 0, posix_setuid__doc__},
 #endif /* HAVE_SETUID */
 #ifdef HAVE_SETGID
-	{"setgid",	posix_setgid},
+	{"setgid",	posix_setgid, 0, posix_setgid__doc__},
 #endif /* HAVE_SETGID */
 #ifdef HAVE_SETPGRP
-	{"setpgrp",	posix_setpgrp},
+	{"setpgrp",	posix_setpgrp, 0, posix_setpgrp__doc__},
 #endif /* HAVE_SETPGRP */
 #ifdef HAVE_WAIT
-	{"wait",	posix_wait},
+	{"wait",	posix_wait, 0, posix_wait__doc__},
 #endif /* HAVE_WAIT */
 #ifdef HAVE_WAITPID
-	{"waitpid",	posix_waitpid},
+	{"waitpid",	posix_waitpid, 0, posix_waitpid__doc__},
 #endif /* HAVE_WAITPID */
 #ifdef HAVE_SETSID
-	{"setsid",	posix_setsid},
+	{"setsid",	posix_setsid, 0, posix_setsid__doc__},
 #endif /* HAVE_SETSID */
 #ifdef HAVE_SETPGID
-	{"setpgid",	posix_setpgid},
+	{"setpgid",	posix_setpgid, 0, posix_setpgid__doc__},
 #endif /* HAVE_SETPGID */
 #ifdef HAVE_TCGETPGRP
-	{"tcgetpgrp",	posix_tcgetpgrp},
+	{"tcgetpgrp",	posix_tcgetpgrp, 0, posix_tcgetpgrp__doc__},
 #endif /* HAVE_TCGETPGRP */
 #ifdef HAVE_TCSETPGRP
-	{"tcsetpgrp",	posix_tcsetpgrp},
+	{"tcsetpgrp",	posix_tcsetpgrp, 0, posix_tcsetpgrp__doc__},
 #endif /* HAVE_TCSETPGRP */
-	{"open",	posix_open, 1},
-	{"close",	posix_close},
-	{"dup",		posix_dup},
-	{"dup2",	posix_dup2},
-	{"lseek",	posix_lseek},
-	{"read",	posix_read},
-	{"write",	posix_write},
-	{"fstat",	posix_fstat},
-	{"fdopen",	posix_fdopen,	1},
+	{"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__},
 #ifdef HAVE_PIPE
-	{"pipe",	posix_pipe},
+	{"pipe",	posix_pipe, 0, posix_pipe__doc__},
 #endif
 #ifdef HAVE_MKFIFO
-	{"mkfifo",	posix_mkfifo, 1},
+	{"mkfifo",	posix_mkfifo, 1, posix_mkfifo__doc__},
 #endif
 #ifdef HAVE_FTRUNCATE
-	{"ftruncate",	posix_ftruncate, 1},
+	{"ftruncate",	posix_ftruncate, 1, posix_ftruncate__doc__},
 #endif
 #ifdef HAVE_PUTENV
-	{"putenv",	posix_putenv, 1},
+	{"putenv",	posix_putenv, 1, posix_putenv__doc__},
 #endif
 	{NULL,		NULL}		 /* Sentinel */
 };
@@ -1927,7 +2224,11 @@
 {
 	PyObject *m, *d, *v;
 	
-	m = Py_InitModule("nt", posix_methods);
+	m = Py_InitModule4("nt", 
+			   posix_methods,
+			   posix__doc__,
+			  (PyObject *)NULL,
+			  PYTHON_API_VERSION);
 	d = PyModule_GetDict(m);
 	
 	/* Initialize nt.environ dictionary */
@@ -1955,7 +2256,11 @@
 {
 	PyObject *m, *d, *v;
 	
-	m = Py_InitModule("posix", posix_methods);
+	m = Py_InitModule4("posix", 
+			   posix_methods,
+			   posix__doc__,
+			  (PyObject *)NULL,
+			  PYTHON_API_VERSION);
 	d = PyModule_GetDict(m);
 	
 	/* Initialize posix.environ dictionary */