Commit b8368eeb authored by Guido van Rossum's avatar Guido van Rossum

RISCOS changes by dschwertberger.

parent 27696cdd
This diff is collapsed.
...@@ -16,7 +16,9 @@ ...@@ -16,7 +16,9 @@
#define GUSI_TO_MSL_EPOCH (4*365*24*60*60) #define GUSI_TO_MSL_EPOCH (4*365*24*60*60)
#endif /* USE_GUSI2 */ #endif /* USE_GUSI2 */
#else #else
#ifndef RISCOS
#include <sys/types.h> #include <sys/types.h>
#endif /* RISCOS */
#endif #endif
#ifdef QUICKWIN #ifdef QUICKWIN
...@@ -38,7 +40,7 @@ extern int ftime(struct timeb *); ...@@ -38,7 +40,7 @@ extern int ftime(struct timeb *);
#include <i86.h> #include <i86.h>
#else #else
#ifdef MS_WINDOWS #ifdef MS_WINDOWS
#include <windows.h> include <windows.h>
#ifdef MS_WIN16 #ifdef MS_WIN16
/* These overrides not needed for Win32 */ /* These overrides not needed for Win32 */
#define timezone _timezone #define timezone _timezone
...@@ -747,7 +749,9 @@ floatsleep(double secs) ...@@ -747,7 +749,9 @@ floatsleep(double secs)
#if defined(__WATCOMC__) && !defined(__QNX__) #if defined(__WATCOMC__) && !defined(__QNX__)
/* XXX Can't interrupt this sleep */ /* XXX Can't interrupt this sleep */
Py_BEGIN_ALLOW_THREADS Py_BEGIN_ALLOW_THREADS
#ifndef RISCOS
delay((int)(secs * 1000 + 0.5)); /* delay() uses milliseconds */ delay((int)(secs * 1000 + 0.5)); /* delay() uses milliseconds */
#endif
Py_END_ALLOW_THREADS Py_END_ALLOW_THREADS
#else /* !__WATCOMC__ || __QNX__ */ #else /* !__WATCOMC__ || __QNX__ */
#ifdef MSDOS #ifdef MSDOS
......
...@@ -137,7 +137,11 @@ intcatcher(int sig) ...@@ -137,7 +137,11 @@ intcatcher(int sig)
case 0: case 0:
break; break;
case 1: case 1:
#ifdef RISCOS
fprintf(stderr, message);
#else
write(2, message, strlen(message)); write(2, message, strlen(message));
#endif
break; break;
case 2: case 2:
interrupted = 0; interrupted = 0;
......
...@@ -13,6 +13,10 @@ ...@@ -13,6 +13,10 @@
int (*PyOS_InputHook)(void) = NULL; int (*PyOS_InputHook)(void) = NULL;
#ifdef RISCOS
int Py_RISCOSWimpFlag;
#endif
/* This function restarts a fgets() after an EINTR error occurred /* This function restarts a fgets() after an EINTR error occurred
except if PyOS_InterruptOccurred() returns true. */ except if PyOS_InterruptOccurred() returns true. */
...@@ -58,8 +62,17 @@ PyOS_StdioReadline(char *prompt) ...@@ -58,8 +62,17 @@ PyOS_StdioReadline(char *prompt)
if ((p = PyMem_MALLOC(n)) == NULL) if ((p = PyMem_MALLOC(n)) == NULL)
return NULL; return NULL;
fflush(stdout); fflush(stdout);
#ifndef RISCOS
if (prompt) if (prompt)
fprintf(stderr, "%s", prompt); fprintf(stderr, "%s", prompt);
#else
if (prompt) {
if(Py_RISCOSWimpFlag)
fprintf(stderr, "\x0cr%s\x0c", prompt);
else
fprintf(stderr, "%s", prompt);
}
#endif
fflush(stderr); fflush(stderr);
switch (my_fgets(p, (int)n, stdin)) { switch (my_fgets(p, (int)n, stdin)) {
case 0: /* Normal case */ case 0: /* Normal case */
......
...@@ -60,11 +60,20 @@ struct _inittab *PyImport_Inittab = _PyImport_Inittab; ...@@ -60,11 +60,20 @@ struct _inittab *PyImport_Inittab = _PyImport_Inittab;
/* these tables define the module suffixes that Python recognizes */ /* these tables define the module suffixes that Python recognizes */
struct filedescr * _PyImport_Filetab = NULL; struct filedescr * _PyImport_Filetab = NULL;
#ifdef RISCOS
static const struct filedescr _PyImport_StandardFiletab[] = {
{"/py", "r", PY_SOURCE},
{"/pyc", "rb", PY_COMPILED},
{0, 0}
};
#else
static const struct filedescr _PyImport_StandardFiletab[] = { static const struct filedescr _PyImport_StandardFiletab[] = {
{".py", "r", PY_SOURCE}, {".py", "r", PY_SOURCE},
{".pyc", "rb", PY_COMPILED}, {".pyc", "rb", PY_COMPILED},
{0, 0} {0, 0}
}; };
#endif
/* Initialize things */ /* Initialize things */
...@@ -95,8 +104,13 @@ _PyImport_Init(void) ...@@ -95,8 +104,13 @@ _PyImport_Init(void)
if (Py_OptimizeFlag) { if (Py_OptimizeFlag) {
/* Replace ".pyc" with ".pyo" in _PyImport_Filetab */ /* Replace ".pyc" with ".pyo" in _PyImport_Filetab */
for (; filetab->suffix != NULL; filetab++) { for (; filetab->suffix != NULL; filetab++) {
#ifndef RISCOS
if (strcmp(filetab->suffix, ".pyc") == 0) if (strcmp(filetab->suffix, ".pyc") == 0)
filetab->suffix = ".pyo"; filetab->suffix = ".pyo";
#else
if (strcmp(filetab->suffix, "/pyc") == 0)
filetab->suffix = "/pyo";
#endif
} }
} }
...@@ -842,7 +856,9 @@ find_module(char *realname, PyObject *path, char *buf, size_t buflen, ...@@ -842,7 +856,9 @@ find_module(char *realname, PyObject *path, char *buf, size_t buflen,
struct _frozen *f; struct _frozen *f;
struct filedescr *fdp = NULL; struct filedescr *fdp = NULL;
FILE *fp = NULL; FILE *fp = NULL;
#ifndef RISCOS
struct stat statbuf; struct stat statbuf;
#endif
static struct filedescr fd_frozen = {"", "", PY_FROZEN}; static struct filedescr fd_frozen = {"", "", PY_FROZEN};
static struct filedescr fd_builtin = {"", "", C_BUILTIN}; static struct filedescr fd_builtin = {"", "", C_BUILTIN};
static struct filedescr fd_package = {"", "", PKG_DIRECTORY}; static struct filedescr fd_package = {"", "", PKG_DIRECTORY};
...@@ -951,6 +967,15 @@ find_module(char *realname, PyObject *path, char *buf, size_t buflen, ...@@ -951,6 +967,15 @@ find_module(char *realname, PyObject *path, char *buf, size_t buflen,
} }
#else #else
/* XXX How are you going to test for directories? */ /* 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;
}
}
#endif
#endif #endif
#ifdef macintosh #ifdef macintosh
fdp = PyMac_FindModuleExtension(buf, &len, name); fdp = PyMac_FindModuleExtension(buf, &len, name);
...@@ -1196,6 +1221,39 @@ find_init_module(char *buf) ...@@ -1196,6 +1221,39 @@ find_init_module(char *buf)
buf[save_len] = '\0'; buf[save_len] = '\0';
return 0; return 0;
} }
#else
#ifdef RISCOS
static int
find_init_module(buf)
char *buf;
{
int save_len = strlen(buf);
int i = save_len;
if (save_len + 13 >= MAXPATHLEN)
return 0;
buf[i++] = SEP;
strcpy(buf+i, "__init__/py");
if (isfile(buf)) {
buf[save_len] = '\0';
return 1;
}
if (Py_OptimizeFlag)
strcpy(buf+i, "o");
else
strcpy(buf+i, "c");
if (isfile(buf)) {
buf[save_len] = '\0';
return 1;
}
buf[save_len] = '\0';
return 0;
}
#endif /*RISCOS*/
#endif /* HAVE_STAT */ #endif /* HAVE_STAT */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment