1*17017Ssam /*	compact.h	4.6	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
1517016Ssam #define PACKED	017437
1610923Sshannon 
1710923Sshannon struct charac {
1811245Sshannon #if defined(vax) || defined(pdp11)
1917016Ssam 	char	lob, hib;
2011245Sshannon #else
2117016Ssam 	char	hib, lob;
2211245Sshannon #endif
2310923Sshannon };
2410923Sshannon 
2510923Sshannon union cio {
2617016Ssam 	struct	charac chars;
2717016Ssam 	short	integ;
2810923Sshannon };
2910923Sshannon 
3017016Ssam #define LLEAF	010
3117016Ssam #define RLEAF	04
3217016Ssam #define SEEN	02
3317016Ssam #define FBIT	01
3417016Ssam 
3517016Ssam #define EF	0400
3617016Ssam #define NC	0401
3717016Ssam 
3817016Ssam #define	NF	(NC+1)
3917016Ssam 
4010923Sshannon struct fpoint {
4117016Ssam 	struct	node *fp;
4217016Ssam 	int	flags;
4317016Ssam } in[NF];
4410923Sshannon 
4510923Sshannon struct index {
4617016Ssam 	struct	node *pt;
4717016Ssam 	struct	index *next;
4817016Ssam } dir[2*NF], *head, *flist, *dirp, *dirq;
4910923Sshannon 
5017016Ssam #define	NEW	flist; flist = flist->next
5117016Ssam 
5210923Sshannon union treep {
5317016Ssam 	struct	node *p;
5417016Ssam 	int	ch;
5510923Sshannon };
5610923Sshannon 
5710923Sshannon struct node {
5817016Ssam 	struct	fpoint fath;
59*17017Ssam 	struct son {
60*17017Ssam 		union	treep sp;
61*17017Ssam 		struct	index *top;
62*17017Ssam 		longint	count;
63*17017Ssam 	} sons[2];
6417016Ssam #define	LEFT	0
6517016Ssam #define	RIGHT	1
6617016Ssam } dict[NF], *bottom;
6710923Sshannon 
6817016Ssam FILE	*cfp;
6917016Ssam FILE	*uncfp;
70