diff options
-rw-r--r-- | stdlib/copy-file.tl | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/stdlib/copy-file.tl b/stdlib/copy-file.tl index 4e509538..5c87b10f 100644 --- a/stdlib/copy-file.tl +++ b/stdlib/copy-file.tl @@ -282,15 +282,13 @@ [path-sep-chars 0]))))))) (defun path-equal (left right) - (cond - ((and (stringp left) (equal left right))) - ((neq (abs-path-p left) (abs-path-p right)) nil) - ((and (macro-time (find #\\ path-sep-chars)) - (if-match `@{fdrv #/[A-Za-z0-9]+:/}@nil` left - (if-match `@{tdrv #/[A-Za-z0-9]+:/}@nil` right - (nequal fdrv tdrv)))) - nil) - (t (let* ((fcomp (path-simplify (spl path-sep-chars left))) - (tcomp (path-simplify (spl path-sep-chars right))) - (ncommon (mismatch fcomp tcomp))) - (null ncommon))))) + (if (and (stringp left) (equal left right)) + t + (let* ((lspl (path-split left)) + (rspl (path-split right)) + (lvol (path-volume lspl)) + (rvol (path-volume rspl))) + (if (nequal lvol rvol) + nil + (equal (path-simplify lspl) + (path-simplify rspl)))))) |