If path is an empty string, then both dirname2() and
basename2() return an emty string.
\ and / are accepted as
path separators, and dirname2() does NOT translate the path
separators.
Recall that a network share looks like "//host/share" and a drive
looks like "d:".
For a path which starts with a network share or drive, the path specification
is the portion of the string immediately afterward, e.g.
"/path/to/file" is the path specification of
"//host/share/path/to/file" and "d:/path/to/file". For a path
which does not start with a network share or drive, the path specification is
the entire string.
The path specification of a network share will always be empty or absolute,
but the path specification of a drive does not have to be, e.g.
"d:file" is a valid path despite the fact that the path specification
does not start with "/".
If the path specification of path is empty or is "/", then
dirname2() will return path and basename2() will return
an empty string.