Module Tjr_path_resolution.Path_resolution
Path resolution algorithm
val is_finished : 'a Intf.state -> bool
val state_from_symlink : cwd:'a -> symlink_contents:string -> path:string -> 'a Intf.state
val get_next_comp : 'a Intf.state -> [> `Comp_with_slash of string | `Finished_no_slash of string | `Finished_slash of string | `Root_finished | `Root_unfinished ] * 'a Intf.state
val step : monad_ops:'a Tjr_monad.monad_ops -> fs_ops:('b, 'c, 'd, 'a) Intf.fs_ops -> 'c Intf.state -> ([> `Error of [> `File_followed_by_slash_etc of 'c Intf.state * Intf.comp_ * 'b ] | `Finished_no_slash of Intf.comp_ * 'c | `Finished_root | `Finished_slash of Intf.comp_ * 'c | `Missing_slash of Intf.comp_ * 'c Intf.state | `Ok of 'c Intf.state ], 'a) Tjr_monad.m
val resolve_butlast : monad_ops:'a Tjr_monad.monad_ops -> fs_ops:('b, 'c, 'd, 'a) Intf.fs_ops -> cwd:'c -> string -> ([> `Error of [> `File_followed_by_slash_etc of 'c Intf.state * Intf.comp_ * 'b ] | `Finished_no_slash of Intf.comp_ * 'c | `Finished_root | `Finished_slash of Intf.comp_ * 'c | `Missing_slash of Intf.comp_ * 'c Intf.state ], 'a) Tjr_monad.m
Resolve all but the last component; not used by the main `resolve` function
val resolve' : monad_ops:'a Tjr_monad.monad_ops -> fs_ops:('b, 'c, 'd, 'a) Intf.fs_ops -> follow_last_symlink:Intf.follow_last_symlink -> cwd:'c -> string -> ([> `Error of [> `File_followed_by_slash_etc of 'c Intf.state * Intf.comp_ * 'b ] | `Finished_no_slash_dir of 'c * Intf.comp_ * 'c | `Finished_no_slash_file of 'c * Intf.comp_ * 'b | `Finished_no_slash_symlink of 'c * Intf.comp_ * 'd * string | `Finished_root | `Finished_slash_dir of 'c * Intf.comp_ * 'c | `Finished_slash_file of 'c * Intf.comp_ * 'b | `Missing_finished_no_slash of 'c * Intf.comp_ | `Missing_finished_slash of 'c * Intf.comp_ | `Missing_slash of Intf.comp_ * 'c Intf.state ], 'a) Tjr_monad.m
val simplified_result_root : fs_ops:('a, 'b, 'c, 'd) Intf.fs_ops -> ('e, 'b, 'f) Intf.simplified_result
a "special" result for root
val resolve_simplified : monad_ops:'a Tjr_monad.monad_ops -> fs_ops:('b, 'c, 'd, 'a) Intf.fs_ops -> follow_last_symlink:Intf.follow_last_symlink -> cwd:'c -> string -> ((('b, 'c, 'd) Intf.simplified_result, [> `File_followed_by_slash_etc of 'c Intf.state * Intf.comp_ * 'b | `Missing_slash_etc of Intf.comp_ * 'c * string ]) Stdlib.result, 'a) Tjr_monad.m
val resolve : monad_ops:'t Tjr_monad.monad_ops -> fs_ops:('fid, 'did, 'sid, 't) Intf.fs_ops -> follow_last_symlink:Intf.follow_last_symlink -> cwd:'did -> string -> ((('fid, 'did, 'sid) Intf.simplified_result, [> `File_followed_by_slash_etc of 'did Intf.state * Intf.comp_ * 'fid | `Missing_slash_etc of Intf.comp_ * 'did * string ]) Stdlib.result, 't) Tjr_monad.m