Skip to content
Snippets Groups Projects
  • George Joseph's avatar
    3017f09f
    file.c/__ast_file_read_dirs: Fix issues on filesystems without d_type · 3017f09f
    George Joseph authored
    One of the code paths in __ast_file_read_dirs will only get executed if
    the OS doesn't support dirent->d_type OR if the filesystem the
    particular file is on doesn't support it.  So, while standard Linux
    systems support the field, some filesystems like XFS do not.  In this
    case, we need to call stat() to determine whether the directory entry
    is a file or directory so we append the filename to the supplied
    directory path and call stat.  We forgot to truncate path back to just
    the directory afterwards though so we were passing a complete file name
    to the callback in the dir_name parameter instead of just the directory
    name.
    
    The logic has been re-written to only create a full_path if we need to
    call stat() or if we need to descend into another directory.
    
    Change-Id: I54e4228bd8355fad65200c6df3ec4c9c8a98dfba
    3017f09f
    History
    file.c/__ast_file_read_dirs: Fix issues on filesystems without d_type
    George Joseph authored
    One of the code paths in __ast_file_read_dirs will only get executed if
    the OS doesn't support dirent->d_type OR if the filesystem the
    particular file is on doesn't support it.  So, while standard Linux
    systems support the field, some filesystems like XFS do not.  In this
    case, we need to call stat() to determine whether the directory entry
    is a file or directory so we append the filename to the supplied
    directory path and call stat.  We forgot to truncate path back to just
    the directory afterwards though so we were passing a complete file name
    to the callback in the dir_name parameter instead of just the directory
    name.
    
    The logic has been re-written to only create a full_path if we need to
    call stat() or if we need to descend into another directory.
    
    Change-Id: I54e4228bd8355fad65200c6df3ec4c9c8a98dfba