X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=main.go;h=20072155f67c423ac294d82014af923f90f5280d;hb=5ca39bfc0b769607db3f84213fc7f16f0c4019fa;hp=ed82856be37f842e6c66f9a0607d191388cb40ac;hpb=07912df2f1935c7dd4e08f8e675ed989dbc97b31;p=goredo.git diff --git a/main.go b/main.go index ed82856..2007215 100644 --- a/main.go +++ b/main.go @@ -1,5 +1,5 @@ /* -goredo -- redo implementation on pure Go +goredo -- djb's redo implementation on pure Go Copyright (C) 2020-2021 Sergey Matveev This program is free software: you can redistribute it and/or modify @@ -28,7 +28,6 @@ import ( "path" "path/filepath" "strconv" - "strings" "go.cypherpunks.ru/recfile" ) @@ -97,11 +96,12 @@ func main() { 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 == "" { @@ -178,7 +178,7 @@ func main() { 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( @@ -270,7 +270,6 @@ CmdSwitch: } os.Remove(fdTmp.Name()) cwd, tgt := cwdAndTgt(tgts[0]) - cwdRel := cwdMustRel(cwd) doFile, upLevels, err := findDo(fdTmp, cwd, tgt) if err != nil { break @@ -293,7 +292,17 @@ CmdSwitch: 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)