Показать сообщение отдельно

  #22  
Старый 30.03.2009, 09:42
HornetBlack
Новичок
Регистрация: 28.10.2007
Сообщений: 11
С нами: 9755907

Репутация: 12
По умолчанию

После недолгих поисков на сайте www.kernel-api.org нашел документацию по форматам записей каталога EXT/EXT2. Итого имеем 3 варианта каталогов:

1. struct ext_dir_entry:

unsigned long inode
unsigned short rec_len
unsigned short name_len
char name [EXT_NAME_LEN]

2. struct ext2_dir_entry:

__u32 inode Inode number.
__u16 rec_len Directory entry length.
__u16 name_len Name length.
char name [EXT2_NAME_LEN] File name.

3. struct ext2_dir_entry2:

__u32 inode Inode number.
__u16 rec_len Directory entry length.
__u8 name_len Name length.
__u8 file_type
char name [EXT2_NAME_LEN] File name.

Первый и второй варианты практически идентичны (видимо для совместимости ext и ext2)

Дополнительно по типам и выравниванию:

#define EXT2_FT_UNKNOWN 0
#define EXT2_FT_REG_FILE 1
#define EXT2_FT_DIR 2
#define EXT2_FT_CHRDEV 3
#define EXT2_FT_BLKDEV 4
#define EXT2_FT_FIFO 5
#define EXT2_FT_SOCK 6
#define EXT2_FT_SYMLINK 7
#define EXT2_FT_MAX 8

/**

* EXT2_DIR_PAD defines the directory entries boundaries
*
* NOTE: It must be a multiple of 4

*/
#define EXT2_DIR_PAD 4
#define EXT2_DIR_ROUND (EXT2_DIR_PAD - 1)
#define EXT2_DIR_REC_LEN(name_len) (((name_len) + 8 + EXT2_DIR_ROUND) & \
~EXT2_DIR_ROUND)


Жаль, что до таблиц inode не добраться, но надо уметь довольствоваться малым... ))

Последний раз редактировалось HornetBlack; 30.03.2009 в 09:57..
 
Ответить с цитированием