if TopDir == "" {
TopDir = "/"
} else {
- TopDir, err = filepath.Abs(TopDir)
- if err != nil {
- panic(err)
- }
+ TopDir = mustAbs(TopDir)
}
DirPrefix = os.Getenv(EnvDirPrefix)
DepCwd = os.Getenv(EnvDepCwd)
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,
p = append(p, "..")
}
p = append(p, doFile)
- rel, err := filepath.Rel(Cwd, path.Join(p...))
- if err != nil {
- panic(err)
- }
+ rel := mustRel(Cwd, path.Join(p...))
fmt.Println(rel)
}
case CmdNameRedoTargets:
}
}
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: