Staging
v0.5.1
https://github.com/python/cpython
Revision 42af3cedd9e072d6a6d2dd0cb17b38d00e19f397 authored by Thomas Wouters on 09 July 2001, 14:34:16 UTC, committed by Thomas Wouters on 09 July 2001, 14:34:16 UTC
The block/unblock thread macros are called 'Py_BLOCK_THREADS' and
'Py_UNBLOCK_THREADS', not 'Py_BEGIN_BLOCK_THREADS' and
'Py_BEGIN_UNBLOCK_THREADS'.
1 parent 4c633be
Raw File
Tip revision: 42af3cedd9e072d6a6d2dd0cb17b38d00e19f397 authored by Thomas Wouters on 09 July 2001, 14:34:16 UTC
Fix for SF bug #436525, reported by Greg Kochanski:
Tip revision: 42af3ce
sgimodule.c

/* SGI module -- random SGI-specific things */

#include "Python.h"

#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>

static PyObject *
sgi_nap(PyObject *self, PyObject *args)
{
	long ticks;
	if (!PyArg_Parse(args, "l", &ticks))
		return NULL;
	Py_BEGIN_ALLOW_THREADS
	sginap(ticks);
	Py_END_ALLOW_THREADS
	Py_INCREF(Py_None);
	return Py_None;
}

extern char *_getpty(int *, int, mode_t, int);

static PyObject *
sgi__getpty(PyObject *self, PyObject *args)
{
	int oflag;
	int mode;
	int nofork;
	char *name;
	int fildes;
	if (!PyArg_Parse(args, "(iii)", &oflag, &mode, &nofork))
		return NULL;
	errno = 0;
	name = _getpty(&fildes, oflag, (mode_t)mode, nofork);
	if (name == NULL) {
		PyErr_SetFromErrno(PyExc_IOError);
		return NULL;
	}
	return Py_BuildValue("(si)", name, fildes);
}

static PyMethodDef sgi_methods[] = {
	{"nap",		sgi_nap},
	{"_getpty",	sgi__getpty},
	{NULL,		NULL}		/* sentinel */
};


void
initsgi(void)
{
	Py_InitModule("sgi", sgi_methods);
}
back to top