SF patch #474590 -- RISC OS support

This commit is contained in:
Guido van Rossum 2001-10-24 20:42:55 +00:00
parent c6ac8a78f6
commit e2ae77b8b8
33 changed files with 256 additions and 188 deletions

View file

@ -983,13 +983,10 @@ find_module(char *realname, PyObject *path, char *buf, size_t buflen,
#else
/* XXX How are you going to test for directories? */
#ifdef RISCOS
{
static struct filedescr fd = {"", "", PKG_DIRECTORY};
if (isdir(buf)) {
if (find_init_module(buf))
return &fd;
}
}
if (isdir(buf) &&
find_init_module(buf) &&
case_ok(buf, len, namelen, name))
return &fd_package;
#endif
#endif
#ifdef macintosh
@ -1069,6 +1066,8 @@ find_module(char *realname, PyObject *path, char *buf, size_t buflen,
#include <sys/types.h>
#include <dirent.h>
#elif defined(RISCOS)
#include "oslib/osfscontrol.h"
#endif
static int
@ -1198,6 +1197,31 @@ case_ok(char *buf, int len, int namelen, char *name)
}
return 0 ; /* Not found */
/* RISC OS */
#elif defined(RISCOS)
char canon[MAXPATHLEN+1]; /* buffer for the canonical form of the path */
char buf2[MAXPATHLEN+2];
char *nameWithExt = buf+len-namelen;
int canonlen;
os_error *e;
if (Py_GETENV("PYTHONCASEOK") != NULL)
return 1;
/* workaround:
append wildcard, otherwise case of filename wouldn't be touched */
strcpy(buf2, buf);
strcat(buf2, "*");
e = xosfscontrol_canonicalise_path(buf2,canon,0,0,MAXPATHLEN+1,&canonlen);
canonlen = MAXPATHLEN+1-canonlen;
if (e || canonlen<=0 || canonlen>(MAXPATHLEN+1) )
return 0;
if (strcmp(nameWithExt, canon+canonlen-strlen(nameWithExt))==0)
return 1; /* match */
return 0;
/* assuming it's a case-sensitive filesystem, so there's nothing to do! */
#else
return 1;