Extract package hashes to Package structure.

This commit is contained in:
Andrey Smirnov
2013-12-23 23:23:44 +04:00
parent 5046296115
commit d8a84adaa0
+19 -6
View File
@@ -20,11 +20,17 @@ type Package struct {
Filename string Filename string
Filesize int64 Filesize int64
Architecture string Architecture string
Depends []string // Various dependencies
PreDepends []string Depends []string
Suggests []string PreDepends []string
Recommends []string Suggests []string
Extra Stanza Recommends []string
// Hashsums of package contents
HashMD5 string
HashSHA1 string
HashSHA256 string
// Extra information from stanza
Extra Stanza
} }
func parseDependencies(input Stanza, key string) []string { func parseDependencies(input Stanza, key string) []string {
@@ -45,12 +51,18 @@ func NewPackageFromControlFile(input Stanza) *Package {
Version: input["Version"], Version: input["Version"],
Filename: input["Filename"], Filename: input["Filename"],
Architecture: input["Architecture"], Architecture: input["Architecture"],
HashMD5: input["MD5sum"],
HashSHA1: input["SHA1"],
HashSHA256: input["SHA256"],
} }
delete(input, "Package") delete(input, "Package")
delete(input, "Version") delete(input, "Version")
delete(input, "Filename") delete(input, "Filename")
delete(input, "Architecture") delete(input, "Architecture")
delete(input, "MD5sum")
delete(input, "SHA1")
delete(input, "SHA256")
result.Filesize, _ = strconv.ParseInt(input["Size"], 10, 64) result.Filesize, _ = strconv.ParseInt(input["Size"], 10, 64)
delete(input, "Size") delete(input, "Size")
@@ -97,7 +109,8 @@ func (p *Package) Equals(p2 *Package) bool {
p.Architecture == p2.Architecture && utils.StrSlicesEqual(p.Depends, p2.Depends) && p.Architecture == p2.Architecture && utils.StrSlicesEqual(p.Depends, p2.Depends) &&
utils.StrSlicesEqual(p.PreDepends, p2.PreDepends) && utils.StrSlicesEqual(p.Suggests, p2.Suggests) && utils.StrSlicesEqual(p.PreDepends, p2.PreDepends) && utils.StrSlicesEqual(p.Suggests, p2.Suggests) &&
utils.StrSlicesEqual(p.Recommends, p2.Recommends) && utils.StrMapsEqual(p.Extra, p2.Extra) && utils.StrSlicesEqual(p.Recommends, p2.Recommends) && utils.StrMapsEqual(p.Extra, p2.Extra) &&
p.Filesize == p2.Filesize p.Filesize == p2.Filesize && p.HashMD5 == p2.HashMD5 && p.HashSHA1 == p2.HashSHA1 &&
p.HashSHA256 == p2.HashSHA256
} }
// VerifyFile verifies integrity and existence of local files for the package // VerifyFile verifies integrity and existence of local files for the package