Subversion Repositories shark

Rev

Blame | Last modification | View Log | RSS feed

/*
 * efs_dir.h
 *
 * Copyright (c) 1999 Al Smith
 */


#ifndef __EFS_DIR_H__
#define __EFS_DIR_H__

#define EFS_DIRBSIZE_BITS       EFS_BLOCKSIZE_BITS
#define EFS_DIRBSIZE            (1 << EFS_DIRBSIZE_BITS)

struct efs_dentry {
        unsigned int    inode;
        unsigned char   namelen;
        char            name[3];
};

#define EFS_DENTSIZE    (sizeof(struct efs_dentry) - 3 + 1)
#define EFS_MAXNAMELEN  ((1 << (sizeof(char) * 8)) - 1)

#define EFS_DIRBLK_HEADERSIZE   4
#define EFS_DIRBLK_MAGIC        0xbeef  /* moo */

struct efs_dir {
        unsigned short  magic;
        unsigned char   firstused;
        unsigned char   slots;

        unsigned char   space[EFS_DIRBSIZE - EFS_DIRBLK_HEADERSIZE];
};

#define EFS_MAXENTS \
        ((EFS_DIRBSIZE - EFS_DIRBLK_HEADERSIZE) / \
         (EFS_DENTSIZE + sizeof(char)))


#define EFS_SLOTAT(dir, slot) EFS_REALOFF((dir)->space[slot])

#define EFS_REALOFF(offset) ((offset << 1))

#endif /* __EFS_DIR_H__ */