int entryUnpack(Entry *e, uchar *p, int index) { p += index * VtEntrySize; e->gen = U32GET(p); e->psize = U16GET(p+4); e->dsize = U16GET(p+6); e->flags = U8GET(p+8); e->depth = (e->flags & VtEntryDepthMask) >> VtEntryDepthShift; e->flags &= ~VtEntryDepthMask; e->size = U48GET(p+14); if(e->flags & VtEntryLocal){ e->archive = p[27]; e->snap = U32GET(p+28); e->tag = U32GET(p+32); memset(e->score, 0, 16); memmove(e->score+16, p+36, 4); }else{ e->archive = 0; e->snap = 0; e->tag = 0; memmove(e->score, p+20, VtScoreSize); } return 1; }
int vtentryunpack(VtEntry *e, uchar *p, int index) { uchar *op; p += index * VtEntrySize; op = p; e->gen = U32GET(p); p += 4; e->psize = U16GET(p); p += 2; e->dsize = U16GET(p); p += 2; e->flags = U8GET(p); p++; if(e->flags & _VtEntryBig) { e->psize = (e->psize>>5)<<(e->psize & 31); e->dsize = (e->dsize>>5)<<(e->dsize & 31); }