aboutsummaryrefslogtreecommitdiff
path: root/chksum
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2017-05-03 13:05:43 +0200
committerDimitri Sokolyuk <demon@dim13.org>2017-05-03 13:05:43 +0200
commitc8fc9a36594a62d0ea335d6785914925c8d9c00c (patch)
tree42f60e95d30574ed58e20dbab608f3c1bb2d6c25 /chksum
parent6dc80a803e91122a7b56b37276a257d51890be4f (diff)
Checklist
Diffstat (limited to 'chksum')
-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
+}