View source code Display the source code in std/path.d from which this page was generated on github. Improve this page Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using local clone. Page wiki View or edit the community-maintained wiki page associated with this page.

Function std.path.absolutePath

Tranforms path into an absolute path.

The following algorithm is used:

  1. If path is empty, return null.
  2. If path is already absolute, return it.
  3. Otherwise, append path to base and return the result. If base is not specified, the current working directory is used.
The function allocates memory if and only if it gets to the third stage of this algorithm.

Prototype

string absolutePath(
  string path,
  string base = getcwd()
) pure @safe;

Parameters

NameDescription
path the relative path to transform

Returns

string of transformed path

Throws

Exception if the specified base directory is not absolute.

See Also

asAbsolutePath which does not allocate

Example

version (Posix)
{
    assert (absolutePath("some/file", "/foo/bar")  == "/foo/bar/some/file");
    assert (absolutePath("../file", "/foo/bar")    == "/foo/bar/../file");
    assert (absolutePath("/some/file", "/foo/bar") == "/some/file");
}

version (Windows)
{
    assert (absolutePath(some\file, c:\foo\bar)    == c:\foo\bar\some\file);
    assert (absolutePath(..\file, c:\foo\bar)      == c:\foo\bar\..\file);
    assert (absolutePath(c:\some\file, c:\foo\bar) == c:\some\file);
    assert (absolutePath(\, c:\)                   == c:\);
    assert (absolutePath(\some\file, c:\foo\bar)   == c:\some\file);
}

Authors

Lars Tandle Kyllingstad, Walter Bright, Grzegorz Adam Hankiewicz, Thomas Kühne, Andrei Alexandrescu

License

Boost License 1.0

Comments