]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Added popen().
authorGuido van Rossum <guido@python.org>
Tue, 4 Jun 1991 19:40:25 +0000 (19:40 +0000)
committerGuido van Rossum <guido@python.org>
Tue, 4 Jun 1991 19:40:25 +0000 (19:40 +0000)
Added getmtime() function for use by ".pyc" processing.

Modules/posixmodule.c

index ad46b66d482ee425f7174e01fd6bd4cab1c0fc2f..3a1d4ba550721bc398ebed013ebec956942d5d6d 100644 (file)
@@ -427,7 +427,7 @@ posix_utime(self, args)
 
 #ifndef MSDOS
 
-/* Process Primitives */
+/* Process operations */
 
 static object *
 posix__exit(self, args)
@@ -544,6 +544,26 @@ posix_kill(self, args)
        return None;
 }
 
+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;
@@ -644,6 +664,7 @@ static struct methodlist posix_methods[] = {
        {"getpid",      posix_getpid},
        {"getppid",     posix_getppid},
        {"kill",        posix_kill},
+       {"popen",       posix_popen},
        {"wait",        posix_wait},
 #endif
 #ifndef NO_LSTAT
@@ -675,6 +696,21 @@ initposix()
                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 */