X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=targets.go;h=5d2342e884ea68f6ac537b85b4dda1b29fcf73c4;hb=b69d2ab11a495413ecc16a9bfea0d105b030c606;hp=bc8edfd6d0b00669f1d48a8491034ddef151bda0;hpb=cb183690cc59ad772dab941adc3e9b8d5b90fbc0;p=goredo.git diff --git a/targets.go b/targets.go index bc8edfd..5d2342e 100644 --- a/targets.go +++ b/targets.go @@ -1,6 +1,6 @@ /* goredo -- djb's redo implementation on pure Go -Copyright (C) 2020-2021 Sergey Matveev +Copyright (C) 2020-2023 Sergey Matveev This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -54,6 +54,7 @@ func targetsCollect(root string, tgts map[string]struct{}) error { return err } redoFis, err := redoDir.Readdir(0) + redoDir.Close() if err != nil { return err } @@ -64,7 +65,6 @@ func targetsCollect(root string, tgts map[string]struct{}) error { tgts[name[:len(name)-len(DepSuffix)]] = struct{}{} } } - redoDir.Close() } else { if err = targetsCollect(pth, tgts); err != nil { return err @@ -72,11 +72,11 @@ func targetsCollect(root string, tgts map[string]struct{}) error { } } } - return dir.Close() + return nil } func targetsWalker(tgts []string) ([]string, error) { - tgtsMap := make(map[string]struct{}, 0) + tgtsMap := map[string]struct{}{} for _, tgt := range tgts { if err := targetsCollect(tgt, tgtsMap); err != nil { return nil, err @@ -88,3 +88,14 @@ func targetsWalker(tgts []string) ([]string, error) { } return tgts, nil } + +func collectWholeDeps( + tgts map[string]struct{}, + deps map[string]map[string]struct{}, + seen map[string]struct{}, +) { + for tgt := range tgts { + seen[tgt] = struct{}{} + collectWholeDeps(deps[tgt], deps, seen) + } +}