X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/python-afs.git/blobdiff_plain/b18334d13cd65d8eff268ace564e64d325d01c67:/afs/afs.pyx..41165a6d2c880400afc4b04700d05bd3fa537a42:/afs/gitweb.css diff --git a/afs/afs.pyx b/afs/afs.pyx deleted file mode 100644 index f7f167b..0000000 --- a/afs/afs.pyx +++ /dev/null @@ -1,67 +0,0 @@ -""" -General PyAFS utilities, such as error handling -""" - -import sys - -# otherwise certain headers are unhappy -cdef extern from "netinet/in.h": pass -cdef extern from "afs/vice.h": pass - -cdef int _init = 0 - -# pioctl convenience wrappers - -cdef extern int pioctl_read(char *dir, afs_int32 op, void *buffer, unsigned short size, afs_int32 follow) except -1: - cdef ViceIoctl blob - cdef afs_int32 code - blob.in_size = 0 - blob.out_size = size - blob.out = buffer - code = pioctl(dir, op, &blob, follow) - # This might work with the rest of OpenAFS, but I'm not convinced - # the rest of it is consistent - if code == -1: - raise OSError(errno, strerror(errno)) - pyafs_error(code) - return code - -cdef extern int pioctl_write(char *dir, afs_int32 op, char *buffer, afs_int32 follow) except -1: - cdef ViceIoctl blob - cdef afs_int32 code - blob.cin = buffer - blob.in_size = 1 + strlen(buffer) - blob.out_size = 0 - code = pioctl(dir, op, &blob, follow) - # This might work with the rest of OpenAFS, but I'm not convinced - # the rest of it is consistent - if code == -1: - raise OSError(errno, strerror(errno)) - pyafs_error(code) - return code - -# Error handling - -class AFSException(Exception): - def __init__(self, errno): - self.errno = errno - self.strerror = afs_error_message(errno) - - def __repr__(self): - return "AFSException(%s)" % (self.errno) - - def __str__(self): - return "[%s] %s" % (self.errno, self.strerror) - -def pyafs_error(code): - if not _init: - initialize_ACFG_error_table() - initialize_KTC_error_table() - initialize_PT_error_table() - initialize_RXK_error_table() - initialize_U_error_table() - - _init = 1 - - if code != 0: - raise AFSException(code)