static PyObject *TermiosError;
-static char* fname;
-
static int fdconv(PyObject* obj, void* p)
{
int fd;
fd = PyObject_AsFileDescriptor(obj);
- if (fd == -1) {
- if (PyInt_Check(obj)) {
- fd = PyInt_AS_LONG(obj);
- }
- else {
- char* tname;
-
- if (PyInstance_Check(obj)) {
- tname = PyString_AS_STRING(
- ((PyInstanceObject*)obj)->in_class->cl_name);
- }
- else {
- tname = obj->ob_type->tp_name;
- }
-
- PyErr_Format(PyExc_TypeError,
- "%s, arg 1: can't extract file descriptor from \"%.500s\"",
- fname, tname);
- return 0;
- }
+ if (fd >= 0) {
+ *(int*)p = fd;
+ return 1;
}
-
- *(int*)p = fd;
- return 1;
+ return 0;
}
static char termios_tcgetattr__doc__[] = "\
int i;
char ch;
- fname = "tcgetattr";
-
if (!PyArg_ParseTuple(args, "O&:tcgetattr",
fdconv, (void*)&fd))
return NULL;
PyObject *term, *cc, *v;
int i;
- fname = "tcsetattr";
-
if (!PyArg_ParseTuple(args, "O&iO:tcsetattr",
fdconv, &fd, &when, &term))
return NULL;
{
int fd, duration;
- fname = "tcsendbreak";
-
if (!PyArg_ParseTuple(args, "O&i:tcsendbreak",
fdconv, &fd, &duration))
return NULL;
{
int fd;
- fname = "tcdrain";
-
if (!PyArg_ParseTuple(args, "O&:tcdrain",
fdconv, &fd))
return NULL;
{
int fd, queue;
- fname = "tcflush";
-
if (!PyArg_ParseTuple(args, "O&i:tcflush",
fdconv, &fd, &queue))
return NULL;
{
int fd, action;
- fname = "tcflow";
-
if (!PyArg_ParseTuple(args, "O&i:tcflow",
fdconv, &fd, &action))
return NULL;