Compare commits

...

1 Commits

Author SHA1 Message Date
88c51402fd
Starting recursive 2018-03-23 09:27:06 -07:00
2 changed files with 5 additions and 2 deletions

View File

@ -32,7 +32,7 @@ func (r results) Less(i, j int) bool { return r[i].f < r[j].f }
type hashr func() hash.Hash type hashr func() hash.Hash
// hsh figures out which hash algo to use, and distributes the work of hashing // hsh figures out which hash algo to use, and distributes the work of hashing
func hsh(files []string, verbose bool) chan result { func hsh(files []string, verbose, recursive bool) chan result {
var h hashr var h hashr
switch *algo { switch *algo {
case "sha1", "1": case "sha1", "1":
@ -69,6 +69,8 @@ func hsh(files []string, verbose bool) chan result {
jobs := make(chan checksum) jobs := make(chan checksum)
go func() { go func() {
// if recursive then we gotta take every file that's a directory and
// recurse them babies
for _, name := range files { for _, name := range files {
jobs <- checksum{filename: name} jobs <- checksum{filename: name}
} }

View File

@ -9,6 +9,7 @@ import (
var algo = flag.String("a", "sha256", "algorithm to use") var algo = flag.String("a", "sha256", "algorithm to use")
var mode = flag.Bool("c", false, "check") var mode = flag.Bool("c", false, "check")
var recursive = flag.Bool("r", false, "recursive")
var ngo = flag.Int("n", runtime.NumCPU(), "number of goroutines") var ngo = flag.Int("n", runtime.NumCPU(), "number of goroutines")
var verbose = flag.Bool("v", false, "vebose") var verbose = flag.Bool("v", false, "vebose")
@ -27,7 +28,7 @@ func main() {
} }
case false: case false:
ec := 0 ec := 0
for res := range hsh(files, *verbose) { for res := range hsh(files, *verbose, *recursive) {
if res.err != nil { if res.err != nil {
ec++ ec++
fmt.Fprintf(os.Stderr, "%v\n", res.err) fmt.Fprintf(os.Stderr, "%v\n", res.err)