* To my surprise, XFS doesn't support dt_type in readdir results, so we need to stat each entry of type DT_UNKNOWN.

This commit is contained in:
Justin Maggard 2009-06-04 20:43:36 +00:00
parent a6d01a85e3
commit 41a6830952

View File

@ -710,6 +710,7 @@ filter_audio(const struct dirent *d)
return ( (*d->d_name != '.') && return ( (*d->d_name != '.') &&
((d->d_type == DT_DIR) || ((d->d_type == DT_DIR) ||
(d->d_type == DT_LNK) || (d->d_type == DT_LNK) ||
(d->d_type == DT_UNKNOWN) ||
((d->d_type == DT_REG) && ((d->d_type == DT_REG) &&
is_audio(d->d_name) ) is_audio(d->d_name) )
) ); ) );
@ -721,6 +722,7 @@ filter_video(const struct dirent *d)
return ( (*d->d_name != '.') && return ( (*d->d_name != '.') &&
((d->d_type == DT_DIR) || ((d->d_type == DT_DIR) ||
(d->d_type == DT_LNK) || (d->d_type == DT_LNK) ||
(d->d_type == DT_UNKNOWN) ||
((d->d_type == DT_REG) && ((d->d_type == DT_REG) &&
is_video(d->d_name) ) is_video(d->d_name) )
) ); ) );
@ -732,6 +734,7 @@ filter_images(const struct dirent *d)
return ( (*d->d_name != '.') && return ( (*d->d_name != '.') &&
((d->d_type == DT_DIR) || ((d->d_type == DT_DIR) ||
(d->d_type == DT_LNK) || (d->d_type == DT_LNK) ||
(d->d_type == DT_UNKNOWN) ||
((d->d_type == DT_REG) && ((d->d_type == DT_REG) &&
is_image(d->d_name) ) is_image(d->d_name) )
) ); ) );
@ -743,6 +746,7 @@ filter_media(const struct dirent *d)
return ( (*d->d_name != '.') && return ( (*d->d_name != '.') &&
((d->d_type == DT_DIR) || ((d->d_type == DT_DIR) ||
(d->d_type == DT_LNK) || (d->d_type == DT_LNK) ||
(d->d_type == DT_UNKNOWN) ||
((d->d_type == DT_REG) && ((d->d_type == DT_REG) &&
(is_image(d->d_name) || (is_image(d->d_name) ||
is_audio(d->d_name) || is_audio(d->d_name) ||
@ -755,7 +759,7 @@ filter_media(const struct dirent *d)
#define TYPE_DIR 1 #define TYPE_DIR 1
#define TYPE_FILE 2 #define TYPE_FILE 2
unsigned char unsigned char
resolve_link(const char * path, enum media_types dir_type) resolve_unknown_type(const char * path, enum media_types dir_type)
{ {
struct stat entry; struct stat entry;
unsigned char type = TYPE_OTHER; unsigned char type = TYPE_OTHER;
@ -855,7 +859,7 @@ ScanDirectory(const char * dir, const char * parent, enum media_types dir_type)
} }
else else
{ {
type = resolve_link(full_path, dir_type); type = resolve_unknown_type(full_path, dir_type);
} }
if( type == TYPE_DIR ) if( type == TYPE_DIR )
{ {