Mercurial > cpython-lru_cache-weakref
diff Python/bltinmodule.c @ 673:71d496259ad3 legacy-trunk
Added execfile().
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Tue, 25 Feb 1992 18:55:05 +0000 |
| parents | aaff650d7e13 |
| children | 5c18d6c57827 |
line wrap: on
line diff
--- a/Python/bltinmodule.c Wed Feb 19 14:50:10 1992 +0000 +++ b/Python/bltinmodule.c Tue Feb 25 18:55:05 1992 +0000 @@ -187,6 +187,42 @@ } static object * +builtin_execfile(self, v) + object *self; + object *v; +{ + object *str = NULL, *globals = NULL, *locals = NULL, *w; + FILE* fp; + int n; + if (v != NULL) { + if (is_stringobject(v)) + str = v; + else if (is_tupleobject(v) && + ((n = gettuplesize(v)) == 2 || n == 3)) { + str = gettupleitem(v, 0); + globals = gettupleitem(v, 1); + if (n == 3) + locals = gettupleitem(v, 2); + } + } + if (str == NULL || !is_stringobject(str) || + globals != NULL && !is_dictobject(globals) || + locals != NULL && !is_dictobject(locals)) { + err_setstr(TypeError, + "execfile arguments must be filename[,dict[,dict]]"); + return NULL; + } + fp = fopen(getstringvalue(str), "r"); + if (fp == NULL) { + err_setstr(IOError, "execfile cannot open the file argument"); + return NULL; + } + w = run_file(fp, getstringvalue(str), file_input, globals, locals); + fclose(fp); + return w; +} + +static object * builtin_float(self, v) object *self; object *v; @@ -603,6 +639,7 @@ {"divmod", builtin_divmod}, {"eval", builtin_eval}, {"exec", builtin_exec}, + {"execfile", builtin_execfile}, {"float", builtin_float}, {"getattr", builtin_getattr}, {"hex", builtin_hex},
