mass WIP commit

Signed-off-by: Sean Cross <sean@xobs.io>
This commit is contained in:
2019-07-29 22:29:50 +08:00
parent c018281728
commit 383403eba4
6 changed files with 348 additions and 177 deletions

View File

@ -17,4 +17,37 @@ struct fat_directory_entry {
uint8_t file_size[4];
};
struct fat12_partition
{
struct pang_io *io;
// Number of bytes in a sector (512)
uint32_t sector_size;
uint8_t sector_buffer[512];
// These units are "sectors"
uint32_t fat_offset;
uint32_t fat_size;
uint32_t root_offset;
uint32_t first_offset;
uint32_t cluster_size;
// These are in single-unit quantities
uint32_t root_entries;
uint32_t cluster_count;
uint32_t cluster_bytes;
uint32_t sector_count;
void *fat;
uint16_t *taf;
};
enum fat_attributes {
FAT_ATTR_DIR = 0x10,
FAT_ATTR_FILE = 0x20,
};
uint32_t fat12_find_free_cluster(struct fat12_partition *part, uint32_t start);
#endif /* FAT12_INTERNALS_H__ */

View File

@ -5,10 +5,12 @@
struct pang_io;
struct fat12_partition;
struct fat12_file;
struct fat12_dirent
{
char filename[256];
uint32_t first_cluster;
uint32_t parent_cluster;
uint32_t size;
uint32_t file_attributes;
uint32_t ctime;
@ -33,8 +35,14 @@ uint32_t fat12_get_cluster(void *fat, uint32_t cluster);
int fat12_ls_foreach(struct fat12_partition *part, uint32_t dir_cluster,
void *data, int (*callback)(void *data, const struct fat12_dirent *dirent));
int fat12_write_file(struct fat12_partition *part, const char *filename, const void *bfr, uint32_t size);
int fat12_delete_file(struct fat12_partition *part, const char *filename);
int fat12_write_file(struct fat12_partition *part, const char *filename[], const void *bfr, uint32_t size);
int fat12_delete_file(struct fat12_partition *part, const char *filename[]);
int fat12_defragment_file(struct fat12_partition *part, const char *path[]);
struct fat12_file *fat12_fopen(struct fat12_partition *part, const char *filename);
int fat12_fwrite(struct fat12_file *file, const void *buf, uint32_t size);
int fat12_fread(struct fat12_file *file, void *buf, uint32_t size);
int fat12_fclose(struct fat12_file **file);
int fat12_defrag(struct pang_io *io);
int fat12_mkfs(struct pang_io *io, uint32_t bytes);