Commit 3821b962 authored by Antoine Cellerier's avatar Antoine Cellerier

Revert "Remove version sort option. Now uses version sort by default and...

Revert "Remove version sort option. Now uses version sort by default and there's no way to change it :)"

This reverts commit 285098dc.

I haven't been able to find an acceptable solution to the problem other
than writing our own strverscoll which doesn't seem easy at all.
parent 642959ea
...@@ -79,6 +79,7 @@ struct access_sys_t ...@@ -79,6 +79,7 @@ struct access_sys_t
bool header; bool header;
int i_item_count; int i_item_count;
char *xspf_ext; char *xspf_ext;
int (*compar)(const char **a, const char **b);
}; };
/* Select non-hidden files only */ /* Select non-hidden files only */
...@@ -87,6 +88,15 @@ static int visible (const char *name) ...@@ -87,6 +88,15 @@ static int visible (const char *name)
return name[0] != '.'; return name[0] != '.';
} }
static int collate (const char **a, const char **b)
{
#ifdef HAVE_STRCOLL
return strcoll (*a, *b);
#else
return strcmp (*a, *b);
#endif
}
static int version (const char **a, const char **b) static int version (const char **a, const char **b)
{ {
return strverscmp (*a, *b); return strverscmp (*a, *b);
...@@ -134,10 +144,15 @@ int DirInit (access_t *p_access, DIR *handle) ...@@ -134,10 +144,15 @@ int DirInit (access_t *p_access, DIR *handle)
goto error; goto error;
} }
if (var_InheritBool (p_access, "directory-version-sort"))
p_sys->compar = version;
else
p_sys->compar = collate;
root->parent = NULL; root->parent = NULL;
root->handle = handle; root->handle = handle;
root->uri = uri; root->uri = uri;
root->filec = vlc_loaddir (handle, &root->filev, visible, version); root->filec = vlc_loaddir (handle, &root->filev, visible, p_sys->compar);
if (root->filec < 0) if (root->filec < 0)
root->filev = NULL; root->filev = NULL;
root->i = 0; root->i = 0;
...@@ -345,7 +360,7 @@ block_t *DirBlock (access_t *p_access) ...@@ -345,7 +360,7 @@ block_t *DirBlock (access_t *p_access)
} }
sub->parent = current; sub->parent = current;
sub->handle = handle; sub->handle = handle;
sub->filec = vlc_loaddir (handle, &sub->filev, visible, version); sub->filec = vlc_loaddir (handle, &sub->filev, visible, p_sys->compar);
if (sub->filec < 0) if (sub->filec < 0)
sub->filev = NULL; sub->filev = NULL;
sub->i = 0; sub->i = 0;
......
...@@ -48,6 +48,13 @@ static const char *const psz_recursive_list_text[] = { ...@@ -48,6 +48,13 @@ static const char *const psz_recursive_list_text[] = {
"This is useful if you add directories that contain playlist files " \ "This is useful if you add directories that contain playlist files " \
"for instance. Use a comma-separated list of extensions." ) "for instance. Use a comma-separated list of extensions." )
#define VERSION_SORT_TEXT N_("Use version sort")
#define VERSION_SORT_LONGTEXT N_( \
"When opening a directory, add items in a natural order. " \
"For example, track-1.ogg track-2.ogg track-10.ogg will be sorted " \
"as expected while the default method would sort them as " \
"track-1.ogg track-10.ogg track-2.ogg." )
vlc_module_begin () vlc_module_begin ()
set_description( N_("File input") ) set_description( N_("File input") )
set_shortname( N_("File") ) set_shortname( N_("File") )
...@@ -66,6 +73,8 @@ vlc_module_begin () ...@@ -66,6 +73,8 @@ vlc_module_begin ()
change_string_list( psz_recursive_list, psz_recursive_list_text, 0 ) change_string_list( psz_recursive_list, psz_recursive_list_text, 0 )
add_string( "ignore-filetypes", "m3u,db,nfo,ini,jpg,jpeg,ljpg,gif,png,pgm,pgmyuv,pbm,pam,tga,bmp,pnm,xpm,xcf,pcx,tif,tiff,lbm,sfv,txt,sub,idx,srt,cue,ssa", add_string( "ignore-filetypes", "m3u,db,nfo,ini,jpg,jpeg,ljpg,gif,png,pgm,pgmyuv,pbm,pam,tga,bmp,pnm,xpm,xcf,pcx,tif,tiff,lbm,sfv,txt,sub,idx,srt,cue,ssa",
IGNORE_TEXT, IGNORE_LONGTEXT, false ) IGNORE_TEXT, IGNORE_LONGTEXT, false )
add_bool( "directory-version-sort", false,
VERSION_SORT_TEXT, VERSION_SORT_LONGTEXT, false );
#ifndef HAVE_FDOPENDIR #ifndef HAVE_FDOPENDIR
add_shortcut( "file", "directory", "dir" ) add_shortcut( "file", "directory", "dir" )
#else #else
......
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