8 type FileNameWithInfo struct {
10 name []byte // File name
13 // fileNameWithInfoHeader contains the fixed length fields of FileNameWithInfo
14 type fileNameWithInfoHeader struct {
15 Type [4]byte // File type code
16 Creator [4]byte // File creator code
17 FileSize [4]byte // File Size in bytes
19 NameScript [2]byte // ??
20 NameSize [2]byte // Length of name field
23 func (f *fileNameWithInfoHeader) nameLen() int {
24 return int(binary.BigEndian.Uint16(f.NameSize[:]))
27 func (f *FileNameWithInfo) MarshalBinary() (data []byte, err error) {
29 err = binary.Write(&buf, binary.LittleEndian, f.fileNameWithInfoHeader)
34 _, err = buf.Write(f.name)
39 return buf.Bytes(), err
42 func (f *FileNameWithInfo) UnmarshalBinary(data []byte) error {
43 err := binary.Read(bytes.NewReader(data), binary.BigEndian, &f.fileNameWithInfoHeader)
47 headerLen := binary.Size(f.fileNameWithInfoHeader)
48 f.name = data[headerLen : headerLen+f.nameLen()]