Module Filepath

module Filepath: sig .. end

Functions manipulating filepaths. In these functions, references to the current working directory refer to the result given by function Sys.getcwd.

NOTE: Prefer using the Normalized module whenever possible.


type existence = 
| Must_exist (*

File must exist.

*)
| Must_not_exist (*

File must not exist.

*)
| Indifferent (*

No requirement.

*)

Existence requirement on a file.

exception No_file

Raised whenever no file exists and existence is Must_exist.

exception File_exists

Raised whenever some file exists and existence is Must_not_exist.

val normalize : ?existence:existence -> ?base_name:string -> string -> string

Returns an absolute path leading to the given file. The result is similar to realpath --no-symlinks. Some special behaviors include:

val relativize : ?base_name:string -> string -> string

relativize base_name file_name returns a relative path name of file_name w.r.t. base_name, if base_name is a prefix of file; otherwise, returns file_name unchanged. The default base name is the current working directory name.

val is_relative : ?base_name:string -> string -> bool

returns true if the file is relative to base (that is, it is prefixed by base_name), or to the current working directory if no base is specified.

val pretty : string -> string
Deprecated.since 18.0-Argon

DEPRECATED: use Normalized.to_pretty_string instead. Pretty-print a path according to these rules:

val add_symbolic_dir : string -> string -> unit

add_symbolic_dir name dir indicates that the (absolute) path dir must be replaced by name when pretty-printing paths. This alias ensures that system-dependent paths such as FRAMAC_SHARE are printed identically in different machines.

val all_symbolic_dirs : unit -> (string * string) list

Returns the list of symbolic dirs added via add_symbolic_dir, plus preexisting ones (e.g. FRAMAC_SHARE), as pairs (name, dir).

module Normalized: sig .. end

The Normalized module is simply a wrapper that ensures that paths are always normalized.

type position = {
   pos_path : Normalized.t;
   pos_lnum : int;
   pos_bol : int;
   pos_cnum : int;
}

Describes a position in a source file.

val pp_pos : Stdlib.Format.formatter -> position -> unit

Pretty-prints a position, in the format file:line.