sgimodule.c 1.14 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 14 15 16 17 18 19 20
    long ticks;
    if (!PyArg_ParseTuple(args, "l:nap", &ticks))
        return NULL;
    Py_BEGIN_ALLOW_THREADS
    sginap(ticks);
    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 33 34 35 36 37 38 39 40 41
    int oflag;
    int mode;
    int nofork;
    char *name;
    int fildes;
    if (!PyArg_ParseTuple(args, "iii:_getpty", &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);
42 43
}

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


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