summaryrefslogtreecommitdiffstats
path: root/lib/objdir.c
blob: 665da4c1af102aa8f40ee25f2edb2981eff58c8f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "object.h"

objdir_entry_t*
objdir_seek(objdir_t *dir, uintmax_t index)
{
    uint8_t tli = index & 0xFF;
    if(tli == 0) return &dir->self;
 
    objdir_entry_t *entry = &dir->entries[tli];
    if(entry->type == KO_OBJECT_DIRECTORY) {
        if(tli == index) return entry;
        return objdir_seek((objdir_t*)entry->data, index >> 8);
    }
    return entry;
}