summaryrefslogtreecommitdiff
path: root/apps/tree.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/tree.c')
-rw-r--r--apps/tree.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/apps/tree.c b/apps/tree.c
index 87a039223e..71af90f017 100644
--- a/apps/tree.c
+++ b/apps/tree.c
@@ -302,6 +302,13 @@ static int compare(const void* p1, const void* p2)
302 if (e1->attr & ATTR_DIRECTORY && e2->attr & ATTR_DIRECTORY) 302 if (e1->attr & ATTR_DIRECTORY && e2->attr & ATTR_DIRECTORY)
303 { /* two directories */ 303 { /* two directories */
304 criteria = global_settings.sort_dir; 304 criteria = global_settings.sort_dir;
305 if (e1->attr & ATTR_VOLUME || e2->attr & ATTR_VOLUME)
306 { /* a volume identifier is involved */
307 if (e1->attr & ATTR_VOLUME && e2->attr & ATTR_VOLUME)
308 criteria = 0; /* two volumes: sort alphabetically */
309 else /* only one is a volume: volume first */
310 return (e2->attr & ATTR_VOLUME) - (e1->attr & ATTR_VOLUME);
311 }
305 } 312 }
306 else if (!(e1->attr & ATTR_DIRECTORY) && !(e2->attr & ATTR_DIRECTORY)) 313 else if (!(e1->attr & ATTR_DIRECTORY) && !(e2->attr & ATTR_DIRECTORY))
307 { /* two files */ 314 { /* two files */