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
,0777};
17 char *vde_sock
= NULL
, *vde_descr
= NULL
;
20 if (!PyArg_ParseTuple(args
, "ss|isi", &vde_sock
, &vde_descr
, &vde_args
.port
, &vde_args
.group
, &vde_args
.mode
))
23 ret
= vde_open_real(vde_sock
, vde_descr
, 1, &vde_args
);
27 return PyLong_FromUnsignedLong((unsigned long) ret
);
31 return PyErr_SetFromErrno(PyExc_RuntimeError
);
34 static PyObject
*vdeplug_ctlfd(PyObject
*self
, PyObject
*args
)
37 unsigned long vde_magic
= 0;
39 if (!PyArg_ParseTuple(args
, "k", &vde_magic
))
41 conn
= (VDECONN
*) vde_magic
;
46 return Py_BuildValue("i", vde_ctlfd(conn
));
49 return PyErr_SetFromErrno(PyExc_RuntimeError
);
52 static PyObject
*vdeplug_datafd(PyObject
*self
, PyObject
*args
)
55 unsigned long vde_magic
= 0;
57 if (!PyArg_ParseTuple(args
, "k", &vde_magic
))
59 conn
= (VDECONN
*) vde_magic
;
64 return Py_BuildValue("i", vde_datafd(conn
));
67 return PyErr_SetFromErrno(PyExc_RuntimeError
);
70 static PyObject
*vdeplug_close(PyObject
*self
, PyObject
*args
)
73 unsigned long vde_magic
= 0;
75 if (!PyArg_ParseTuple(args
, "k", &vde_magic
))
77 conn
= (VDECONN
*) vde_magic
;
82 return Py_BuildValue("i", vde_close(conn
));
85 return PyErr_SetFromErrno(PyExc_RuntimeError
);
90 static PyMethodDef vdeplug_methods
[] = {
91 {"open", vdeplug_open
, METH_VARARGS
},
92 {"ctlfd", vdeplug_ctlfd
, METH_VARARGS
},
93 {"datafd", vdeplug_datafd
, METH_VARARGS
},
94 {"close", vdeplug_close
, METH_VARARGS
},
95 {NULL
, NULL
} /* Sentinel */
98 void initvdeplug_python(void)
100 (void) Py_InitModule("vdeplug_python", vdeplug_methods
);
101 // PyErr_SetString(PyExc_RuntimeError,"vdeplug error");