void ls_fileEntryToDirListEntry(DirList *dlist, euint8* buf, euint16 offset) { if(offset>480 || offset%32)return; buf+=offset; memCpy(buf+OFFSET_DE_FILENAME,dlist->currentEntry.FileName,LIST_MAXLENFILENAME); dlist->currentEntry.Attribute = *(buf+OFFSET_DE_ATTRIBUTE); dlist->currentEntry.FileSize = ex_getb32(buf,OFFSET_DE_FILESIZE); }
/* **************************************************************************** * void fs_loadVolumeId(FileSystem *fs, Partition *part) * Description: This function loads all relevant fields from the volumeid. */ void fs_loadVolumeId(FileSystem *fs, Partition *part) { euint8 *buf; buf=part_getSect(part,0,IOM_MODE_READONLY|IOM_MODE_EXP_REQ); fs->volumeId.BytesPerSector=ex_getb16(buf,0x0B); fs->volumeId.SectorsPerCluster=*((eint8*)(buf+0x0D)); fs->volumeId.ReservedSectorCount=ex_getb16(buf,0x0E); fs->volumeId.NumberOfFats=*((eint8*)(buf+0x10)); fs->volumeId.RootEntryCount=ex_getb16(buf,0x11); fs->volumeId.SectorCount16=ex_getb16(buf,0x13); fs->volumeId.FatSectorCount16=ex_getb16(buf,0x16); fs->volumeId.SectorCount32=ex_getb32(buf,0x20); fs->volumeId.FatSectorCount32=ex_getb32(buf,0x24); fs->volumeId.RootCluster=ex_getb32(buf,0x2C); part_relSect(part,buf); }