/* 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);
|