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