#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>
#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
}
#endif
}
-#if defined(MS_WIN32) || defined(macintosh)
+#if defined(MS_WIN32) || defined(macintosh) || defined(PYOS_OS2)
rusage_diff = -1;
#else
{
*/
#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";
&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)
}
Py_INCREF(Py_None);
return Py_None;
+#endif /* defined(PYOS_OS2) && defined(PYCC_GCC) */
}
static char lockf_doc [] =
#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"
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);
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 */
#include <sys/types.h>
#endif
-#if defined(PYOS_OS2)
+#if defined(PYOS_OS2) && !defined(PYCC_GCC)
#include <sys/time.h>
#include <utils.h>
#endif
#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
#ifdef OLCUC
{"OLCUC", OLCUC},
#endif
+#ifdef ONLCR
{"ONLCR", ONLCR},
+#endif
#ifdef OCRNL
{"OCRNL", OCRNL},
#endif
#ifdef VLNEXT
{"VLNEXT", VLNEXT},
#endif
+#ifdef VEOL2
{"VEOL2", VEOL2},
+#endif
#ifdef B460800
#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
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);
}
static int
-_getname(Py_UCS4 code, char* buffer, int buflen)
+_Py_getname(Py_UCS4 code, char* buffer, int buflen)
{
int offset;
int i;
/* 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])
static const _PyUnicode_Name_CAPI hashAPI =
{
sizeof(_PyUnicode_Name_CAPI),
- _getname,
+ _Py_getname,
_getcode
};
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");