]> Cypherpunks.ru repositories - goredo.git/blobdiff - main.go
More apenwarr/redo redo-whichdo behaviour resembling
[goredo.git] / main.go
diff --git a/main.go b/main.go
index ed82856be37f842e6c66f9a0607d191388cb40ac..873582afd0a942f66c02a70082f372ee7dd1cde6 100644 (file)
--- a/main.go
+++ b/main.go
@@ -28,7 +28,6 @@ import (
        "path"
        "path/filepath"
        "strconv"
-       "strings"
 
        "go.cypherpunks.ru/recfile"
 )
@@ -270,7 +269,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 +291,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)