routine dir_lookup (
    start_dir: file_t;
    file_name: string_t;
    flags: int;
    mode: mode_t;
    out do_retry: retry_type;
    out retry_name: string_t;
    out result: mach_port_send_t);

Translate a file name, following all symlinks. Upon return, if do_retry is FS_RETRY_MAGICAL then retry_name specifies what to do, the list of possibilities is documented in <hurd/hurd_types.h>; if FS_RETRY_REAUTH, then result should be reauthenticated before being used. If retry_name is the empty string and the retry type is FS_RETRY_NORMAL, then no further dir lookup calls are required; result is the port to use. Otherwise the dir lookup call should be repeated, sent to result (or the reauthenticated port) with retry_name passed for file_name. This call is required to be supported by all files (even non-directories) if the filename is null, and should function in that case as a re-open of the file.