Added popen().
Added getmtime() function for use by ".pyc" processing.
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index ad46b66..3a1d4ba 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -427,7 +427,7 @@
#ifndef MSDOS
-/* Process Primitives */
+/* Process operations */
static object *
posix__exit(self, args)
@@ -545,6 +545,26 @@
}
static object *
+posix_popen(self, args)
+ object *self;
+ object *args;
+{
+ extern int pclose PROTO((FILE *));
+ object *name, *mode;
+ FILE *fp;
+ if (args == NULL || !is_tupleobject(args) || gettuplesize(args) != 2 ||
+ !is_stringobject(name = gettupleitem(args, 0)) ||
+ !is_stringobject(mode = gettupleitem(args, 1))) {
+ err_setstr(TypeError, "open() requires 2 string arguments");
+ return NULL;
+ }
+ fp = popen(getstringvalue(name), getstringvalue(mode));
+ if (fp == NULL)
+ return posix_error();
+ return newopenfileobject(fp, name, mode, pclose);
+}
+
+static object *
posix_wait(self, args) /* Also waitpid() */
object *self;
object *args;
@@ -644,6 +664,7 @@
{"getpid", posix_getpid},
{"getppid", posix_getppid},
{"kill", posix_kill},
+ {"popen", posix_popen},
{"wait", posix_wait},
#endif
#ifndef NO_LSTAT
@@ -675,6 +696,21 @@
fatal("can't define posix.error");
}
+
+/* Function used elsewhere to get a file's modification time */
+
+long
+getmtime(path)
+ char *path;
+{
+ struct stat st;
+ if (stat(path, &st) != 0)
+ return -1;
+ else
+ return st.st_mtime;
+}
+
+
#ifdef MSDOS
/* A small "compatibility library" for TurboC under MS-DOS */