sgimodule.c 1 KB
Newer Older
Guido van Rossum's avatar
Guido van Rossum committed
1 2 3

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

Guido van Rossum's avatar
Guido van Rossum committed
4
#include "Python.h"
Guido van Rossum's avatar
Guido van Rossum committed
5

6 7 8 9
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

Guido van Rossum's avatar
Guido van Rossum committed
10
static PyObject *
Peter Schneider-Kamp's avatar
Peter Schneider-Kamp committed
11
sgi_nap(PyObject *self, PyObject *args)
Guido van Rossum's avatar
Guido van Rossum committed
12 13
{
	long ticks;
14
	if (!PyArg_ParseTuple(args, "l:nap", &ticks))
Guido van Rossum's avatar
Guido van Rossum committed
15
		return NULL;
Guido van Rossum's avatar
Guido van Rossum committed
16
	Py_BEGIN_ALLOW_THREADS
Guido van Rossum's avatar
Guido van Rossum committed
17
	sginap(ticks);
Guido van Rossum's avatar
Guido van Rossum committed
18 19 20
	Py_END_ALLOW_THREADS
	Py_INCREF(Py_None);
	return Py_None;
Guido van Rossum's avatar
Guido van Rossum committed
21 22
}

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

Guido van Rossum's avatar
Guido van Rossum committed
25
static PyObject *
Peter Schneider-Kamp's avatar
Peter Schneider-Kamp committed
26
sgi__getpty(PyObject *self, PyObject *args)
27 28 29 30 31 32
{
	int oflag;
	int mode;
	int nofork;
	char *name;
	int fildes;
33
	if (!PyArg_ParseTuple(args, "iii:_getpty", &oflag, &mode, &nofork))
34 35 36 37
		return NULL;
	errno = 0;
	name = _getpty(&fildes, oflag, (mode_t)mode, nofork);
	if (name == NULL) {
Guido van Rossum's avatar
Guido van Rossum committed
38
		PyErr_SetFromErrno(PyExc_IOError);
39 40
		return NULL;
	}
Guido van Rossum's avatar
Guido van Rossum committed
41
	return Py_BuildValue("(si)", name, fildes);
42 43
}

Guido van Rossum's avatar
Guido van Rossum committed
44
static PyMethodDef sgi_methods[] = {
45 46
	{"nap",		sgi_nap,	METH_VARARGS},
	{"_getpty",	sgi__getpty,	METH_VARARGS},
Guido van Rossum's avatar
Guido van Rossum committed
47 48 49 50 51
	{NULL,		NULL}		/* sentinel */
};


void
52
initsgi(void)
Guido van Rossum's avatar
Guido van Rossum committed
53
{
Guido van Rossum's avatar
Guido van Rossum committed
54
	Py_InitModule("sgi", sgi_methods);
Guido van Rossum's avatar
Guido van Rossum committed
55
}