@@ -0,0 +1,882 @@
+import os%0A%0Aif os.name != 'posix':%0A    raise ImportError('No module named nixutils')%0A%0Atry:%0A    # in large part from http://code.activestate.com/recipes/578899-strsignal/%0A%0A    import signal%0A    import ctypes%0A    import ctypes.util%0A%0A    libc = ctypes.CDLL(ctypes.util.find_library(%22c%22))%0A    strsignal_c = ctypes.CFUNCTYPE(ctypes.c_char_p, ctypes.c_int)((%22strsignal%22, libc), ((1,),))%0A    NSIG = signal.NSIG%0A%0A%0A    def strsignal_ctypes_wrapper(signo):%0A        # The behavior of the C library strsignal() is unspecified if%0A        # called with an out-of-range argument.  Range-check on entry%0A        # _and_ NULL-check on exit.%0A        if 0 %3C= signo %3C NSIG:%0A            s = strsignal_c(signo)%0A            if s:%0A                return s.decode(%22utf-8%22)%0A        return %22Unknown signal %25d%22 %25 signo%0A%0A%0A    strsignal = strsignal_ctypes_wrapper%0Aexcept:%0A    strsignal = lambda x: 'signal %25d' %25 x%0A

Implement strsignal wrapper; #162