1 2 /* SGI module -- random SGI-specific things */ 3 4 #include "Python.h" 5 6 #include <sys/types.h> 7 #include <sys/stat.h> 8 #include <fcntl.h> 9 10 static PyObject * 11 sgi_nap(PyObject *self, PyObject *args) 12 { 13 long ticks; 14 if (!PyArg_ParseTuple(args, "l:nap", &ticks)) 15 return NULL; 16 Py_BEGIN_ALLOW_THREADS 17 sginap(ticks); 18 Py_END_ALLOW_THREADS 19 Py_INCREF(Py_None); 20 return Py_None; 21 } 22 23 extern char *_getpty(int *, int, mode_t, int); 24 25 static PyObject * 26 sgi__getpty(PyObject *self, PyObject *args) 27 { 28 int oflag; 29 int mode; 30 int nofork; 31 char *name; 32 int fildes; 33 if (!PyArg_ParseTuple(args, "iii:_getpty", &oflag, &mode, &nofork)) 34 return NULL; 35 errno = 0; 36 name = _getpty(&fildes, oflag, (mode_t)mode, nofork); 37 if (name == NULL) { 38 PyErr_SetFromErrno(PyExc_IOError); 39 return NULL; 40 } 41 return Py_BuildValue("(si)", name, fildes); 42 } 43 44 static PyMethodDef sgi_methods[] = { 45 {"nap", sgi_nap, METH_VARARGS}, 46 {"_getpty", sgi__getpty, METH_VARARGS}, 47 {NULL, NULL} /* sentinel */ 48 }; 49 50 51 void 52 initsgi(void) 53 { 54 Py_InitModule("sgi", sgi_methods); 55 } 56