2.6.2.3 Decomposition

ZixStringView zix_path_extension(const char *path)

Return the extension of the filename component of path.

The “extension” is everything past the last “.” in the filename, if “.” is not the first character.

ZixStringView zix_path_filename(const char *path)

Return the filename component of path without any directories.

The filename is the name after the last directory separator. If the path has no filename, this returns null.

ZixStringView zix_path_parent_path(const char *path)

Return the path to the directory that contains path.

The parent of a root path is itself, but note that the path returned by this function may be partially normalized. For example, “/” is the parent of “/”, “//”, “/.”, and “/..”.

If path has a trailing separator, it is treated like an empty filename in a directory. For example, the parent of “/a/” is “/a”.

If path is relative, then this returns either a relative path to the parent if possible, or null. For example, the parent of “a/b” is “a”.

Returns:

The newly allocated path to the parent of path, or null if it has no parent or allocation failed.

ZixStringView zix_path_relative_path(const char *path)

Return the relative path component of path without the root directory.

If the path has no relative path (because it is empty or a root path), this returns null.

ZixStringView zix_path_root_directory(const char *path)

Return the root directory of path like “/” or “", or null.

ZixStringView zix_path_root_name(const char *path)

Return the root name of path like “C:”, or null.

ZixStringView zix_path_root_path(const char *path)

Return the root path of path, or null.

The universal root path (in normal form) is “/”. Root paths are their own roots, but note that the path returned by this function may be partially normalized. For example, “/” is the root of “/”, “//”, “/.”, and “/..”.

On Windows, the root may additionally be an absolute drive root like “C:", a relative drive root like “C:”, or a network root like “//Host/”.

Returns:

The newly allocated root path of path, or null if it has no root or allocation failed.

ZixStringView zix_path_stem(const char *path)

Return the stem of the filename component of path.

The “stem” is the filename without the extension, that is, everything up to the last “.” if “.” is not the first character.