log.Fatal(err)
}
+ var fdLock *os.File
if v := os.Getenv(EnvOODTgtsFd); v != "" {
fd := mustParseFd(v, EnvOODTgtsFd)
- fdLock := mustParseFd(v, EnvOODTgtsLockFd)
+ fdLock = mustParseFd(v, EnvOODTgtsLockFd)
+ defer fdLock.Close()
flock := unix.Flock_t{
Type: unix.F_WRLCK,
Whence: io.SeekStart,
}
}
sort.Strings(tgts)
- var srcs []string
- srcs, err = sourcesWalker(tgts)
- err = ErrLine(err)
- sort.Strings(srcs)
- for _, src := range srcs {
+ seen := make(map[string]struct{})
+ seenDeps := make(map[string]struct{})
+ srcs := make(map[string]struct{})
+ err = ErrLine(sourcesWalker(tgts, seen, seenDeps, srcs))
+ seen = nil
+ seenDeps = nil
+ if err != nil {
+ break
+ }
+ seenDeps = nil
+ res := make([]string, 0, len(srcs))
+ for p := range srcs {
+ res = append(res, p)
+ }
+ srcs = nil
+ sort.Strings(res)
+ for _, src := range res {
fmt.Println(src)
}
case CmdNameRedoDepFix: