summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Modules/_hotshot.c8
-rw-r--r--Modules/dbmmodule.c4
-rw-r--r--Modules/fcntlmodule.c8
-rw-r--r--Modules/main.c6
-rw-r--r--Modules/pwdmodule.c4
-rw-r--r--Modules/readline.c4
-rw-r--r--Modules/selectmodule.c2
-rw-r--r--Modules/signalmodule.c2
-rw-r--r--Modules/termios.c4
-rw-r--r--Modules/timemodule.c8
-rw-r--r--Modules/unicodedata.c8
11 files changed, 47 insertions, 11 deletions
diff --git a/Modules/_hotshot.c b/Modules/_hotshot.c
index 1eecc7efcc..97037ac4ed 100644
--- a/Modules/_hotshot.c
+++ b/Modules/_hotshot.c
@@ -26,7 +26,7 @@ typedef __int64 hs_time;
#ifndef HAVE_GETTIMEOFDAY
#error "This module requires gettimeofday() on non-Windows platforms!"
#endif
-#ifdef macintosh
+#if defined(macintosh) || (defined(PYOS_OS2) && defined(PYCC_GCC))
#include <sys/time.h>
#else
#include <sys/resource.h>
@@ -51,6 +51,10 @@ typedef struct timeval hs_time;
#define PATH_MAX 254
#endif
+#if defined(PYOS_OS2) && defined(PYCC_GCC)
+#define PATH_MAX 260
+#endif
+
#ifndef PATH_MAX
# ifdef MAX_PATH
# define PATH_MAX MAX_PATH
@@ -987,7 +991,7 @@ calibrate(void)
}
#endif
}
-#if defined(MS_WIN32) || defined(macintosh)
+#if defined(MS_WIN32) || defined(macintosh) || defined(PYOS_OS2)
rusage_diff = -1;
#else
{
diff --git a/Modules/dbmmodule.c b/Modules/dbmmodule.c
index 233487d612..056af4986b 100644
--- a/Modules/dbmmodule.c
+++ b/Modules/dbmmodule.c
@@ -13,7 +13,11 @@
*/
#if defined(HAVE_NDBM_H)
#include <ndbm.h>
+#if defined(PYOS_OS2) && !defined(PYCC_GCC)
static char *which_dbm = "ndbm";
+#else
+static char *which_dbm = "GNU gdbm"; /* EMX port of GDBM */
+#endif
#elif defined(HAVE_DB1_NDBM_H)
#include <db1/ndbm.h>
static char *which_dbm = "BSD db";
diff --git a/Modules/fcntlmodule.c b/Modules/fcntlmodule.c
index 9f84a2c143..13cd0f76e4 100644
--- a/Modules/fcntlmodule.c
+++ b/Modules/fcntlmodule.c
@@ -222,12 +222,17 @@ fcntl_lockf(PyObject *self, PyObject *args)
&lenobj, &startobj, &whence))
return NULL;
+#if defined(PYOS_OS2) && defined(PYCC_GCC)
+ PyErr_SetString(PyExc_NotImplementedError,
+ "lockf not supported on OS/2 (EMX)");
+ return NULL;
+#else
#ifndef LOCK_SH
#define LOCK_SH 1 /* shared lock */
#define LOCK_EX 2 /* exclusive lock */
#define LOCK_NB 4 /* don't block when locking */
#define LOCK_UN 8 /* unlock */
-#endif
+#endif /* LOCK_SH */
{
struct flock l;
if (code == LOCK_UN)
@@ -275,6 +280,7 @@ fcntl_lockf(PyObject *self, PyObject *args)
}
Py_INCREF(Py_None);
return Py_None;
+#endif /* defined(PYOS_OS2) && defined(PYCC_GCC) */
}
static char lockf_doc [] =
diff --git a/Modules/main.c b/Modules/main.c
index b36714c14d..9ce8bef79f 100644
--- a/Modules/main.c
+++ b/Modules/main.c
@@ -8,11 +8,15 @@
#include <fcntl.h>
#endif
-#if defined(PYOS_OS2) || defined(MS_WINDOWS)
+#if (defined(PYOS_OS2) && !defined(PYCC_GCC)) || defined(MS_WINDOWS)
#define PYTHONHOMEHELP "<prefix>\\lib"
#else
+#if defined(PYOS_OS2) && defined(PYCC_GCC)
+#define PYTHONHOMEHELP "<prefix>/Lib"
+#else
#define PYTHONHOMEHELP "<prefix>/pythonX.X"
#endif
+#endif
#include "pygetopt.h"
diff --git a/Modules/pwdmodule.c b/Modules/pwdmodule.c
index 35afc4ef28..91989b710e 100644
--- a/Modules/pwdmodule.c
+++ b/Modules/pwdmodule.c
@@ -128,8 +128,12 @@ pwd_getpwall(PyObject *self, PyObject *args)
return NULL;
if ((d = PyList_New(0)) == NULL)
return NULL;
+#if defined(PYOS_OS2) && defined(PYCC_GCC)
+ if ((p = getpwuid(0)) != NULL) {
+#else
setpwent();
while ((p = getpwent()) != NULL) {
+#endif
PyObject *v = mkpwent(p);
if (v == NULL || PyList_Append(d, v) != 0) {
Py_XDECREF(v);
diff --git a/Modules/readline.c b/Modules/readline.c
index 9b4d9522b0..94aa1dbcab 100644
--- a/Modules/readline.c
+++ b/Modules/readline.c
@@ -507,6 +507,10 @@ static void
setup_readline(void)
{
rl_readline_name = "python";
+#if defined(PYOS_OS2) && defined(PYCC_GCC)
+ /* Allow $if term= in .inputrc to work */
+ rl_terminal_name = getenv("TERM");
+#endif
/* Force rebind of TAB to insert-tab */
rl_bind_key('\t', rl_insert);
/* Bind both ESC-TAB and ESC-ESC to the completion function */
diff --git a/Modules/selectmodule.c b/Modules/selectmodule.c
index ceaf3fa92d..0a29f2efd5 100644
--- a/Modules/selectmodule.c
+++ b/Modules/selectmodule.c
@@ -33,7 +33,7 @@ extern void bzero(void *, int);
#include <sys/types.h>
#endif
-#if defined(PYOS_OS2)
+#if defined(PYOS_OS2) && !defined(PYCC_GCC)
#include <sys/time.h>
#include <utils.h>
#endif
diff --git a/Modules/signalmodule.c b/Modules/signalmodule.c
index e34f051398..b27c4b74a7 100644
--- a/Modules/signalmodule.c
+++ b/Modules/signalmodule.c
@@ -16,7 +16,7 @@
#define SIG_ERR ((PyOS_sighandler_t)(-1))
#endif
-#if defined(PYOS_OS2)
+#if defined(PYOS_OS2) && !defined(PYCC_GCC)
#define NSIG 12
#include <process.h>
#endif
diff --git a/Modules/termios.c b/Modules/termios.c
index aaabe6034f..0c5697f285 100644
--- a/Modules/termios.c
+++ b/Modules/termios.c
@@ -384,7 +384,9 @@ static struct constant {
#ifdef OLCUC
{"OLCUC", OLCUC},
#endif
+#ifdef ONLCR
{"ONLCR", ONLCR},
+#endif
#ifdef OCRNL
{"OCRNL", OCRNL},
#endif
@@ -552,7 +554,9 @@ static struct constant {
#ifdef VLNEXT
{"VLNEXT", VLNEXT},
#endif
+#ifdef VEOL2
{"VEOL2", VEOL2},
+#endif
#ifdef B460800
diff --git a/Modules/timemodule.c b/Modules/timemodule.c
index 6647ecc869..5d7fa51e99 100644
--- a/Modules/timemodule.c
+++ b/Modules/timemodule.c
@@ -54,6 +54,12 @@ extern int ftime(struct timeb *);
#undef HAVE_CLOCK /* We have our own version down below */
#endif /* MS_WIN32 && !MS_WIN64 */
+#if defined(PYOS_OS2)
+#define INCL_DOS
+#define INCL_ERRORS
+#include <os2.h>
+#endif
+
#if defined(PYCC_VACPP)
#include <sys/time.h>
#endif
@@ -752,7 +758,7 @@ static int
floatsleep(double secs)
{
/* XXX Should test for MS_WIN32 first! */
-#if defined(HAVE_SELECT) && !defined(__BEOS__)
+#if defined(HAVE_SELECT) && !defined(__BEOS__) && !defined(__EMX__)
struct timeval t;
double frac;
frac = fmod(secs, 1.0);
diff --git a/Modules/unicodedata.c b/Modules/unicodedata.c
index 36c96e4a63..20b53a7cc4 100644
--- a/Modules/unicodedata.c
+++ b/Modules/unicodedata.c
@@ -277,7 +277,7 @@ _gethash(const char *s, int len, int scale)
}
static int
-_getname(Py_UCS4 code, char* buffer, int buflen)
+_Py_getname(Py_UCS4 code, char* buffer, int buflen)
{
int offset;
int i;
@@ -334,7 +334,7 @@ _cmpname(int code, const char* name, int namelen)
/* check if code corresponds to the given name */
int i;
char buffer[NAME_MAXLEN];
- if (!_getname(code, buffer, sizeof(buffer)))
+ if (!_Py_getname(code, buffer, sizeof(buffer)))
return 0;
for (i = 0; i < namelen; i++) {
if (toupper(name[i]) != buffer[i])
@@ -384,7 +384,7 @@ _getcode(const char* name, int namelen, Py_UCS4* code)
static const _PyUnicode_Name_CAPI hashAPI =
{
sizeof(_PyUnicode_Name_CAPI),
- _getname,
+ _Py_getname,
_getcode
};
@@ -407,7 +407,7 @@ unicodedata_name(PyObject* self, PyObject* args)
return NULL;
}
- if (!_getname((Py_UCS4) *PyUnicode_AS_UNICODE(v),
+ if (!_Py_getname((Py_UCS4) *PyUnicode_AS_UNICODE(v),
name, sizeof(name))) {
if (defobj == NULL) {
PyErr_SetString(PyExc_ValueError, "no such name");