Commit d601108c authored by Derk-Jan Hartman's avatar Derk-Jan Hartman

* prefer S_ISDIR over DT_DIR since it is more reliable.

  Should fix collapse/expand/ignore of dirs on OS X.
* better short title for this config option
parent 17a89393
...@@ -83,7 +83,7 @@ int ReadDir( input_thread_t *p_input, char *psz_name , int i_mode ); ...@@ -83,7 +83,7 @@ int ReadDir( input_thread_t *p_input, char *psz_name , int i_mode );
/***************************************************************************** /*****************************************************************************
* Module descriptor * Module descriptor
*****************************************************************************/ *****************************************************************************/
#define RECURSIVE_TEXT N_("Includes subdirectories?") #define RECURSIVE_TEXT N_("Subdirectory behaviour")
#define RECURSIVE_LONGTEXT N_( \ #define RECURSIVE_LONGTEXT N_( \
"Select whether subdirectories must be expanded.\n" \ "Select whether subdirectories must be expanded.\n" \
"none: subdirectories do not appear in the playlist.\n" \ "none: subdirectories do not appear in the playlist.\n" \
...@@ -167,13 +167,7 @@ static int Open( vlc_object_t *p_this ) ...@@ -167,13 +167,7 @@ static int Open( vlc_object_t *p_this )
p_access_data->i_pos = 0; p_access_data->i_pos = 0;
psz_mode = config_GetPsz( p_input , "recursive" ); psz_mode = config_GetPsz( p_input , "recursive" );
if( !psz_mode ) if( !psz_mode || !strncmp( psz_mode, "none" , 4 ) )
{
msg_Err( p_input, "Unable to get configuration" );
return VLC_EGENERIC;
}
if( !strncmp( psz_mode, "none" , 4 ) )
{ {
i_mode = MODE_NONE; i_mode = MODE_NONE;
} }
...@@ -185,6 +179,7 @@ static int Open( vlc_object_t *p_this ) ...@@ -185,6 +179,7 @@ static int Open( vlc_object_t *p_this )
{ {
i_mode = MODE_EXPAND; i_mode = MODE_EXPAND;
} }
if( ReadDir( p_input, psz_name , i_mode ) != VLC_SUCCESS ) if( ReadDir( p_input, psz_name , i_mode ) != VLC_SUCCESS )
{ {
free( p_access_data ); free( p_access_data );
...@@ -293,25 +288,25 @@ int ReadDir( input_thread_t *p_input, char *psz_name , int i_mode ) ...@@ -293,25 +288,25 @@ int ReadDir( input_thread_t *p_input, char *psz_name , int i_mode )
strcmp( p_dir_content->d_name, ".." ) && strcmp( p_dir_content->d_name, ".." ) &&
p_access_data->i_pos + i_size_entry < MAX_DIR_SIZE ) p_access_data->i_pos + i_size_entry < MAX_DIR_SIZE )
{ {
#if defined( DT_DIR ) #if defined( S_ISDIR )
if( p_dir_content->d_type == DT_DIR )
#elif defined( S_ISDIR )
struct stat stat_data; struct stat stat_data;
stat( psz_entry, &stat_data ); stat( psz_entry, &stat_data );
if( S_ISDIR(stat_data.st_mode) ) if( S_ISDIR(stat_data.st_mode) )
#elif defined( DT_DIR )
if( p_dir_content->d_type == DT_DIR )
#else #else
if( 0 ) if( 0 )
#endif #endif
{ {
if( i_mode == MODE_NONE ) if( i_mode == MODE_NONE )
{ {
msg_Dbg( p_input, "Skipping subdirectory %s",psz_entry ); msg_Dbg( p_input, "Skipping subdirectory %s", psz_entry );
p_dir_content = readdir( p_current_dir ); p_dir_content = readdir( p_current_dir );
continue; continue;
} }
else if(i_mode == MODE_EXPAND ) else if(i_mode == MODE_EXPAND )
{ {
msg_Dbg(p_input, "Reading subdirectory %s",psz_entry ); msg_Dbg(p_input, "Reading subdirectory %s", psz_entry );
if( ReadDir( p_input, psz_entry , MODE_EXPAND ) if( ReadDir( p_input, psz_entry , MODE_EXPAND )
!= VLC_SUCCESS ) != VLC_SUCCESS )
{ {
...@@ -320,6 +315,7 @@ int ReadDir( input_thread_t *p_input, char *psz_name , int i_mode ) ...@@ -320,6 +315,7 @@ int ReadDir( input_thread_t *p_input, char *psz_name , int i_mode )
} }
else else
{ {
msg_Dbg(p_input, "Adding subdirectory %s", psz_entry );
sprintf( &p_access_data->p_dir_buffer[p_access_data->i_pos], sprintf( &p_access_data->p_dir_buffer[p_access_data->i_pos],
"%s", psz_entry ); "%s", psz_entry );
p_access_data->i_pos += i_size_entry -1 ; p_access_data->i_pos += i_size_entry -1 ;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment