summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--isys/isys.c13
-rw-r--r--isys/isys.py4
2 files changed, 17 insertions, 0 deletions
diff --git a/isys/isys.c b/isys/isys.c
index af60cdcba..9f30a2f14 100644
--- a/isys/isys.c
+++ b/isys/isys.c
@@ -18,6 +18,7 @@
#include <sys/ioctl.h>
#include <sys/mount.h>
#include <sys/stat.h>
+#include <sys/sysmacros.h>
#include <sys/time.h>
#include <sys/vfs.h>
#include <unistd.h>
@@ -85,6 +86,7 @@ static PyObject * doIsScsiRemovable(PyObject * s, PyObject * args);
static PyObject * doIsIdeRemovable(PyObject * s, PyObject * args);
static PyObject * doEjectCdrom(PyObject * s, PyObject * args);
static PyObject * doVtActivate(PyObject * s, PyObject * args);
+static PyObject * doisPsudoTTY(PyObject * s, PyObject * args);
static PyMethodDef isysModuleMethods[] = {
{ "ejectcdrom", (PyCFunction) doEjectCdrom, METH_VARARGS, NULL },
@@ -130,6 +132,7 @@ static PyMethodDef isysModuleMethods[] = {
{ "isScsiRemovable", (PyCFunction) doIsScsiRemovable, METH_VARARGS, NULL},
{ "isIdeRemovable", (PyCFunction) doIsIdeRemovable, METH_VARARGS, NULL},
{ "vtActivate", (PyCFunction) doVtActivate, METH_VARARGS, NULL},
+ { "isPsudoTTY", (PyCFunction) doisPsudoTTY, METH_VARARGS, NULL},
{ NULL }
} ;
@@ -1369,3 +1372,13 @@ static PyObject * doVtActivate(PyObject * s, PyObject * args) {
return Py_None;
}
+static PyObject * doisPsudoTTY(PyObject * s, PyObject * args) {
+ int fd;
+ struct stat sb;
+
+ if (!PyArg_ParseTuple(args, "i", &fd)) return NULL;
+ fstat(fd, &sb);
+
+ /* XXX close enough for now */
+ return Py_BuildValue("i", (major(sb.st_rdev) == 3));
+}
diff --git a/isys/isys.py b/isys/isys.py
index 2987c004a..626355dcc 100644
--- a/isys/isys.py
+++ b/isys/isys.py
@@ -349,3 +349,7 @@ def driveIsRemovable(device):
def vtActivate (num):
_isys.vtActivate (num)
+
+def isPsudoTTY (fd):
+ return _isys.isPsudoTTY (fd)
+