|
|
|
@ -32,7 +32,7 @@ func (r results) Less(i, j int) bool { return r[i].f < r[j].f }
|
|
|
|
|
type hashr func() hash.Hash |
|
|
|
|
|
|
|
|
|
// hsh figures out which hash algo to use, and distributes the work of hashing
|
|
|
|
|
func hsh(files []string) chan result { |
|
|
|
|
func hsh(files []string, verbose bool) chan result { |
|
|
|
|
var h hashr |
|
|
|
|
switch *algo { |
|
|
|
|
case "sha1", "1": |
|
|
|
@ -77,7 +77,7 @@ func hsh(files []string) chan result {
|
|
|
|
|
|
|
|
|
|
res := []<-chan result{} |
|
|
|
|
for w := 0; w < *ngo; w++ { |
|
|
|
|
res = append(res, compute(h, jobs)) |
|
|
|
|
res = append(res, compute(h, jobs, verbose)) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
o := make(chan result) |
|
|
|
@ -96,7 +96,7 @@ func hsh(files []string) chan result {
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// compute is the checksumming workhorse
|
|
|
|
|
func compute(h hashr, jobs chan checksum) chan result { |
|
|
|
|
func compute(h hashr, jobs chan checksum, verbose bool) chan result { |
|
|
|
|
hsh := h() |
|
|
|
|
r := make(chan result) |
|
|
|
|
go func() { |
|
|
|
@ -113,6 +113,9 @@ func compute(h hashr, jobs chan checksum) chan result {
|
|
|
|
|
r <- result{err: err} |
|
|
|
|
continue |
|
|
|
|
} |
|
|
|
|
if verbose { |
|
|
|
|
fmt.Fprintf(os.Stderr, "%v\n", job.filename) |
|
|
|
|
} |
|
|
|
|
r <- result{f: job.filename, cs: fmt.Sprintf("%x", hsh.Sum(nil))} |
|
|
|
|
} |
|
|
|
|
close(r) |
|
|
|
|