] map ;
: (find-mount-point) ( path mtab-paths -- mtab-entry )
- [ follow-links ] dip 2dup at* [
+ 2dup at* [
2nip
] [
drop [ parent-directory ] dip (find-mount-point)
] if ;
: find-mount-point ( path -- mtab-entry )
+ canonicalize-path
parse-mtab [ [ mount-point>> ] keep ] H{ } map>assoc (find-mount-point) ;
ERROR: file-system-not-found ;
! Copyright (C) 2008 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: io.backend io.files.links system unix ;
+USING: io.backend io.files.links system unix io.pathnames kernel
+io.files sequences ;
IN: io.files.links.unix
M: unix make-link ( path1 path2 -- )
M: unix read-link ( path -- path' )
normalize-path read-symbolic-link ;
+
+M: unix canonicalize-path ( path -- path' )
+ path-components "/"
+ [ append-path dup exists? [ follow-links ] when ] reduce ;