package main
import (
- "bufio"
"crypto/rand"
"flag"
"fmt"
"path"
"path/filepath"
"strconv"
+ "strings"
"go.cypherpunks.ru/recfile"
- "golang.org/x/sys/unix"
)
var (
func main() {
version := flag.Bool("version", false, "print version")
warranty := flag.Bool("warranty", false, "print warranty information")
- symlinks := flag.Bool("symlinks", false, "create necessary symlinks in current direcotyr")
+ symlinks := flag.Bool("symlinks", false, "create necessary symlinks in current directory")
flag.Usage = usage
flag.Parse()
log.Println(err)
}
}
- fmt.Println("not creating optional:", os.Args[0], "<- tai64nlocal")
os.Exit(rc)
}
log.SetFlags(0)
var err error
- Cwd, err = unix.Getwd()
+ Cwd, err = os.Getwd()
if err != nil {
panic(err)
}
NoSync = os.Getenv(EnvNoSync) == "1"
TopDir = os.Getenv(EnvTopDir)
- if TopDir != "" {
+ if TopDir == "" {
+ TopDir = "/"
+ } else {
TopDir, err = filepath.Abs(TopDir)
if err != nil {
panic(err)
MyPid = os.Getpid()
}
var traced bool
+ if *flagTraceAll {
+ mustSetenv(EnvTrace, "1")
+ }
if *flagTrace {
traced = true
} else {
fdDep = mustParseFd(v, EnvDepFd)
}
BuildUUID = os.Getenv(EnvBuildUUID)
+ tgts := flag.Args()
if BuildUUID == "" {
raw := new([16]byte)
if _, err = io.ReadFull(rand.Reader, raw[:]); err != nil {
"%x-%x-%x-%x-%x",
raw[0:4], raw[4:6], raw[6:8], raw[8:10], raw[10:],
)
+ if len(tgts) == 0 {
+ tgts = []string{"all"}
+ }
}
statusInit()
- tgts := flag.Args()
- if len(tgts) == 0 {
- tgts = []string{"all"}
+ for i, tgt := range tgts {
+ if path.IsAbs(tgt) {
+ tgts[i] = cwdMustRel(tgt)
+ }
}
+
ok := true
err = nil
cmdName := path.Base(os.Args[0])
break
}
os.Remove(fdTmp.Name())
- var doFile string
cwd, tgt := cwdAndTgt(tgts[0])
- doFile, _, err = findDo(fdTmp, cwd, tgt)
+ cwdRel := cwdMustRel(cwd)
+ doFile, upLevels, err := findDo(fdTmp, cwd, tgt)
if err != nil {
break
}
}
fmt.Println(cwdMustRel(cwd, m["Target"]))
}
- ok = doFile != ""
- case "tai64nlocal":
- bw := bufio.NewWriter(os.Stdout)
- err = tai64nLocal(bw, os.Stdin)
- bw.Flush()
+ if doFile == "" {
+ ok = false
+ } else {
+ fmt.Println(path.Join(cwdRel, strings.Repeat("..", upLevels), doFile))
+ }
default:
log.Fatalln("unknown command", cmdName)
}