From bd44e6019787a9607d3d2e9ca8900df78b8d4e10 Mon Sep 17 00:00:00 2001 From: Björn Stenberg Date: Wed, 17 Jul 2002 11:25:04 +0000 Subject: New sort: Dirs first, then files. And case insensitive. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1376 a1c6a512-1295-4272-9138-f99709370657 --- apps/tree.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/apps/tree.c b/apps/tree.c index 5f54784515..d15547d048 100644 --- a/apps/tree.c +++ b/apps/tree.c @@ -108,10 +108,15 @@ extern unsigned char bitmap_icons_6x8[LastIcon][6]; #define TREE_ATTR_M3U 0x80 /* unused by FAT attributes */ #define TREE_ATTR_MP3 0x40 /* unused by FAT attributes */ -static int compare(const void* e1, const void* e2) +static int compare(const void* p1, const void* p2) { - return strncmp((*(struct entry**)e1)->name, (*(struct entry**)e2)->name, - TREE_MAX_FILENAMELEN); + struct entry* e1 = *(struct entry**)p1; + struct entry* e2 = *(struct entry**)p2; + + if (( e1->attr & ATTR_DIRECTORY ) == ( e2->attr & ATTR_DIRECTORY )) + return strncasecmp(e1->name, e2->name, TREE_MAX_FILENAMELEN); + else + return ( e2->attr & ATTR_DIRECTORY ) - ( e1->attr & ATTR_DIRECTORY ); } static int showdir(char *path, int start) -- cgit v1.2.3