summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFred Drake <fdrake@acm.org>2002-10-17 21:24:58 (GMT)
committerFred Drake <fdrake@acm.org>2002-10-17 21:24:58 (GMT)
commit8ed0204bc9249d314442158348b3949f1be50100 (patch)
tree7d7fec825fb1efeb67ad55374219e106b3b2ee3c
parent5134a54df995baa404d0334c7eb8c8218f30d9bf (diff)
downloadcpython-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.
-rw-r--r--Python/pythonrun.c12
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;
}