Mercurial > cpython-lru_cache-weakref
comparison Python/import.c @ 1361:7cd533cf194a legacy-trunk
import.c: When something is wrong with the .pyc, properly open the .py
file.
object.c: Write allocation statistics to stderr.
| author | Sjoerd Mullender <sjoerd@acm.org> |
|---|---|
| date | Mon, 25 Oct 1993 08:40:52 +0000 |
| parents | 1808ca5d8883 |
| children | 560407ec632b |
comparison
equal
deleted
inserted
replaced
| 1360:1808ca5d8883 | 1361:7cd533cf194a |
|---|---|
| 226 mtime = getmtime(namebuf); | 226 mtime = getmtime(namebuf); |
| 227 magic = rd_long(fpc); | 227 magic = rd_long(fpc); |
| 228 pyc_mtime = rd_long(fpc); | 228 pyc_mtime = rd_long(fpc); |
| 229 if (mtime != -1 && mtime > pyc_mtime) { | 229 if (mtime != -1 && mtime > pyc_mtime) { |
| 230 fclose(fpc); | 230 fclose(fpc); |
| 231 fp = fopen(namebuf, "rb"); | |
| 232 goto read_py; | 231 goto read_py; |
| 233 } | 232 } |
| 234 if (magic == MAGIC) { | 233 if (magic == MAGIC) { |
| 235 v = rd_object(fpc); | 234 v = rd_object(fpc); |
| 236 if (v == NULL || err_occurred() || | 235 if (v == NULL || err_occurred() || |
| 245 if (verbose) { | 244 if (verbose) { |
| 246 if (co != NULL) | 245 if (co != NULL) |
| 247 fprintf(stderr, | 246 fprintf(stderr, |
| 248 "import %s # precompiled from \"%s\"\n", | 247 "import %s # precompiled from \"%s\"\n", |
| 249 name, namebuf); | 248 name, namebuf); |
| 250 else | 249 else { |
| 251 fprintf(stderr, | 250 fprintf(stderr, |
| 252 "# invalid precompiled file \"%s\"\n", | 251 "# invalid precompiled file \"%s\"\n", |
| 253 namebuf); | 252 namebuf); |
| 254 } | 253 goto read_py; |
| 255 } | 254 } |
| 256 else if ((fp = find_module(name, PY_SUFFIX, "r", | 255 } |
| 257 namebuf, &mtime)) != NULL) { | 256 } |
| 257 else { | |
| 258 read_py: | 258 read_py: |
| 259 namelen = strlen(namebuf); | 259 if ((fp = find_module(name, PY_SUFFIX, "r", |
| 260 if (co == NULL) { | 260 namebuf, &mtime)) != NULL) { |
| 261 if (verbose) | 261 namelen = strlen(namebuf); |
| 262 fprintf(stderr, | 262 if (co == NULL) { |
| 263 "import %s # from \"%s\"\n", | 263 if (verbose) |
| 264 name, namebuf); | 264 fprintf(stderr, |
| 265 err = parse_file(fp, namebuf, file_input, &n); | 265 "import %s # from \"%s\"\n", |
| 266 } else | 266 name, namebuf); |
| 267 err = E_DONE; | 267 err = parse_file(fp, namebuf, file_input, &n); |
| 268 fclose(fp); | 268 } else |
| 269 if (err != E_DONE) { | 269 err = E_DONE; |
| 270 err_input(err); | 270 fclose(fp); |
| 271 if (err != E_DONE) { | |
| 272 err_input(err); | |
| 273 return NULL; | |
| 274 } | |
| 275 } | |
| 276 else { | |
| 277 if (m == NULL) { | |
| 278 sprintf(namebuf, "no module named %.200s", | |
| 279 name); | |
| 280 err_setstr(ImportError, namebuf); | |
| 281 } | |
| 282 else { | |
| 283 sprintf(namebuf, "no source for module %.200s", | |
| 284 name); | |
| 285 err_setstr(ImportError, namebuf); | |
| 286 } | |
| 271 return NULL; | 287 return NULL; |
| 272 } | 288 } |
| 273 } | |
| 274 else { | |
| 275 if (m == NULL) { | |
| 276 sprintf(namebuf, "no module named %.200s", name); | |
| 277 err_setstr(ImportError, namebuf); | |
| 278 } | |
| 279 else { | |
| 280 sprintf(namebuf, "no source for module %.200s", name); | |
| 281 err_setstr(ImportError, namebuf); | |
| 282 } | |
| 283 return NULL; | |
| 284 } | 289 } |
| 285 if (m == NULL) { | 290 if (m == NULL) { |
| 286 m = add_module(name); | 291 m = add_module(name); |
| 287 if (m == NULL) { | 292 if (m == NULL) { |
| 288 freetree(n); | 293 freetree(n); |
