]> Cypherpunks.ru repositories - goredo.git/blobdiff - do.go
Raise copyright years
[goredo.git] / do.go
diff --git a/do.go b/do.go
index 360cc29b0e99fa51e306588b3e8024133a87f10d..8c2b62c91ffd09ecf7673a612afb937a299440bd 100644 (file)
--- a/do.go
+++ b/do.go
@@ -1,6 +1,6 @@
 /*
-goredo -- redo implementation on pure Go
-Copyright (C) 2020 Sergey Matveev <stargrave@stargrave.org>
+goredo -- djb's redo implementation on pure Go
+Copyright (C) 2020-2023 Sergey Matveev <stargrave@stargrave.org>
 
 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 {