blob: d0a4cc903517c70b16d1d3df8b035605455e0a34 [file] [log] [blame]
Guido van Rossum86d25681992-05-15 11:05:54 +00001/***********************************************************
Guido van Rossumfd71b9e2000-06-30 23:50:40 +00002Copyright (c) 2000, BeOpen.com.
3Copyright (c) 1995-2000, Corporation for National Research Initiatives.
4Copyright (c) 1990-1995, Stichting Mathematisch Centrum.
5All rights reserved.
Guido van Rossum86d25681992-05-15 11:05:54 +00006
Guido van Rossumfd71b9e2000-06-30 23:50:40 +00007See the file "Misc/COPYRIGHT" for information on usage and
8redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
Guido van Rossum86d25681992-05-15 11:05:54 +00009******************************************************************/
10
11/* SGI module -- random SGI-specific things */
12
Guido van Rossum55db5151996-12-10 00:32:31 +000013#include "Python.h"
Guido van Rossum86d25681992-05-15 11:05:54 +000014
Guido van Rossum43021931994-09-12 10:40:46 +000015#include <sys/types.h>
16#include <sys/stat.h>
17#include <unistd.h>
18#include <fcntl.h>
19
Guido van Rossum55db5151996-12-10 00:32:31 +000020static PyObject *
Guido van Rossum86d25681992-05-15 11:05:54 +000021sgi_nap(self, args)
Guido van Rossum55db5151996-12-10 00:32:31 +000022 PyObject *self;
23 PyObject *args;
Guido van Rossum86d25681992-05-15 11:05:54 +000024{
25 long ticks;
Guido van Rossum55db5151996-12-10 00:32:31 +000026 if (!PyArg_Parse(args, "l", &ticks))
Guido van Rossum86d25681992-05-15 11:05:54 +000027 return NULL;
Guido van Rossum55db5151996-12-10 00:32:31 +000028 Py_BEGIN_ALLOW_THREADS
Guido van Rossum86d25681992-05-15 11:05:54 +000029 sginap(ticks);
Guido van Rossum55db5151996-12-10 00:32:31 +000030 Py_END_ALLOW_THREADS
31 Py_INCREF(Py_None);
32 return Py_None;
Guido van Rossum86d25681992-05-15 11:05:54 +000033}
34
Guido van Rossum43021931994-09-12 10:40:46 +000035extern char *_getpty(int *, int, mode_t, int);
36
Guido van Rossum55db5151996-12-10 00:32:31 +000037static PyObject *
Guido van Rossum43021931994-09-12 10:40:46 +000038sgi__getpty(self, args)
Guido van Rossum55db5151996-12-10 00:32:31 +000039 PyObject *self;
40 PyObject *args;
Guido van Rossum43021931994-09-12 10:40:46 +000041{
42 int oflag;
43 int mode;
44 int nofork;
45 char *name;
46 int fildes;
Guido van Rossum55db5151996-12-10 00:32:31 +000047 if (!PyArg_Parse(args, "(iii)", &oflag, &mode, &nofork))
Guido van Rossum43021931994-09-12 10:40:46 +000048 return NULL;
49 errno = 0;
50 name = _getpty(&fildes, oflag, (mode_t)mode, nofork);
51 if (name == NULL) {
Guido van Rossum55db5151996-12-10 00:32:31 +000052 PyErr_SetFromErrno(PyExc_IOError);
Guido van Rossum43021931994-09-12 10:40:46 +000053 return NULL;
54 }
Guido van Rossum55db5151996-12-10 00:32:31 +000055 return Py_BuildValue("(si)", name, fildes);
Guido van Rossum43021931994-09-12 10:40:46 +000056}
57
Guido van Rossum55db5151996-12-10 00:32:31 +000058static PyMethodDef sgi_methods[] = {
Guido van Rossum86d25681992-05-15 11:05:54 +000059 {"nap", sgi_nap},
Guido van Rossum43021931994-09-12 10:40:46 +000060 {"_getpty", sgi__getpty},
Guido van Rossum86d25681992-05-15 11:05:54 +000061 {NULL, NULL} /* sentinel */
62};
63
64
65void
66initsgi()
67{
Guido van Rossum55db5151996-12-10 00:32:31 +000068 Py_InitModule("sgi", sgi_methods);
Guido van Rossum86d25681992-05-15 11:05:54 +000069}