6 staticforward PyTypeObject ACLType;
13 static PyObject* new_ACL(PyObject* self, PyObject* args) {
16 if (!PyArg_ParseTuple(args,""))
19 theacl = PyObject_New(ACLObject, &ACLType);
20 theacl->ob_acl = acl_init(0);
21 if(theacl->ob_acl == NULL) {
23 return PyErr_SetFromErrno(PyExc_IOError);
26 return (PyObject*)theacl;
29 static void ACL_dealloc(PyObject* obj) {
30 ACLObject *self = (ACLObject*) obj;
31 PyObject *err_type, *err_value, *err_traceback;
32 int have_error = PyErr_Occurred() ? 1 : 0;
35 PyErr_Fetch(&err_type, &err_value, &err_traceback);
36 if(acl_free(self->ob_acl) != 0)
37 PyErr_WriteUnraisable(obj);
39 PyErr_Restore(err_type, err_value, err_traceback);
43 static PyObject* ACL_repr(PyObject *obj) {
45 ACLObject *self = (ACLObject*) obj;
48 text = acl_to_text(self->ob_acl, NULL);
50 return PyErr_SetFromErrno(PyExc_IOError);
52 ret = PyString_FromString(text);
53 if(acl_free(text) != 0) {
55 return PyErr_SetFromErrno(PyExc_IOError);
60 static PyTypeObject ACLType = {
61 PyObject_HEAD_INIT(NULL)
66 ACL_dealloc, /*tp_dealloc*/
78 static PyMethodDef acl_methods[] = {
79 {"ACL", new_ACL, METH_VARARGS, "Create a new ACL object."},
83 DL_EXPORT(void) initacl(void) {
84 ACLType.ob_type = &PyType_Type;
86 Py_InitModule("acl", acl_methods);