2 * LibVdePlug/python wrapper
3 * Copyright © 2010 Daniele Lacamera
5 * Released under the terms of GNU LGPL v. 2.1
6 * (see COPYING.libvdeplug in the main project directory)
11 #include "libvdeplug.h"
14 static PyObject
*vdeplug_open(PyObject
*self
, PyObject
*args
)
16 struct vde_open_args vde_args
= {0,NULL
,0};
17 char *vde_sock
= NULL
, *vde_descr
= NULL
;
21 if (!PyArg_ParseTuple(args
, "ss|isi", &vde_sock
, &vde_descr
, &vde_args
.port
, &vde_args
.group
, &vde_args
.mode
))
24 ret
= vde_open_real(vde_sock
, vde_descr
, 1, &vde_args
);
29 return PyLong_FromUnsignedLong((unsigned long) ret
);
33 return PyErr_SetFromErrno(PyExc_RuntimeError
);
36 static PyObject
*vdeplug_ctlfd(PyObject
*self
, PyObject
*args
)
39 unsigned long vde_magic
= 0;
41 if (!PyArg_ParseTuple(args
, "k", &vde_magic
))
43 conn
= (VDECONN
*) vde_magic
;
48 return Py_BuildValue("i", vde_ctlfd(conn
));
51 return PyErr_SetFromErrno(PyExc_RuntimeError
);
54 static PyObject
*vdeplug_datafd(PyObject
*self
, PyObject
*args
)
57 unsigned long vde_magic
= 0;
59 if (!PyArg_ParseTuple(args
, "k", &vde_magic
))
61 conn
= (VDECONN
*) vde_magic
;
66 return Py_BuildValue("i", vde_datafd(conn
));
69 return PyErr_SetFromErrno(PyExc_RuntimeError
);
72 static PyObject
*vdeplug_close(PyObject
*self
, PyObject
*args
)
75 unsigned long vde_magic
= 0;
77 if (!PyArg_ParseTuple(args
, "k", &vde_magic
))
79 conn
= (VDECONN
*) vde_magic
;
84 return Py_BuildValue("i", vde_close(conn
));
87 return PyErr_SetFromErrno(PyExc_RuntimeError
);
92 static PyMethodDef vdeplug_methods
[] = {
93 {"open", vdeplug_open
, METH_VARARGS
},
94 {"ctlfd", vdeplug_ctlfd
, METH_VARARGS
},
95 {"datafd", vdeplug_datafd
, METH_VARARGS
},
96 {"close", vdeplug_close
, METH_VARARGS
},
97 {NULL
, NULL
} /* Sentinel */
100 void initvdeplug_python(void)
102 (void) Py_InitModule("vdeplug_python", vdeplug_methods
);
103 // PyErr_SetString(PyExc_RuntimeError,"vdeplug error");