1*17016Ssam /* compact.h 4.5 84/08/25 */ 210923Sshannon 311245Sshannon #if defined(vax) || defined(sun) 410923Sshannon typedef int longint; 510923Sshannon #else 610923Sshannon typedef long longint; 710923Sshannon #endif 810923Sshannon 912903Sedward #include <sys/param.h> 1010923Sshannon #include <sys/stat.h> 1112903Sedward #include <sys/dir.h> 1210923Sshannon #include <stdio.h> 1310923Sshannon 1410923Sshannon #define COMPACTED 017777 15*17016Ssam #define PACKED 017437 1610923Sshannon 1710923Sshannon struct charac { 1811245Sshannon #if defined(vax) || defined(pdp11) 19*17016Ssam char lob, hib; 2011245Sshannon #else 21*17016Ssam char hib, lob; 2211245Sshannon #endif 2310923Sshannon }; 2410923Sshannon 2510923Sshannon union cio { 26*17016Ssam struct charac chars; 27*17016Ssam short integ; 2810923Sshannon }; 2910923Sshannon 30*17016Ssam #define LLEAF 010 31*17016Ssam #define RLEAF 04 32*17016Ssam #define SEEN 02 33*17016Ssam #define FBIT 01 34*17016Ssam 35*17016Ssam #define EF 0400 36*17016Ssam #define NC 0401 37*17016Ssam 38*17016Ssam #define NF (NC+1) 39*17016Ssam 4010923Sshannon struct fpoint { 41*17016Ssam struct node *fp; 42*17016Ssam int flags; 43*17016Ssam } in[NF]; 4410923Sshannon 4510923Sshannon struct index { 46*17016Ssam struct node *pt; 47*17016Ssam struct index *next; 48*17016Ssam } dir[2*NF], *head, *flist, *dirp, *dirq; 4910923Sshannon 50*17016Ssam #define NEW flist; flist = flist->next 51*17016Ssam 5210923Sshannon union treep { 53*17016Ssam struct node *p; 54*17016Ssam int ch; 5510923Sshannon }; 5610923Sshannon 5710923Sshannon struct node { 58*17016Ssam struct fpoint fath; 59*17016Ssam union treep sp[2]; 60*17016Ssam struct index *top[2]; 61*17016Ssam longint count[2]; 62*17016Ssam #define LEFT 0 63*17016Ssam #define RIGHT 1 64*17016Ssam } dict[NF], *bottom; 6510923Sshannon 66*17016Ssam FILE *cfp; 67*17016Ssam FILE *uncfp; 68