176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/* ----------------------------------------------------------------------- * 276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * 376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Copyright 2004-2008 H. Peter Anvin - All Rights Reserved 476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * 576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * This program is free software; you can redistribute it and/or modify 676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * it under the terms of the GNU General Public License as published by 776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * the Free Software Foundation, Inc., 53 Temple Place Ste 330, 876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Boston MA 02111-1307, USA; either version 2 of the License, or 976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * (at your option) any later version; incorporated herein by reference. 1076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * 1176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * ----------------------------------------------------------------------- */ 1276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 1376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/* 1476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * libfatint.h 1576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * 1676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Internals for the libfat filesystem 1776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman */ 1876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 1976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#ifndef LIBFATINT_H 2076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define LIBFATINT_H 2176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 2276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#include "libfat.h" 2376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#include "fat.h" 2476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 2576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanstruct libfat_sector { 2676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman libfat_sector_t n; /* Sector number */ 2776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman struct libfat_sector *next; /* Next in list */ 2876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman char data[LIBFAT_SECTOR_SIZE]; 2976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman}; 3076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 3176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanenum fat_type { 3276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman FAT12, 3376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman FAT16, 3476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman FAT28 3576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman}; 3676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 3776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanstruct libfat_filesystem { 3876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman int (*read) (intptr_t, void *, size_t, libfat_sector_t); 3976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman intptr_t readptr; 4076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 4176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman enum fat_type fat_type; 4276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman unsigned int clustsize; 4376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman int clustshift; 4476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman int32_t endcluster; /* Highest legal cluster number + 1 */ 4576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman int32_t rootcluster; /* Root directory cluster */ 4676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 4776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman libfat_sector_t fat; /* Start of FAT */ 4876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman libfat_sector_t rootdir; /* Start of root directory */ 4976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman libfat_sector_t data; /* Start of data area */ 5076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman libfat_sector_t end; /* End of filesystem */ 5176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 5276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman struct libfat_sector *sectors; 5376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman}; 5476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 5576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#endif /* LIBFATINT_H */ 56