ncloader  0.1
 모두 데이타 구조 파일들 함수 변수 타입정의 열거형 타입 열거형 멤버 매크로 그룹들 페이지들
fat12.c 파일 참조
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/stat.h>
+ fat12.c에 대한 include 의존 그래프

데이타 구조

struct  fat_dentry
 
struct  boot_parameter_block
 
union  boot_parameter_block::type
 
struct  boot_parameter_block::type::fat16
 
union  type
 
struct  type::fat16
 
struct  DSKSZTOSECPERCLUS
 
struct  fat32_fsinfo
 
struct  fat_long_dirent
 

매크로

#define SIZEOF_DENTRY   32
 
#define ROOT_DIR_SECTORS(bpb)   ((((bpb)->nr_root_entry * SIZEOF_DENTRY) + ((bpb)->sector_size - 1)) / (bpb)->sector_size)
 
#define FAT_SIZE(bpb)   ((bpb)->size_of_fat16 ? (bpb)->size_of_fat16 : (bpb)->type.fat32.size_of_fat32)
 
#define FIRST_DATA_SECTOR(bpb)   ((bpb)->reserved_sector + ((bpb)->nr_fat * FAT_SIZE(bpb)) + ROOT_DIR_SECTORS(bpb))
 
#define FIRST_SECTOR_OF_CLUSTER(bpb, N)   (((N)-2) * ((bpb)->sector_per_cluster) + FIRST_DATA_SECTOR(bpb))
 
#define TOTAL_SECTOR(bpb)   ((bpb)->total_sector16 ? (bpb)->total_sector16 : (bpb)->total_sector32)
 
#define NR_DATA_SECTOR(bpb)   (TOTAL_SECTOR(bpb) - ((bpb)->reserved_sector + (bpb)->nr_fat * FAT_SIZE(bpb)) + ROOT_DIR_SECTORS(bpb))
 
#define COUNT_OF_CLUSTER(bpb)   (NR_DATA_SECTOR(bpb) / (bpb)->sector_per_cluster)
 
#define IS_FAT12(bpb)   (COUNT_OF_CLUSTER(bpb) < 4085)
 
#define IS_FAT16(bpb)   (!IS_FAT12(bpb) && (COUNT_OF_CLUSTER(bpb) < 65525))
 
#define IS_FAT32(bpb)   (COUNT_OF_CLUSTER(bpb) >= 65525)
 
#define COUNT_OF_VALID_MAX_CLUSTER(bpb)   (COUNT_OF_CLUSTER(bpb) + 1)
 
#define FAT_OFFSET(bpb, N)
 
#define THIS_FAT_SECTOR_NUMBER(bpb, N)   (FAT_OFFSET(bpb, (N)) / (bpb)->sector_size)
 
#define THIS_FAT_SECTORS(bpb, N)   ((bpb)->reserved_sector + (N) * FAT_SIZE(bpb))
 
#define THIS_FAT_OFFSET(bpb, N)   (THIS_FAT_SECTORS(bpb, (N)) * (bpb)->sector_size)
 
#define THIS_FAT_ENTRY_OFFSET(bpb, N)   (FAT_OFFSET(bpb, (N)) % (bpb)->sector_size)
 
#define TO_WORD(buffer)   ((unsigned short*)(&buffer))
 
#define TO_DWORD(buffer)   ((unsigned int*)(&buffer))
 
#define FAT_EOF(bpb)   (IS_FAT12(bpb) ? 0x0FF8 : IS_FAT16(bpb) ? 0xFFF8 : IS_FAT32(bpb) ? 0x0FFFFFF8 : 0)
 
#define GET_CLUSTER_ENTRY_VALUE(bpb, buffer, N)
 
#define SET_CLUSTER_ENTRY_VALUE(bpb, buffer, N, val)
 
#define IS_EOF(bpb, val)   (IS_FAT12(bpb) ? (val) >= 0x0FF8 : IS_FAT16(bpb) ? (val) >= 0xFFF8 : IS_FAT32(bpb) ? (val) >= 0x0FFFFFF8 : 0)
 
#define BAD_CLUSTER12   0x0FF7
 
#define BAD_CLUSTER16   0xFFF7
 
#define BAD_CLUSTER32   0x0FFFFFF7
 
#define UPDATE_FAT_SIZE(bpb, dsksz)
 
#define FIRST_ROOTDIR_SECTOR(bpb)   ((bpb)->reserved_sector + (bpb)->nr_fat * FAT_SIZE(bpb))
 
#define GET_FIRST_BLOCK(dentry)   ((dentry)->first_cluster_hi << 16 | (dentry)->first_cluster_lo)
 
#define IS_FREE_DENTRY(dirent)   ((unsigned char)((dirent)->name[0] == (unsigned char)0xE5) || ((dirent)->name[0] == 0x00))
 
#define IS_KANJI_NAME(dirent)   ((dirent)->name[0] == 0x05)
 
#define IS_VALID_CHAR_FOR_NAME(ch)   (!(((ch) != 0x05 && (ch) < 0x20) && (ch) != 0x22 && ((ch) >= 0x2A && (ch) <= 0x2F) && ((ch) >= 0x3A && (ch) <= 0x3F) && (ch) != 0x5B && (ch) != 0x5C && (ch) != 0x5D && (ch) != 0x7C))
 
