summaryrefslogtreecommitdiffstats
path: root/stdlib
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib')
-rw-r--r--stdlib/copy-file.tl14
1 files changed, 14 insertions, 0 deletions
diff --git a/stdlib/copy-file.tl b/stdlib/copy-file.tl
index fcb7f40c..c8cbe59f 100644
--- a/stdlib/copy-file.tl
+++ b/stdlib/copy-file.tl
@@ -246,3 +246,17 @@
(down [tcomp ncommon..:]))
(cat-str (append (repeat '("..") nup) down)
[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)))))