/*
-goredo -- redo implementation on pure Go
+goredo -- djb's redo implementation on pure Go
Copyright (C) 2020-2021 Sergey Matveev <stargrave@stargrave.org>
This program is free software: you can redistribute it and/or modify
"path"
"path/filepath"
"strconv"
- "strings"
"go.cypherpunks.ru/recfile"
)
var err error
Cwd, err = os.Getwd()
if err != nil {
- panic(err)
+ log.Fatalln(err)
}
NoColor = os.Getenv(EnvNoColor) != ""
NoSync = os.Getenv(EnvNoSync) == "1"
+ InodeTrust = os.Getenv(EnvInodeNoTrust) == ""
TopDir = os.Getenv(EnvTopDir)
if TopDir == "" {
if BuildUUID == "" {
raw := new([16]byte)
if _, err = io.ReadFull(rand.Reader, raw[:]); err != nil {
- panic(err)
+ log.Fatalln(err)
}
raw[6] = (raw[6] & 0x0F) | uint8(4<<4) // version 4
BuildUUID = fmt.Sprintf(
}
os.Remove(fdTmp.Name())
cwd, tgt := cwdAndTgt(tgts[0])
- cwdRel := cwdMustRel(cwd)
doFile, upLevels, err := findDo(fdTmp, cwd, tgt)
if err != nil {
break
if doFile == "" {
ok = false
} else {
- fmt.Println(path.Join(cwdRel, strings.Repeat("..", upLevels), doFile))
+ p := make([]string, 0, upLevels+2)
+ p = append(p, cwd)
+ for i := 0; i < upLevels; i++ {
+ p = append(p, "..")
+ }
+ p = append(p, doFile)
+ rel, err := filepath.Rel(Cwd, path.Join(p...))
+ if err != nil {
+ panic(err)
+ }
+ fmt.Println(rel)
}
default:
log.Fatalln("unknown command", cmdName)