2018-12-24 07:42:30 -08:00

58 lines
1.1 KiB
Go

package vfat
import (
"bytes"
)
const (
// Magic is the VFAT magic signature.
Magic = "FAT32"
)
// SuperBlock represents the vfat super block.
type SuperBlock struct {
Ignored [3]uint8
Sysid [8]uint8
SectorSize [2]uint8
ClusterSize uint8
Reserved uint16
Fats uint8
DirEntries [2]uint8
Sectors [2]uint8
Media uint8
FatLength uint16
SecsTrack uint16
Heads uint16
Hidden uint32
TotalSect uint32
Fat32Length uint32
Flags uint16
Version [2]uint8
RootCluster uint32
FsinfoSector uint16
BackupBoot uint16
Reserved2 [6]uint16
Unknown [3]uint8
Serno [4]uint8
Label [11]uint8
Magic [8]uint8
Dummy2 [0x1fe - 0x5a]uint8
Pmagic [2]uint8
}
// Is implements the SuperBlocker interface.
func (sb *SuperBlock) Is() bool {
trimmed := bytes.Trim(sb.Magic[:], " ")
return bytes.Equal(trimmed, []byte(Magic))
}
// Offset implements the SuperBlocker interface.
func (sb *SuperBlock) Offset() int64 {
return 0x0
}
// Type implements the SuperBlocker interface.
func (sb *SuperBlock) Type() string {
return "fat32"
}