This is a restructuring of my perms for i2c - hopefully this version will be a little easier to maintain than the huge perms.c file which had everything thrown in willy-nilly. perms.inc is the IMP version of the perms which is compiled at the head of every IMP program. However the implementation of the perms code is currently entirely written in C so it is important for maintainers of this suite to ensure a consistent mapping between the IMP headers in perms.inc and the corresponding C headers in perms.h perms.h is the encompassing header file that includes the various components of the perms support. imptypes.h defines some structured types needed by imp programs for data that does not have a direct equivalent in C, such as IMP's %string and %name data types. internal.h and internal.c are the primary code for perm routines and are implemented in C as 'static inline' - see visible.c for the callable procedural wrappers that an IMP program calls internalfile.h and internalfile.c are support routines for IMP I/O (and program invocation) pbacktrace.h and pbacktrace.c support one of the many possible implementations of a post-mortem backtrace psignal.h and psignal.c implement imp's %signal mechanism on top of C's signal() call. psignal-test.c is a test program ptrace.h and ptrace.c will contain runtime tracing/profiling code. Eventually. visible.h contains the C procedures that correspond to the IMP routines in perms.inc visible.c is a test program that's basically what i77 would output but without needing i77. impread.h and impread.c are for Imp's READ procedure, which gets a file of its own: it's a messy one! -- I have not yet moved everything over from the old perms.c so at the time of writing there is still work to be done.