Index: Modules/getpath.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Modules/getpath.c,v retrieving revision 1.51 diff -c -r1.51 getpath.c *** Modules/getpath.c 16 Sep 2005 02:43:35 -0000 1.51 --- Modules/getpath.c 3 Nov 2005 03:38:10 -0000 *************** *** 151,163 **** static int ismodule(char *filename) /* Is module -- check for .pyc/.pyo too */ { if (isfile(filename)) return 1; /* Check for the compiled version of prefix. */ ! if (strlen(filename) < MAXPATHLEN) { ! strcat(filename, Py_OptimizeFlag ? "o" : "c"); ! if (isfile(filename)) return 1; } return 0; --- 151,176 ---- static int ismodule(char *filename) /* Is module -- check for .pyc/.pyo too */ { + char module_filename[MAXPATHLEN+1]; + size_t filename_size; + + strncpy(module_filename, filename, MAXPATHLEN); + module_filename[MAXPATHLEN+1] = '\0'; + filename_size = strlen(module_filename); + if (isfile(filename)) return 1; /* Check for the compiled version of prefix. */ ! if (filename_size < MAXPATHLEN - 1) { ! ! module_filename[filename_size+1] = '\0'; ! module_filename[filename_size] = 'c'; ! if (isfile(module_filename)) ! return 1; ! ! module_filename[filename_size] = 'o'; ! if (isfile(module_filename)) return 1; } return 0; Index: Python/import.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Python/import.c,v retrieving revision 2.247 diff -c -r2.247 import.c *** Python/import.c 21 Oct 2005 11:32:20 -0000 2.247 --- Python/import.c 3 Nov 2005 03:38:22 -0000 *************** *** 77,82 **** --- 77,83 ---- static const struct filedescr _PyImport_StandardFiletab[] = { {"/py", "U", PY_SOURCE}, {"/pyc", "rb", PY_COMPILED}, + {"/pyo", "rb", PY_COMPILED}, {0, 0} }; #else *************** *** 86,91 **** --- 87,93 ---- {".pyw", "U", PY_SOURCE}, #endif {".pyc", "rb", PY_COMPILED}, + {".pyo", "rb", PY_COMPILED}, {0, 0} }; #endif *************** *** 120,130 **** /* Replace ".pyc" with ".pyo" in _PyImport_Filetab */ for (; filetab->suffix != NULL; filetab++) { #ifndef RISCOS ! if (strcmp(filetab->suffix, ".pyc") == 0) filetab->suffix = ".pyo"; #else ! if (strcmp(filetab->suffix, "/pyc") == 0) filetab->suffix = "/pyo"; #endif } } --- 122,138 ---- /* Replace ".pyc" with ".pyo" in _PyImport_Filetab */ for (; filetab->suffix != NULL; filetab++) { #ifndef RISCOS ! if (strcmp(filetab->suffix, ".pyc") == 0) { filetab->suffix = ".pyo"; + } else if (strcmp(filetab->suffix, ".pyo") == 0) { + filetab->suffix = ".pyc"; + } #else ! if (strcmp(filetab->suffix, "/pyc") == 0) { filetab->suffix = "/pyo"; + } else if (strcmp(filetab->suffix, "/pyo") == 0) { + filetab->suffix = "/pyc"; + } #endif } } *************** *** 1575,1580 **** --- 1583,1590 ---- return 0; buf[i++] = SEP; pname = buf + i; + + /* Try .py */ strcpy(pname, "__init__.py"); if (stat(buf, &statbuf) == 0) { if (case_ok(buf, *************** *** 1586,1592 **** } } i += strlen(pname); ! strcpy(buf+i, Py_OptimizeFlag ? "o" : "c"); if (stat(buf, &statbuf) == 0) { if (case_ok(buf, save_len + 9, /* len("/__init__") */ --- 1596,1617 ---- } } i += strlen(pname); ! buf[i + 1] = '\0'; ! ! /* Try .pyc/.pyo */ ! buf[i] = (Py_OptimizeFlag) ? 'o' : 'c'; ! if (stat(buf, &statbuf) == 0) { ! if (case_ok(buf, ! save_len + 9, /* len("/__init__") */ ! 8, /* len("__init__") */ ! pname)) { ! buf[save_len] = '\0'; ! return 1; ! } ! } ! ! /* Try .pyo/.pyc */ ! buf[i] = (Py_OptimizeFlag) ? 'c' : 'o'; if (stat(buf, &statbuf) == 0) { if (case_ok(buf, save_len + 9, /* len("/__init__") */