-
Notifications
You must be signed in to change notification settings - Fork 77
Description
In #124, @samwgoldman said:
For Flow, we have the need to share paths between platforms. These are relative paths, using the
/
path separator. We only support Windows systems that transparently support the/
path separator, so we can just pass these paths into Windows APIs without transforming them.
However, Eio also needs to support absolute paths on Windows and it seems this doesn't work (see https://discuss.ocaml.org/t/how-to-specify-a-full-windows-path-in-eio/14880). It would be good to investigate why.
@dra27 commented:
I must confess that introducing yet another notation for a Windows path doesn’t look at all sensible to me!
/C:/path
is simply invalid, and if that’s ever printed (error messages, exceptions, etc.) it kinda just looks like Eio doesn’t know what it’s doing.
As mentioned in the original issue:
The Fpath library encodes lots of knowledge about Windows paths. It probably can't be used directly because its paths behave differently depending on the host platform (preventing e.g. a program running on Linux from creating paths that are to be used on Windows). The path rules should probably be per-filesystem instead.
I think we should give up on a uniform representation of paths and instead move some operations (e.g. split
) to Fs.Pi.DIR
, so that each file-system can provide its own implementation.