in vhdcore/header/factory.go [31:104]
func (f *Factory) Create() (*Header, error) {
header := &Header{}
var err error
errDone := func() (*Header, error) {
return nil, err
}
header.Cookie, err = f.readHeaderCookie()
if err != nil {
return errDone()
}
header.DataOffset, err = f.readDataOffset()
if err != nil {
return errDone()
}
header.TableOffset, err = f.readBATOffset()
if err != nil {
return errDone()
}
header.HeaderVersion, err = f.readHeaderVersion()
if err != nil {
return errDone()
}
header.MaxTableEntries, err = f.readMaxBATEntries()
if err != nil {
return errDone()
}
header.BlockSize, err = f.readBlockSize()
if err != nil {
return errDone()
}
header.CheckSum, err = f.readCheckSum()
if err != nil {
return errDone()
}
header.ParentUniqueID, err = f.readParentUniqueID()
if err != nil {
return errDone()
}
header.ParentTimeStamp, err = f.readParentTimeStamp()
if err != nil {
return errDone()
}
header.Reserved, err = f.readReserved()
if err != nil {
return errDone()
}
header.ParentPath, err = f.readParentPath()
if err != nil {
return errDone()
}
header.ParentLocators, err = f.readParentLocators()
if err != nil {
return errDone()
}
header.RawData, err = f.readWholeHeader()
if err != nil {
return errDone()
}
return header, nil
}