blob: 04bd3bec3c45c203840bcbe56b85028d56fc9066 [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 *
Peter Schneider-Kamp41c36ff2000-07-10 12:29:26 +000021sgi_nap(PyObject *self, PyObject *args)
Guido van Rossum86d25681992-05-15 11:05:54 +000022{
23 long ticks;
Guido van Rossum55db5151996-12-10 00:32:31 +000024 if (!PyArg_Parse(args, "l", &ticks))
Guido van Rossum86d25681992-05-15 11:05:54 +000025 return NULL;
Guido van Rossum55db5151996-12-10 00:32:31 +000026 Py_BEGIN_ALLOW_THREADS
Guido van Rossum86d25681992-05-15 11:05:54 +000027 sginap(ticks);
Guido van Rossum55db5151996-12-10 00:32:31 +000028 Py_END_ALLOW_THREADS
29 Py_INCREF(Py_None);
30 return Py_None;
Guido van Rossum86d25681992-05-15 11:05:54 +000031}
32
Guido van Rossum43021931994-09-12 10:40:46 +000033extern char *_getpty(int *, int, mode_t, int);
34
Guido van Rossum55db5151996-12-10 00:32:31 +000035static PyObject *
Peter Schneider-Kamp41c36ff2000-07-10 12:29:26 +000036sgi__getpty(PyObject *self, PyObject *args)
Guido van Rossum43021931994-09-12 10:40:46 +000037{
38 int oflag;
39 int mode;
40 int nofork;
41 char *name;
42 int fildes;
Guido van Rossum55db5151996-12-10 00:32:31 +000043 if (!PyArg_Parse(args, "(iii)", &oflag, &mode, &nofork))
Guido van Rossum43021931994-09-12 10:40:46 +000044 return NULL;
45 errno = 0;
46 name = _getpty(&fildes, oflag, (mode_t)mode, nofork);
47 if (name == NULL) {
Guido van Rossum55db5151996-12-10 00:32:31 +000048 PyErr_SetFromErrno(PyExc_IOError);
Guido van Rossum43021931994-09-12 10:40:46 +000049 return NULL;
50 }
Guido van Rossum55db5151996-12-10 00:32:31 +000051 return Py_BuildValue("(si)", name, fildes);
Guido van Rossum43021931994-09-12 10:40:46 +000052}
53
Guido van Rossum55db5151996-12-10 00:32:31 +000054static PyMethodDef sgi_methods[] = {
Guido van Rossum86d25681992-05-15 11:05:54 +000055 {"nap", sgi_nap},
Guido van Rossum43021931994-09-12 10:40:46 +000056 {"_getpty", sgi__getpty},
Guido van Rossum86d25681992-05-15 11:05:54 +000057 {NULL, NULL} /* sentinel */
58};
59
60
61void
Thomas Woutersf3f33dc2000-07-21 06:00:07 +000062initsgi(void)
Guido van Rossum86d25681992-05-15 11:05:54 +000063{
Guido van Rossum55db5151996-12-10 00:32:31 +000064 Py_InitModule("sgi", sgi_methods);
Guido van Rossum86d25681992-05-15 11:05:54 +000065}