Peter Simons wrote:
Sven Panne writes:

 > Hmmm, I'm not really sure what "equivalence" for file
 > paths should mean in the presence of hard/symbolic links,
 > (NFS-)mounted file systems, etc.

Well, there is a sort-of canonic version for every path; on
most Unix systems the function realpath(3) will find it.

OK, but even paths which realpath normalizes to different things might be the same (hard links!). This might be OK for some uses, but not for all.

My interpretation is that two paths are equivalent iff they
point to the same target. [...]

This would mean that they are equal iff stat(2) returns the same device/inode pair for them. But this leaves other questions open:

 * Do we have something stat-like on every platform?

 * What does this mean for network file systems, e.g. in the presence of
   the same files/directories exported under different NFS mounts? I don't
   have enough books/manual pages at hand to answer this currently...

 * What does this mean if the file path doesn't refer to an existing
   file/directory?

IMHO we can provide something like realpath in the IO monad, but shouldn't
define any equality via it.

Cheers,
   S.
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to