summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--stdlib/copy-file.tl22
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))))))