diff options
author | Fred Drake <fdrake@acm.org> | 2002-10-17 21:24:58 (GMT) |
---|---|---|
committer | Fred Drake <fdrake@acm.org> | 2002-10-17 21:24:58 (GMT) |
commit | 8ed0204bc9249d314442158348b3949f1be50100 (patch) | |
tree | 7d7fec825fb1efeb67ad55374219e106b3b2ee3c /Python | |
parent | 5134a54df995baa404d0334c7eb8c8218f30d9bf (diff) | |
download | cpython-8ed0204bc9249d314442158348b3949f1be50100.zip cpython-8ed0204bc9249d314442158348b3949f1be50100.tar.gz cpython-8ed0204bc9249d314442158348b3949f1be50100.tar.bz2 |
If we have a filename and __main__.__file__ hasn't already been set,
set it.
Closes SF issue #624729.
Diffstat (limited to 'Python')
-rw-r--r-- | Python/pythonrun.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/Python/pythonrun.c b/Python/pythonrun.c index 80a3157..b85c390 100644 --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -675,12 +675,22 @@ PyRun_SimpleFileExFlags(FILE *fp, char *filename, int closeit, if (m == NULL) return -1; d = PyModule_GetDict(m); + if (PyDict_GetItemString(d, "__file__") == NULL) { + PyObject *f = PyString_FromString(filename); + if (f == NULL) + return -1; + if (PyDict_SetItemString(d, "__file__", f) < 0) { + Py_DECREF(f); + return -1; + } + Py_DECREF(f); + } ext = filename + strlen(filename) - 4; if (maybe_pyc_file(fp, filename, ext, closeit)) { /* Try to run a pyc file. First, re-open in binary */ if (closeit) fclose(fp); - if( (fp = fopen(filename, "rb")) == NULL ) { + if ((fp = fopen(filename, "rb")) == NULL) { fprintf(stderr, "python: Can't reopen .pyc file\n"); return -1; } |