clean style

pull/31037/head
ExplodingDragon 5 months ago
parent b3db785567
commit 568f7a60b1
No known key found for this signature in database
GPG Key ID: 8C351B970754EF16
  1. 56
      modules/packages/arch/metadata.go

@ -42,11 +42,40 @@ var (
reOptDep = regexp.MustCompile(`^[a-zA-Z0-9@._+-]+([<>]?=?([0-9]+:)?[a-zA-Z0-9@._+-]+)?(:.*)?$`) reOptDep = regexp.MustCompile(`^[a-zA-Z0-9@._+-]+([<>]?=?([0-9]+:)?[a-zA-Z0-9@._+-]+)?(:.*)?$`)
rePkgVer = regexp.MustCompile(`^[a-zA-Z0-9@._+-]+([<>]?=?([0-9]+:)?[a-zA-Z0-9@._+-]+)?$`) rePkgVer = regexp.MustCompile(`^[a-zA-Z0-9@._+-]+([<>]?=?([0-9]+:)?[a-zA-Z0-9@._+-]+)?$`)
magicZSTD = []byte{0x28, 0xB5, 0x2F, 0xFD} maxMagicLength = 0
magicXZ = []byte{0xFD, 0x37, 0x7A, 0x58, 0x5A} magics = map[string]struct {
magicGZ = []byte{0x1F, 0x8B} magic []byte
archiver func() archiver.Reader
}{
"zst": {
magic: []byte{0x28, 0xB5, 0x2F, 0xFD},
archiver: func() archiver.Reader {
return archiver.NewTarZstd()
},
},
"xz": {
magic: []byte{0xFD, 0x37, 0x7A, 0x58, 0x5A},
archiver: func() archiver.Reader {
return archiver.NewTarXz()
},
},
"gz": {
magic: []byte{0x1F, 0x8B},
archiver: func() archiver.Reader {
return archiver.NewTarGz()
},
},
}
) )
func init() {
for _, i := range magics {
if nLen := len(i.magic); nLen > maxMagicLength {
maxMagicLength = nLen
}
}
}
type Package struct { type Package struct {
Name string `json:"name"` Name string `json:"name"`
Version string `json:"version"` // Includes version, release and epoch Version string `json:"version"` // Includes version, release and epoch
@ -94,7 +123,8 @@ func ParsePackage(r *packages.HashedBuffer) (*Package, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
header := make([]byte, 5)
header := make([]byte, maxMagicLength)
_, err = r.Read(header) _, err = r.Read(header)
if err != nil { if err != nil {
return nil, err return nil, err
@ -106,16 +136,14 @@ func ParsePackage(r *packages.HashedBuffer) (*Package, error) {
var tarball archiver.Reader var tarball archiver.Reader
var tarballType string var tarballType string
if bytes.Equal(header[:len(magicZSTD)], magicZSTD) { for tarType, info := range magics {
tarballType = "zst" if bytes.Equal(header[:len(info.magic)], info.magic) {
tarball = archiver.NewTarZstd() tarballType = tarType
} else if bytes.Equal(header[:len(magicXZ)], magicXZ) { tarball = info.archiver()
tarballType = "xz" break
tarball = archiver.NewTarXz() }
} else if bytes.Equal(header[:len(magicGZ)], magicGZ) { }
tarballType = "gz" if tarballType == "" || tarball == nil {
tarball = archiver.NewTarGz()
} else {
return nil, errors.New("not supported compression") return nil, errors.New("not supported compression")
} }
err = tarball.Open(r, 0) err = tarball.Open(r, 0)

Loading…
Cancel
Save