1/* 2 * efs_dir.h 3 * 4 * Copyright (c) 1999 Al Smith 5 */ 6 7#ifndef __EFS_DIR_H__ 8#define __EFS_DIR_H__ 9 10#define EFS_DIRBSIZE_BITS EFS_BLOCKSIZE_BITS 11#define EFS_DIRBSIZE (1 << EFS_DIRBSIZE_BITS) 12 13struct efs_dentry { 14 __be32 inode; 15 unsigned char namelen; 16 char name[3]; 17}; 18 19#define EFS_DENTSIZE (sizeof(struct efs_dentry) - 3 + 1) 20#define EFS_MAXNAMELEN ((1 << (sizeof(char) * 8)) - 1) 21 22#define EFS_DIRBLK_HEADERSIZE 4 23#define EFS_DIRBLK_MAGIC 0xbeef /* moo */ 24 25struct efs_dir { 26 __be16 magic; 27 unsigned char firstused; 28 unsigned char slots; 29 30 unsigned char space[EFS_DIRBSIZE - EFS_DIRBLK_HEADERSIZE]; 31}; 32 33#define EFS_MAXENTS \ 34 ((EFS_DIRBSIZE - EFS_DIRBLK_HEADERSIZE) / \ 35 (EFS_DENTSIZE + sizeof(char))) 36 37#define EFS_SLOTAT(dir, slot) EFS_REALOFF((dir)->space[slot]) 38 39#define EFS_REALOFF(offset) ((offset << 1)) 40 41#endif /* __EFS_DIR_H__ */ 42 43