aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--chksum/chksum.go16
1 files changed, 13 insertions, 3 deletions
diff --git a/chksum/chksum.go b/chksum/chksum.go
index 0931567..8a5f9d3 100644
--- a/chksum/chksum.go
+++ b/chksum/chksum.go
@@ -28,6 +28,8 @@ type Checksum struct {
Hash hash.Hash
}
+type Checklist []Checksum
+
var hashes = map[string]func() hash.Hash{
"SHA512": sha512.New,
"SHA256": sha256.New,
@@ -35,18 +37,17 @@ var hashes = map[string]func() hash.Hash{
"MD5": md5.New,
}
-func ParseFile(fname string) ([]Checksum, error) {
+func ParseFile(fname string) (Checklist, error) {
fd, err := os.Open(fname)
if err != nil {
return nil, err
}
defer fd.Close()
- var checklist []Checksum
+ var checklist Checklist
re := regexp.MustCompile(`(\w+) \(([^)]+)\) = (\w+)`)
scanner := bufio.NewScanner(fd)
for scanner.Scan() {
- //var cs Checksum
r := re.FindStringSubmatch(scanner.Text())
if len(r) != 4 {
return nil, errors.New("invalid content")
@@ -82,3 +83,12 @@ func (c Checksum) Check() error {
}
return nil
}
+
+func (c Checklist) Check() error {
+ for _, cs := range c {
+ if err := cs.Check(); err != nil {
+ return err
+ }
+ }
+ return nil
+}