Added popen().

Added getmtime() function for use by ".pyc" processing.
This commit is contained in:
Guido van Rossum 1991-06-04 19:40:25 +00:00
parent c405b7b2fa
commit 3b06619e1c
1 changed files with 37 additions and 1 deletions

View 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 */