
  -spec read_link(Name) -> {ok, Filename} | {error, Reason}
                     when
                         Name :: name_all(),
                         Filename :: filename(),
                         Reason :: posix() | badarg.

  Returns {ok, Filename} if Name refers to a symbolic link that
  is not a raw filename, or {error, Reason} otherwise. On
  platforms that do not support symbolic links, the return value is 
  {error,enotsup}.

  Typical error reasons:

  einval:
    Name does not refer to a symbolic link or the name of the
    file that it refers to does not conform to the expected
    encoding.

  enoent:
    The file does not exist.

  enotsup:
    Symbolic links are not supported on this platform.
