If we have a filename and __main__.__file__ hasn't already been set,

set it.
Closes SF issue #624729.
This commit is contained in:
Fred Drake 2002-10-17 21:24:58 +00:00
parent 5134a54df9
commit 8ed0204bc9
1 changed files with 11 additions and 1 deletions

View File

@ -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;
}