X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=do.go;h=4fbb6c9050d6289704f76f871cf0493ff1df63b6;hb=19b13ea1334d377dd9c6a36ea70c9141b8fd447d;hp=360cc29b0e99fa51e306588b3e8024133a87f10d;hpb=4833ec5f8dec865fbf600a0aeab2bc64fc620f96;p=goredo.git diff --git a/do.go b/do.go index 360cc29..4fbb6c9 100644 --- a/do.go +++ b/do.go @@ -1,6 +1,6 @@ /* -goredo -- redo implementation on pure Go -Copyright (C) 2020 Sergey Matveev +goredo -- djb's redo implementation on pure Go +Copyright (C) 2020-2022 Sergey Matveev This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -34,7 +34,7 @@ const ( var TopDir string func existsDo(fdDep *os.File, cwd, pth string) (bool, error) { - if _, err := os.Stat(path.Join(cwd, pth)); err == nil { + if FileExists(path.Join(cwd, pth)) { return true, nil } return false, ifcreate(fdDep, pth) @@ -60,7 +60,7 @@ func findDo(fdDep *os.File, cwd, tgt string) (string, int, error) { doFile = strings.Join(append( []string{"default"}, append(exts, "do")..., ), ".") - if len(levels) > 0 || doFile != doFileOrig { + if len(levels) > 0 || (doFile != doFileOrig && doFile != tgt) { exists, err = existsDo(fdDep, cwd, path.Join(updir, doFile)) if err != nil { return "", 0, err @@ -72,7 +72,7 @@ func findDo(fdDep *os.File, cwd, tgt string) (string, int, error) { exts = exts[1:] } doFile = "default.do" - if len(levels) > 0 || doFile != doFileOrig { + if len(levels) > 0 || (doFile != doFileOrig && doFile != tgt) { exists, err = existsDo(fdDep, cwd, path.Join(updir, doFile)) if err != nil { return "", 0, err @@ -82,14 +82,14 @@ func findDo(fdDep *os.File, cwd, tgt string) (string, int, error) { } } levels = append(levels, "..") - dirAbs, err := filepath.Abs(updir) + dirAbs, err := filepath.Abs(path.Join(cwd, updir)) if err != nil { panic(err) } if dirAbs == TopDir { break } - if _, err = os.Stat(path.Join(dirAbs, RedoDir, TopFile)); err == nil { + if FileExists(path.Join(dirAbs, RedoDir, TopFile)) { break } if dirAbs == dirAbsPrev {