summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjörn Stenberg <bjorn@haxx.se>2002-07-17 11:25:04 +0000
committerBjörn Stenberg <bjorn@haxx.se>2002-07-17 11:25:04 +0000
commitbd44e6019787a9607d3d2e9ca8900df78b8d4e10 (patch)
treeafa2b993e6453b9f39875b73bdbc6fce9e0cc7db
parent208cb91192c13ac299ec7931dbf9a2c64396dce7 (diff)
downloadrockbox-bd44e6019787a9607d3d2e9ca8900df78b8d4e10.tar.gz
rockbox-bd44e6019787a9607d3d2e9ca8900df78b8d4e10.zip
New sort: Dirs first, then files. And case insensitive.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1376 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/tree.c11
1 files 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];
108#define TREE_ATTR_M3U 0x80 /* unused by FAT attributes */ 108#define TREE_ATTR_M3U 0x80 /* unused by FAT attributes */
109#define TREE_ATTR_MP3 0x40 /* unused by FAT attributes */ 109#define TREE_ATTR_MP3 0x40 /* unused by FAT attributes */
110 110
111static int compare(const void* e1, const void* e2) 111static int compare(const void* p1, const void* p2)
112{ 112{
113 return strncmp((*(struct entry**)e1)->name, (*(struct entry**)e2)->name, 113 struct entry* e1 = *(struct entry**)p1;
114 TREE_MAX_FILENAMELEN); 114 struct entry* e2 = *(struct entry**)p2;
115
116 if (( e1->attr & ATTR_DIRECTORY ) == ( e2->attr & ATTR_DIRECTORY ))
117 return strncasecmp(e1->name, e2->name, TREE_MAX_FILENAMELEN);
118 else
119 return ( e2->attr & ATTR_DIRECTORY ) - ( e1->attr & ATTR_DIRECTORY );
115} 120}
116 121
117static int showdir(char *path, int start) 122static int showdir(char *path, int start)