func NewFile()

in toutoumomoma.go [64:99]


func NewFile(r io.ReaderAt) (*File, error) {
	var magic [4]byte
	_, err := r.ReadAt(magic[:], 0)
	if err != nil {
		if err == io.EOF {
			err = ErrUnknownFormat
		}
		return nil, err
	}
	switch {
	case bytes.Equal(magic[:], []byte("\x7FELF")):
		exe, err := openELF(r)
		if err != nil {
			return nil, err
		}
		return &File{exe}, nil

	case bytes.Equal(magic[:3], []byte("\xfe\xed\xfa")),
		bytes.Equal(magic[1:], []byte("\xfa\xed\xfe")):
		exe, err := openMachO(r)
		if err != nil {
			return nil, err
		}
		return &File{exe}, nil

	case bytes.Equal(magic[:2], []byte("MZ")):
		exe, err := openPE(r)
		if err != nil {
			return nil, err
		}
		return &File{exe}, nil

	default:
		return nil, ErrUnknownFormat
	}
}