From ad0ee8369c63197a984a40a3b362ff29100d01bb Mon Sep 17 00:00:00 2001
From: Guido van Rossum <guido@python.org>
Date: Wed, 1 Mar 1995 10:34:45 +0000
Subject: changes for NT/Borland C

---
 Modules/posixmodule.c | 86 ++++++++++++++++++++++++++++++++++++++-------------
 1 file changed, 65 insertions(+), 21 deletions(-)

diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index dec9db6..76ba388 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -24,6 +24,15 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
 /* POSIX module implementation */
 
+/* This file is also used for Windows NT.  In that case the module
+   actually calls itself 'nt', not 'posix', and a few functions are
+   either unimplemented or implemented differently.  The source
+   assumes that for Windows NT, the macro 'NT' is defined independent
+   of the compiler used.  Different compilers define their own feature
+   test macro, e.g. '__BORLANDC__' or '_MSCVER'. */
+
+/* For MS-DOS and Windows 3.x, use ../Dos/dosmodule.c */
+
 #include "allobjects.h"
 #include "modsupport.h"
 #include "ceval.h"
@@ -40,8 +49,29 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #endif /* HAVE_FCNTL_H */
 
 #ifndef NT
+#define HAVE_FORK	1
+#endif
+
+#if !defined(NT) || defined(__BORLANDC__)
+/* Unix functions that the configure script doesn't check for
+   and that aren't easily available under NT except with Borland C */
+#define HAVE_GETEGID	1
+#define HAVE_GETEUID	1
+#define HAVE_GETGID	1
+#define HAVE_GETPPID	1
+#define HAVE_GETUID	1
+#define HAVE_KILL	1
+#define HAVE_WAIT	1
+#endif
+
+#ifndef NT
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>
+/* XXX These are for SunOS4.1.3 but shouldn't hurt elsewhere */
+extern int rename();
+extern int pclose();
+extern int lstat();
+extern int symlink();
 #else /* !HAVE_UNISTD_H */
 extern int mkdir PROTO((const char *, mode_t));
 extern int chdir PROTO((const char *));
@@ -64,14 +94,6 @@ extern int lstat PROTO((const char *, struct stat *));
 #endif /* !HAVE_UNISTD_H */
 #endif /* !NT */
 
-#ifndef NT
-/* XXX These are for SunOS4.1.3 but shouldn't hurt elsewhere */
-extern int rename();
-extern int pclose();
-extern int lstat();
-extern int symlink();
-#endif /* !NT */
-
 #ifdef HAVE_UTIME_H
 #include <utime.h>
 #endif /* HAVE_UTIME_H */
@@ -165,7 +187,9 @@ static object *PosixError; /* Exception posix.error */
 
 /* Set a POSIX-specific error from errno, and return NULL */
 
-static object * posix_error() { 	return err_errno(PosixError);
+static object * posix_error()
+{
+	return err_errno(PosixError);
 }
 
 
@@ -738,7 +762,7 @@ posix_execve(self, args)
 	return NULL;
 }
 
-#ifndef NT
+#ifdef HAVE_FORK
 static object *
 posix_fork(self, args)
 	object *self;
@@ -752,7 +776,9 @@ posix_fork(self, args)
 		return posix_error();
 	return newintobject((long)pid);
 }
+#endif
 
+#ifdef HAVE_GETEGID
 static object *
 posix_getegid(self, args)
 	object *self;
@@ -762,7 +788,9 @@ posix_getegid(self, args)
 		return NULL;
 	return newintobject((long)getegid());
 }
+#endif
 
+#ifdef HAVE_GETEUID
 static object *
 posix_geteuid(self, args)
 	object *self;
@@ -772,7 +800,9 @@ posix_geteuid(self, args)
 		return NULL;
 	return newintobject((long)geteuid());
 }
+#endif
 
+#ifdef HAVE_GETGID
 static object *
 posix_getgid(self, args)
 	object *self;
@@ -782,7 +812,7 @@ posix_getgid(self, args)
 		return NULL;
 	return newintobject((long)getgid());
 }
-#endif /* !NT */
+#endif
 
 static object *
 posix_getpid(self, args)
@@ -830,7 +860,7 @@ posix_setpgrp(self, args)
 
 #endif /* HAVE_SETPGRP */
 
-#ifndef NT
+#ifdef HAVE_GETPPID
 static object *
 posix_getppid(self, args)
 	object *self;
@@ -840,7 +870,9 @@ posix_getppid(self, args)
 		return NULL;
 	return newintobject((long)getppid());
 }
+#endif
 
+#ifdef HAVE_GETUID
 static object *
 posix_getuid(self, args)
 	object *self;
@@ -850,7 +882,9 @@ posix_getuid(self, args)
 		return NULL;
 	return newintobject((long)getuid());
 }
+#endif
 
+#ifdef HAVE_KILL
 static object *
 posix_kill(self, args)
 	object *self;
@@ -864,7 +898,7 @@ posix_kill(self, args)
 	INCREF(None);
 	return None;
 }
-#endif /* !NT */
+#endif
 
 static object *
 posix_popen(self, args)
@@ -940,7 +974,7 @@ posix_waitpid(self, args)
 }
 #endif /* HAVE_WAITPID */
 
-#ifndef NT
+#ifdef HAVE_WAIT
 static object *
 posix_wait(self, args)
 	object *self;
@@ -955,7 +989,7 @@ posix_wait(self, args)
 	else
 		return mkvalue("ii", pid, sts);
 }
-#endif /* !NT */
+#endif
 
 static object *
 posix_lstat(self, args)
@@ -1366,21 +1400,31 @@ static struct methodlist posix_methods[] = {
 	{"_exit",	posix__exit},
 	{"execv",	posix_execv},
 	{"execve",	posix_execve},
-#ifndef NT
+#ifdef HAVE_FORK
 	{"fork",	posix_fork},
+#endif /* HAVE_FORK */
+#ifdef HAVE_GETEGID
 	{"getegid",	posix_getegid},
+#endif /* HAVE_GETEGID */
+#ifdef HAVE_GETEUID
 	{"geteuid",	posix_geteuid},
+#endif /* HAVE_GETEUID */
+#ifdef HAVE_GETGID
 	{"getgid",	posix_getgid},
-#endif /* !NT */
+#endif /* HAVE_GETGID */
 	{"getpid",	posix_getpid},
 #ifdef HAVE_GETPGRP
 	{"getpgrp",	posix_getpgrp},
 #endif /* HAVE_GETPGRP */
-#ifndef NT
+#ifdef HAVE_GETPPID
 	{"getppid",	posix_getppid},
+#endif /* HAVE_GETPPID */
+#ifdef HAVE_GETUID
 	{"getuid",	posix_getuid},
+#endif /* HAVE_GETUID */
+#ifdef HAVE_KILL
 	{"kill",	posix_kill},
-#endif /* !NT */
+#endif /* HAVE_KILL */
 	{"popen",	posix_popen,	1},
 #ifdef HAVE_SETUID
 	{"setuid",	posix_setuid},
@@ -1391,9 +1435,9 @@ static struct methodlist posix_methods[] = {
 #ifdef HAVE_SETPGRP
 	{"setpgrp",	posix_setpgrp},
 #endif /* HAVE_SETPGRP */
-#ifndef NT
+#ifdef HAVE_WAIT
 	{"wait",	posix_wait},
-#endif /* !NT */
+#endif /* HAVE_WAIT */
 #ifdef HAVE_WAITPID
 	{"waitpid",	posix_waitpid},
 #endif /* HAVE_WAITPID */
-- 
cgit v0.12

