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 13 struct efs_dentry { 14 unsigned int 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 25 struct efs_dir { 26 unsigned short 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