int i_mode, playlist_item_t *p_parent,
playlist_item_t *p_parent_category )
{
- struct dirent **pp_dir_content;
- int i_dir_content, i;
+ struct dirent **pp_dir_content = 0;
+ int i_dir_content, i, i_return = VLC_SUCCESS;
playlist_item_t *p_node;
- /* Build array with ignores */
char **ppsz_extensions = 0;
int i_extensions = 0;
- char *psz_ignore = var_CreateGetString( p_playlist, "ignore-filetypes" );
+ char *psz_ignore;
+
+ /* Get the first directory entry */
+ i_dir_content = scandir( psz_name, &pp_dir_content, Filter, alphasort );
+ if( i_dir_content == -1 )
+ {
+ msg_Warn( p_playlist, "failed to read directory" );
+ return VLC_EGENERIC;
+ }
+ else if( i_dir_content <= 0 )
+ {
+ /* directory is empty */
+ if( pp_dir_content ) free( pp_dir_content );
+ return VLC_SUCCESS;
+ }
+
+ /* Build array with ignores */
+ psz_ignore = var_CreateGetString( p_playlist, "ignore-filetypes" );
if( psz_ignore && *psz_ignore )
{
char *psz_parser = psz_ignore;
}
}
- /* get the first directory entry */
- i_dir_content = scandir( psz_name, &pp_dir_content, Filter, alphasort );
- if( i_dir_content == -1 )
- {
- msg_Warn( p_playlist, "failed to read directory" );
- return VLC_EGENERIC;
- }
- else if( i_dir_content <= 0 )
- {
- /* directory is empty */
- return VLC_SUCCESS;
- }
-
/* While we still have entries in the directory */
for( i = 0; i < i_dir_content; i++ )
{
p_parent_category );
}
+ /* an strdup() just because of Mac OS X */
+ free( psz_newname );
+
/* If we had the parent in category, the it is now node.
* Else, we still don't have */
if( ReadDir( p_playlist, psz_uri , MODE_EXPAND,
p_node, p_parent_category ? p_node : NULL )
!= VLC_SUCCESS )
{
- return VLC_EGENERIC;
+ i_return = VLC_EGENERIC;
+ break;
}
-
- /* an strdup() just because of Mac OS X */
- free( psz_newname );
}
}
else
}
for( i = 0; i < i_extensions; i++ )
- {
- if( ppsz_extensions[i] )
- free( ppsz_extensions[i] );
- }
+ if( ppsz_extensions[i] ) free( ppsz_extensions[i] );
if( ppsz_extensions ) free( ppsz_extensions );
+
if( psz_ignore ) free( psz_ignore );
for( i = 0; i < i_dir_content; i++ )
if( pp_dir_content[i] ) free( pp_dir_content[i] );
if( pp_dir_content ) free( pp_dir_content );
- return VLC_SUCCESS;
+
+ return i_return;
}