
  -spec path_open(Path, Filename, Modes) ->
                     {ok, IoDevice, FullName} | {error, Reason}
                     when
                         Path :: [Dir :: name_all()],
                         Filename :: name_all(),
                         Modes :: [mode() | directory],
                         IoDevice :: io_device(),
                         FullName :: filename_all(),
                         Reason :: posix() | badarg | system_limit.

  Searches the path Path (a list of directory names) until the
  file Filename is found. If Filename is an absolute filename, 
  Path is ignored. Then opens the file in the mode determined by 
  Modes.

  Returns one of the following:

  {ok, IoDevice, FullName}:
    The file is opened in the requested mode. IoDevice is a
    reference to the file and FullName is the full name of the
    file.

  {error, enoent}:
    The file cannot be found in any of the directories in Path.

  {error, atom()}:
    The file cannot be opened.
