/* requires mp.h and libsec.h */ typedef struct Frlist Frlist; typedef struct Htab Htab; typedef struct Hent Hent; struct Frlist{ char* listname; void* obj; char* objtype; char* objname; uint objsize; Frlist* first; Frlist* prev; Frlist* next; Frlist* final; uint index; }; struct Htab{ void* parent; char* name; uint entries; Frlist* entlist; }; struct Hent{ Htab* parent; Frlist* ent; uint index; char* key; uchar hval[MD5dlen]; char* asciihash; void* obj; uint objsize; void *owner; }; Frlist* initl(char* objtype, uint objsize, char* objname, void* obj, char *listname); Frlist* putl(char* objtype, uint objsize, char* objname, void* obj, Frlist* old); Frlist* preputl(char* objtype, uint objsize, char* objname, void* obj, Frlist* old); Frlist* getnuml(uint num, Frlist* old); Frlist* reml(Frlist* f); void clearl(Frlist* f); Htab* htinit(void* obj, uint size, char* key, char* htabname); Hent* htput(void* obj, uint size, char* key, Htab* ht); Hent* htgetbykey(char* key, Htab* ht); Hent* htgetbyhash(uchar hash[MD5dlen], Htab* ht); Hent* htgetbygrep(char* grepfor, Htab* ht); Hent* htgetbyindex(uint index, Htab *ht); Hent* htdropent(Hent* old); void htcleartab(Htab* ht); char* hashconv(char* hash);