#define DAY_OF_MONTH(ent)   ((ent)->write_date & 0x000Fu)
 
#define MONTH_OF_YEAR(ent)   (((ent)->write_date >> 4) & 0x000Fu)
 
#define COUNT_OF_YEAR(ent)   (1980 + (((ent)->write_date >> 8) & 0x00FFu))
 
#define SECOND_COUNT(ent)   ((ent)->write_time & 0x000Fu)
 
#define MINUTES(ent)   (((ent)->write_time >> 4) & 0x003F)
 
#define HOURS(ent)   (((ent)->write_time >> 10) & 0x001F)
 
#define LAST_LONG_ENTRY   0x40
 
#define PATH_MAX   256
 
#define IS_LAST_SLOT(ent)   ((ent->ord & LAST_LONG_ENTRY) == 0)
 

타입정의

typedef struct fat_dentry fat_dentry_t
 
typedef struct boot_parameter_block boot_parameter_block_t
 
typedef struct fat_long_dirent fat_slot_t
 

열거형 타입

enum  dir_attributes {
  ATTR_READ_ONLY = 0x01, ATTR_HIDDEN = 0x02, ATTR_SYSTEM = 0x04, ATTR_VOLUME_ID = 0x08,
  ATTR_DIRECTORY = 0x10, ATTR_ARCHIVE = 0x20, ATTR_NONE = 0x00, ATTR_EXT = ATTR_READ_ONLY | ATTR_HIDDEN | ATTR_SYSTEM | ATTR_VOLUME_ID,
  ATTR_UNUSED = ATTR_ARCHIVE | ATTR_VOLUME_ID | ATTR_SYSTEM | ATTR_HIDDEN, ATTR_LONG_NAME = ATTR_READ_ONLY | ATTR_HIDDEN | ATTR_SYSTEM | ATTR_VOLUME_ID, ATTR_LONG_NAME_MASK = ATTR_READ_ONLY | ATTR_HIDDEN | ATTR_SYSTEM | ATTR_VOLUME_ID | ATTR_DIRECTORY | ATTR_ARCHIVE, ATTR_NO_FILE = ATTR_SYSTEM | ATTR_VOLUME_ID | ATTR_DIRECTORY,
  ACTIVE_FLAG = 0x80, EXTENDED = 0x05, DELETED_FLAG = 0xE5
}
 

함수

struct fat_dentry __attribute__ ((packed))
 
int main (int argc, char *argv[])
 

변수

unsigned char name [11]
 
unsigned char attribute
 
unsigned char reserved
 
unsigned char create_time_tenth
 
unsigned short create_time
 
unsigned short create_date
 
unsigned short last_access_date
 
unsigned short first_cluster_hi
 
unsigned short write_time
 
unsigned short write_date
 
unsigned short first_cluster_lo
 
unsigned int file_size
 
unsigned char boot_drive
 
unsigned char boot_signature
 
unsigned int volume_id
 
unsigned char volume_label [11]
 
unsigned char fs_type [8]
 
unsigned char jmp [2]
 
unsigned char nop
 
unsigned char oem [8]
 
unsigned short sector_size
 
unsigned char sector_per_cluster
 
unsigned short reserved_sector
 
unsigned char nr_fat
 
unsigned short nr_root_entry
 
unsigned short total_sector16
 
unsigned char media_type
 
unsigned short size_of_fat16
 
unsigned short sector_per_track
 
unsigned short nr_head
 
unsigned int hidden_sector
 
unsigned int total_sector32
 
union type type
 
struct DSKSZTOSECPERCLUS __attribute__
 
unsigned int lead_sig
 
unsigned char reserved1 [480]
 
unsigned int struct_sig
 
unsigned int free_count
 
unsigned int next_free
 
unsigned char reserved2 [12]
 
unsigned int trail_sig
 
char ord
 
unsigned char name1 [10]
 
char checksum
 
unsigned char name2 [12]
 
unsigned char name3 [4]
 

변수 문서화

char attribute
unsigned char boot_drive
unsigned char boot_signature
char checksum
unsigned short create_date
unsigned short create_time
unsigned char create_time_tenth
unsigned int file_size
unsigned short first_cluster_hi
unsigned short first_cluster_lo
unsigned int free_count
unsigned char fs_type
unsigned int hidden_sector
unsigned char jmp[2]
unsigned short last_access_date
unsigned int lead_sig
unsigned char media_type
unsigned char name[11]
unsigned char name1[10]
unsigned char name2[12]
unsigned char name3[4]
unsigned int next_free
unsigned char nop
unsigned char nr_fat
unsigned short nr_head
unsigned short nr_root_entry
unsigned char oem[8]
char ord
unsigned char reserved
unsigned char reserved1[480]
unsigned char reserved2[12]
unsigned short reserved_sector
unsigned char sector_per_cluster
unsigned short sector_per_track
unsigned short sector_size
unsigned short size_of_fat16
unsigned int struct_sig
unsigned short total_sector16
unsigned int total_sector32
unsigned int trail_sig
char type
unsigned int volume_id
unsigned char volume_label
unsigned short write_date
unsigned short write_time