View source code
Display the source code in std/path.d from which thispage was generated on github.
Report a bug
If you spot a problem with this page, click here to create aBugzilla issue.
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 usinglocal clone.

Function std.path.absolutePath

Transforms path into an absolute path.

string absolutePath(
  scope return const(string) path,
  lazy string base = getcwd()
) pure @safe;

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.

Note that absolutePath will not normalize .. segments. Use buildNormalizedPath(absolutePath(path)) if that is desired.

Parameters

NameDescription
path the relative path to transform
base the base directory of the relative path

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)
{
    writeln(absolutePath("some/file", "/foo/bar")); // "/foo/bar/some/file"
    writeln(absolutePath("../file", "/foo/bar")); // "/foo/bar/../file"
    writeln(absolutePath("/some/file", "/foo/bar")); // "/some/file"
}

version (Windows)
{
    writeln(absolutePath(`some\file`, `c:\foo\bar`)); // `c:\foo\bar\some\file`
    writeln(absolutePath(`..\file`, `c:\foo\bar`)); // `c:\foo\bar\..\file`
    writeln(absolutePath(`c:\some\file`, `c:\foo\bar`)); // `c:\some\file`
    writeln(absolutePath(`\`, `c:\`)); // `c:\`
    writeln(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