+"""
+General PyAFS utilities, such as error handling
+"""
+
+import sys
+
+cdef int _init = 0
+
+class AFSException(Exception):
+ def __init__(self, errno, message):
+ self.errno = errno
+ self.strerror = afs_error_message(errno)
+ self.message = message
+
+ def __repr__(self):
+ return "AFSException(%s, %s)" % (self.errno, self.message)
+
+ def __str__(self):
+ return "[%s] (%s) while %s" % (self.errno, self.strerror, self.message)
+
+def pyafs_error(code, msg):
+ 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, msg)