14246b616SDavid du Colombier typedef struct Stringtab Stringtab; 24246b616SDavid du Colombier struct Stringtab { 34246b616SDavid du Colombier Stringtab *link; 44246b616SDavid du Colombier Stringtab *hash; 54246b616SDavid du Colombier char *str; 64246b616SDavid du Colombier int n; 74246b616SDavid du Colombier int count; 8*2b7fd5adSDavid du Colombier int date; 94246b616SDavid du Colombier }; 104246b616SDavid du Colombier 114246b616SDavid du Colombier typedef struct Hash Hash; 124246b616SDavid du Colombier struct Hash 134246b616SDavid du Colombier { 144246b616SDavid du Colombier int sorted; 154246b616SDavid du Colombier Stringtab **stab; 164246b616SDavid du Colombier int nstab; 174246b616SDavid du Colombier int ntab; 184246b616SDavid du Colombier Stringtab *all; 194246b616SDavid du Colombier }; 204246b616SDavid du Colombier 214246b616SDavid du Colombier Stringtab *findstab(Hash*, char*, int, int); 224246b616SDavid du Colombier Stringtab *sortstab(Hash*); 234246b616SDavid du Colombier 244246b616SDavid du Colombier int Bwritehash(Biobuf*, Hash*); /* destroys hash */ 254246b616SDavid du Colombier void Breadhash(Biobuf*, Hash*, int); 264246b616SDavid du Colombier void freehash(Hash*); 274246b616SDavid du Colombier Biobuf *Bopenlock(char*, int); 28